[FFmpeg-cvslog] avfilter/overlay_cuda: add hsub and vsub compute x and y positions

Steven Liu git at videolan.org
Mon Jun 7 18:10:54 EEST 2021


ffmpeg | branch: master | Steven Liu <liuqi05 at kuaishou.com> | Mon May 31 15:16:43 2021 +0800| [282b9f4cba7ca361c43ac9f94031a43109df0a4f] | committer: Timo Rothenpieler

avfilter/overlay_cuda: add hsub and vsub compute x and y positions

fix problem when set x to odd number in nv12 by cuda

test step:
1. ffmpeg -f lavfi testsrc2=s=176x144 -pix_fmt nv12 -t 1 output_overlay.yuv
2. ffmpeg -f lavfi testsrc2=s=352x288 -pix_fmt nv12 -t 1 output_main.yuv
before this patch:
overlay_cuda=x=0:y=0 will right,
overlay_cuda=x=3:y=0 will wrong,

both will right after patch.

Signed-off-by: Steven Liu <liuqi05 at kuaishou.com>
Signed-off-by: Timo Rothenpieler <timo at rothenpieler.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=282b9f4cba7ca361c43ac9f94031a43109df0a4f
---

 libavfilter/vf_overlay_cuda.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavfilter/vf_overlay_cuda.c b/libavfilter/vf_overlay_cuda.c
index b91ac9a713..8a4d2c4312 100644
--- a/libavfilter/vf_overlay_cuda.c
+++ b/libavfilter/vf_overlay_cuda.c
@@ -145,11 +145,16 @@ static int overlay_cuda_blend(FFFrameSync *fs)
     AVFilterContext *avctx = fs->parent;
     OverlayCUDAContext *ctx = avctx->priv;
     AVFilterLink *outlink = avctx->outputs[0];
+    AVFilterLink *inlink = avctx->inputs[0];
 
     CudaFunctions *cu = ctx->hwctx->internal->cuda_dl;
     CUcontext dummy, cuda_ctx = ctx->hwctx->cuda_ctx;
 
     AVFrame *input_main, *input_overlay;
+    const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(inlink->format);
+
+    int hsub = pix_desc->log2_chroma_w;
+    int vsub = pix_desc->log2_chroma_h;
 
     ctx->cu_ctx = cuda_ctx;
 
@@ -178,6 +183,9 @@ static int overlay_cuda_blend(FFFrameSync *fs)
         return ret;
     }
 
+    ctx->x_position &= (1 << hsub) - 1;
+    ctx->y_position &= (1 << vsub) - 1;
+
     // overlay first plane
 
     overlay_cuda_call_kernel(ctx,



More information about the ffmpeg-cvslog mailing list