summaryrefslogtreecommitdiff
path: root/libavfilter/vf_hwupload_cuda.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/vf_hwupload_cuda.c')
-rw-r--r--libavfilter/vf_hwupload_cuda.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libavfilter/vf_hwupload_cuda.c b/libavfilter/vf_hwupload_cuda.c
index 4d83e6c8f2..8ee0825859 100644
--- a/libavfilter/vf_hwupload_cuda.c
+++ b/libavfilter/vf_hwupload_cuda.c
@@ -60,6 +60,9 @@ static int cudaupload_query_formats(AVFilterContext *ctx)
AV_PIX_FMT_NV12, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444P,
AV_PIX_FMT_P010, AV_PIX_FMT_P016, AV_PIX_FMT_YUV444P16,
AV_PIX_FMT_0RGB32, AV_PIX_FMT_0BGR32,
+#if CONFIG_VULKAN
+ AV_PIX_FMT_VULKAN,
+#endif
AV_PIX_FMT_NONE,
};
static const enum AVPixelFormat output_pix_fmts[] = {
@@ -97,7 +100,12 @@ static int cudaupload_config_output(AVFilterLink *outlink)
hwframe_ctx = (AVHWFramesContext*)s->hwframe->data;
hwframe_ctx->format = AV_PIX_FMT_CUDA;
- hwframe_ctx->sw_format = inlink->format;
+ if (inlink->hw_frames_ctx) {
+ AVHWFramesContext *in_hwframe_ctx = (AVHWFramesContext*)inlink->hw_frames_ctx->data;
+ hwframe_ctx->sw_format = in_hwframe_ctx->sw_format;
+ } else {
+ hwframe_ctx->sw_format = inlink->format;
+ }
hwframe_ctx->width = inlink->w;
hwframe_ctx->height = inlink->h;