Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Liu <liuqi05@kuaishou.com>2021-05-31 10:16:43 +0300
committerTimo Rothenpieler <timo@rothenpieler.org>2021-06-07 18:02:36 +0300
commit282b9f4cba7ca361c43ac9f94031a43109df0a4f (patch)
treefbf0230e967b29f1742e69d4a8cb87dfe9fa5809 /libavfilter/vf_overlay_cuda.c
parent8bcce5673a267ed371140bf3228ffb420ca2f69b (diff)
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@kuaishou.com> Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
Diffstat (limited to 'libavfilter/vf_overlay_cuda.c')
-rw-r--r--libavfilter/vf_overlay_cuda.c8
1 files changed, 8 insertions, 0 deletions
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,