[FFmpeg-devel] [PATCH] avutils/hwcontext_qsv: set the source device in qsv_device_create

Soft Works softworkz at hotmail.com
Mon Feb 22 11:16:51 EET 2021



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of Xu
> Guangxin
> Sent: Monday, February 22, 2021 9:45 AM
> To: ffmpeg-devel at ffmpeg.org
> Cc: Xu Guangxin <guangxin.xu at intel.com>
> Subject: [FFmpeg-devel] [PATCH] avutils/hwcontext_qsv: set the source
> device in qsv_device_create
> 
> 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 at 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=der
> ive_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;
>  }

That's funny, I made almost the same change only two days ago:

    impl = choose_implementation(device);
    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);

    return ret;


From my POV, this change is correct and required.

softworkz


More information about the ffmpeg-devel mailing list