avutil/hwcontext_vulkan: cuda doesn't belong to valid_sw_formats

Move it to transfer_get_formats.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
Zhao Zhili 2023-10-27 23:37:00 +08:00
parent 891f70c6d5
commit 63078b4599
1 changed files with 13 additions and 12 deletions

View File

@ -1664,11 +1664,6 @@ static int vulkan_frames_get_constraints(AVHWDeviceContext *ctx,
NULL, NULL, NULL, NULL, 0, 0) >= 0; NULL, NULL, NULL, NULL, 0, 0) >= 0;
} }
#if CONFIG_CUDA
if (p->dev_is_nvidia)
count++;
#endif
constraints->valid_sw_formats = av_malloc_array(count + 1, constraints->valid_sw_formats = av_malloc_array(count + 1,
sizeof(enum AVPixelFormat)); sizeof(enum AVPixelFormat));
if (!constraints->valid_sw_formats) if (!constraints->valid_sw_formats)
@ -1684,10 +1679,6 @@ static int vulkan_frames_get_constraints(AVHWDeviceContext *ctx,
} }
} }
#if CONFIG_CUDA
if (p->dev_is_nvidia)
constraints->valid_sw_formats[count++] = AV_PIX_FMT_CUDA;
#endif
constraints->valid_sw_formats[count++] = AV_PIX_FMT_NONE; constraints->valid_sw_formats[count++] = AV_PIX_FMT_NONE;
constraints->min_width = 1; constraints->min_width = 1;
@ -2416,12 +2407,22 @@ static int vulkan_transfer_get_formats(AVHWFramesContext *hwfc,
enum AVHWFrameTransferDirection dir, enum AVHWFrameTransferDirection dir,
enum AVPixelFormat **formats) enum AVPixelFormat **formats)
{ {
enum AVPixelFormat *fmts = av_malloc_array(2, sizeof(*fmts)); enum AVPixelFormat *fmts;
int n = 2;
#if CONFIG_CUDA
n++;
#endif
fmts = av_malloc_array(n, sizeof(*fmts));
if (!fmts) if (!fmts)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
fmts[0] = hwfc->sw_format; n = 0;
fmts[1] = AV_PIX_FMT_NONE; fmts[n++] = hwfc->sw_format;
#if CONFIG_CUDA
fmts[n++] = AV_PIX_FMT_CUDA;
#endif
fmts[n++] = AV_PIX_FMT_NONE;
*formats = fmts; *formats = fmts;
return 0; return 0;