[FFmpeg-devel] [PATCH] lavc/qsvdec: respect AVCodecContext->{width, height}

Xiang, Haihao haihao.xiang at intel.com
Thu Jun 8 08:47:56 EEST 2023


From: Haihao Xiang <haihao.xiang at intel.com>

width and height may be known from the container

Signed-off-by: Haihao Xiang <haihao.xiang at intel.com>
---
 libavcodec/qsvdec.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c
index da700f25e9..5325030ea1 100644
--- a/libavcodec/qsvdec.c
+++ b/libavcodec/qsvdec.c
@@ -910,6 +910,7 @@ static int qsv_process_data(AVCodecContext *avctx, QSVContext *q,
     }
 
     if (q->reinit_flag || !q->session || !q->initialized) {
+        int reset_crop = !q->session;
         mfxFrameAllocRequest request;
         memset(&request, 0, sizeof(request));
 
@@ -929,6 +930,11 @@ static int qsv_process_data(AVCodecContext *avctx, QSVContext *q,
         avctx->coded_width  = param.mfx.FrameInfo.Width;
         avctx->coded_height = param.mfx.FrameInfo.Height;
 
+        if (reset_crop && avctx->width && avctx->height) {
+            param.mfx.FrameInfo.CropW = avctx->width;
+            param.mfx.FrameInfo.CropH = avctx->height;
+        }
+
         ret = MFXVideoDECODE_QueryIOSurf(q->session, &param, &request);
         if (ret < 0)
             return ff_qsv_print_error(avctx, ret, "Error querying IO surface");
-- 
2.34.1



More information about the ffmpeg-devel mailing list