opencl_device_derive only handles AV_HWDEVICE_TYPE_VAAPI. We need a source device for qsv.
this will fix following pipeline: ffmpeg -init_hw_device vaapi=intel:/dev/dri/renderD128 -init_hw_device opencl=ocl@intel -hwaccel qsv -c:v h264_qsv -hwaccel_output_format qsv -i $input -filter_hw_device ocl -vf 'hwmap=derive_device=opencl,format=opencl,unsharp_opencl,hwmap=derive_device=qsv:reverse=1:extra_hw_frames=32' -c:v hevc_qsv -y test.h265 --- libavutil/hwcontext_qsv.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index 35a944f8f8..af3ee32cac 100644 --- a/libavutil/hwcontext_qsv.c +++ b/libavutil/hwcontext_qsv.c @@ -1269,7 +1269,13 @@ static int qsv_device_create(AVHWDeviceContext *ctx, const char *device, impl = choose_implementation(device); - return qsv_device_derive_from_child(ctx, impl, child_device, 0); + ret = qsv_device_derive_from_child(ctx, impl, child_device, 0); + if (ret == 0) { + ctx->internal->source_device = av_buffer_ref(priv->child_device_ctx); + if (!ctx->internal->source_device) + ret = AVERROR(ENOMEM); + } + return ret; } const HWContextType ff_hwcontext_type_qsv = { -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".