[FFmpeg-devel] [PATCH V2] libavfilter/qsvvpp: change the output frame's width and height

wenbin.chen at intel.com wenbin.chen at intel.com
Tue Mar 23 10:38:13 EET 2021


From: "Chen,Wenbin" <wenbin.chen at intel.com>

qsvvpp align the width and height with 16, and that may lead to error.
For example, when we use qsvvpp to resize frame to 1080p, qsvvpp will
align frame to 1088 which is different from the height of
encoder (1080) and this will be treated as resolution change. Now I
assign the out_link's w/h to output
frame to overwrite the w/h got from hw_frame_ctx.

Signed-off-by: Wenbin Chen <wenbin.chen at intel.com>
---
 libavfilter/qsvvpp.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libavfilter/qsvvpp.c b/libavfilter/qsvvpp.c
index f216b3f248..70d6cb49e3 100644
--- a/libavfilter/qsvvpp.c
+++ b/libavfilter/qsvvpp.c
@@ -486,9 +486,6 @@ static QSVFrame *query_frame(QSVVPPContext *s, AVFilterLink *outlink)
         if (!out_frame->frame)
             return NULL;
 
-        out_frame->frame->width  = outlink->w;
-        out_frame->frame->height = outlink->h;
-
         ret = map_frame_to_surface(out_frame->frame,
                                   &out_frame->surface_internal);
         if (ret < 0)
@@ -497,6 +494,8 @@ static QSVFrame *query_frame(QSVVPPContext *s, AVFilterLink *outlink)
         out_frame->surface = &out_frame->surface_internal;
     }
 
+    out_frame->frame->width  = outlink->w;
+    out_frame->frame->height = outlink->h;
     out_frame->surface->Info = s->vpp_param.vpp.Out;
 
     return out_frame;
-- 
2.25.1



More information about the ffmpeg-devel mailing list