YUYV转码并放大
avPacket->data = ImageFrame;avPacket->size = FrameSize;
avcodec_send_packet(ctx, avPacket);
ret = avcodec_receive_frame(ctx, pFrameYUV);
ret = sws_scale(swscontex,(const uint8_t *const *) pFrameYUV->data,pFrameYUV->linesize,0,camera_height, pFrame->data,pFrame->linesize);调用上面的代码解码并转码放大,通过surefaceview显示,当surfaceview是640x480或者1600x1200都可以正常显示,但是其它分辨率比如手机屏幕的分辨率,就会出现很有规律的条纹,完全看不到图像,是怎么回事 479 ost->sws_ctx = sws_getContext(c->width, c->height,
480 AV_PIX_FMT_YUV420P,
481 c->width, c->height,
482 c->pix_fmt,
483 SCALE_FLAGS, NULL, NULL, NULL);
484 if (!ost->sws_ctx) {
485 fprintf(stderr,
486 "Could not initialize the conversion context\n");
487 exit(1);
488 }
489 }
490 fill_yuv_image(ost->tmp_frame, ost->next_pts, c->width, c->height);
491 sws_scale(ost->sws_ctx, (const uint8_t * const *) ost->tmp_frame->data,
492 ost->tmp_frame->linesize, 0, c->height, ost->frame->data,
493 ost->frame->linesize); 或者用滤镜 zoompan实现放大
页:
[1]