From: Timo Rothenpieler Date: Wed, 4 Nov 2020 19:00:35 +0000 (+0100) Subject: avfilter/scale_cuda: simplify linesize calculation X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=09e49ba31ec7b5911884e275328df6d6514eb6eb;p=ffmpeg avfilter/scale_cuda: simplify linesize calculation --- diff --git a/libavfilter/vf_scale_cuda.c b/libavfilter/vf_scale_cuda.c index fb585e5edc5..4de5cc29e88 100644 --- a/libavfilter/vf_scale_cuda.c +++ b/libavfilter/vf_scale_cuda.c @@ -406,6 +406,8 @@ static int call_resize_kernel(AVFilterContext *ctx, CUfunction func, int channel &src_width, &src_height, &bit_depth, &s->param }; int ret; + dst_pitch /= channels; + CUDA_TEXTURE_DESC tex_desc = { .filterMode = s->interp_use_linear ? CU_TR_FILTER_MODE_LINEAR : @@ -421,7 +423,7 @@ static int call_resize_kernel(AVFilterContext *ctx, CUfunction func, int channel .res.pitch2D.numChannels = channels, .res.pitch2D.width = src_width, .res.pitch2D.height = src_height, - .res.pitch2D.pitchInBytes = src_pitch * pixel_size, + .res.pitch2D.pitchInBytes = src_pitch, .res.pitch2D.devPtr = (CUdeviceptr)src_dptr, }; @@ -477,16 +479,16 @@ static int scalecuda_resize(AVFilterContext *ctx, break; case AV_PIX_FMT_YUV444P16: call_resize_kernel(ctx, s->cu_func_ushort, 1, - in->data[0], in->width, in->height, in->linesize[0] / 2, - out->data[0], out->width, out->height, out->linesize[0] / 2, + in->data[0], in->width, in->height, in->linesize[0], + out->data[0], out->width, out->height, out->linesize[0], 2, 16); call_resize_kernel(ctx, s->cu_func_ushort, 1, - in->data[1], in->width, in->height, in->linesize[1] / 2, - out->data[1], out->width, out->height, out->linesize[1] / 2, + in->data[1], in->width, in->height, in->linesize[1], + out->data[1], out->width, out->height, out->linesize[1], 2, 16); call_resize_kernel(ctx, s->cu_func_ushort, 1, - in->data[2], in->width, in->height, in->linesize[2] / 2, - out->data[2], out->width, out->height, out->linesize[2] / 2, + in->data[2], in->width, in->height, in->linesize[2], + out->data[2], out->width, out->height, out->linesize[2], 2, 16); break; case AV_PIX_FMT_NV12: @@ -496,34 +498,34 @@ static int scalecuda_resize(AVFilterContext *ctx, 1, 8); call_resize_kernel(ctx, s->cu_func_uchar2, 2, in->data[1], in->width / 2, in->height / 2, in->linesize[1], - out->data[1], out->width / 2, out->height / 2, out->linesize[1] / 2, + out->data[1], out->width / 2, out->height / 2, out->linesize[1], 1, 8); break; case AV_PIX_FMT_P010LE: call_resize_kernel(ctx, s->cu_func_ushort, 1, - in->data[0], in->width, in->height, in->linesize[0] / 2, - out->data[0], out->width, out->height, out->linesize[0] / 2, + in->data[0], in->width, in->height, in->linesize[0], + out->data[0], out->width, out->height, out->linesize[0], 2, 10); call_resize_kernel(ctx, s->cu_func_ushort2, 2, - in->data[1], in->width / 2, in->height / 2, in->linesize[1] / 2, - out->data[1], out->width / 2, out->height / 2, out->linesize[1] / 4, + in->data[1], in->width / 2, in->height / 2, in->linesize[1], + out->data[1], out->width / 2, out->height / 2, out->linesize[1], 2, 10); break; case AV_PIX_FMT_P016LE: call_resize_kernel(ctx, s->cu_func_ushort, 1, - in->data[0], in->width, in->height, in->linesize[0] / 2, - out->data[0], out->width, out->height, out->linesize[0] / 2, + in->data[0], in->width, in->height, in->linesize[0], + out->data[0], out->width, out->height, out->linesize[0], 2, 16); call_resize_kernel(ctx, s->cu_func_ushort2, 2, - in->data[1], in->width / 2, in->height / 2, in->linesize[1] / 2, - out->data[1], out->width / 2, out->height / 2, out->linesize[1] / 4, + in->data[1], in->width / 2, in->height / 2, in->linesize[1], + out->data[1], out->width / 2, out->height / 2, out->linesize[1], 2, 16); break; case AV_PIX_FMT_0RGB32: case AV_PIX_FMT_0BGR32: call_resize_kernel(ctx, s->cu_func_uchar4, 4, in->data[0], in->width, in->height, in->linesize[0], - out->data[0], out->width, out->height, out->linesize[0] / 4, + out->data[0], out->width, out->height, out->linesize[0], 1, 8); break; default: