> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf > Of Mark Thompson > Sent: Monday, May 6, 2019 10:49 PM > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH 7/7] hwcontext_qsv: Try to select a > matching VAAPI device by default > > Tries to find a device backed by the i915 kernel driver and loads the iHD > VAAPI driver to use with it. This reduces confusion on machines with > multiple DRM devices and removes the surprising requirement to set the > LIBVA_DRIVER_NAME environment variable to use libmfx at all. > --- > libavutil/hwcontext_qsv.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/libavutil/hwcontext_qsv.c b/libavutil/hwcontext_qsv.c index > 49b5952cef..59e4ed9157 100644 > --- a/libavutil/hwcontext_qsv.c > +++ b/libavutil/hwcontext_qsv.c > @@ -1206,6 +1206,7 @@ static int qsv_device_create(AVHWDeviceContext > *ctx, const char *device, > QSVDevicePriv *priv; > enum AVHWDeviceType child_device_type; > AVHWDeviceContext *child_device; > + AVDictionary *child_device_opts; > AVDictionaryEntry *e; > > mfxIMPL impl; > @@ -1220,9 +1221,17 @@ static int > qsv_device_create(AVHWDeviceContext *ctx, const char *device, > > e = av_dict_get(opts, "child_device", NULL, 0); > > - if (CONFIG_VAAPI) > + child_device_opts = NULL; > + if (CONFIG_VAAPI) { > child_device_type = AV_HWDEVICE_TYPE_VAAPI; > - else if (CONFIG_DXVA2) > + // libmfx does not actually implement VAAPI properly, rather it > + // depends on the specific behaviour of a matching iHD driver > when > + // used on recent Intel hardware. Set options to the VAAPI > device > + // creation so that we should pick a usable setup by default if > + // possible, even when multiple devices and drivers are available. > + av_dict_set(&child_device_opts, "kernel_driver", "i915", 0); > + av_dict_set(&child_device_opts, "driver", "iHD", 0); > + } else if (CONFIG_DXVA2) > child_device_type = AV_HWDEVICE_TYPE_DXVA2; > else { > av_log(ctx, AV_LOG_ERROR, "No supported child device type is > enabled\n"); @@ -1230,7 +1239,7 @@ static int > qsv_device_create(AVHWDeviceContext *ctx, const char *device, > } > > ret = av_hwdevice_ctx_create(&priv->child_device_ctx, > child_device_type, > - e ? e->value : NULL, NULL, 0); > + e ? e->value : NULL, > + child_device_opts, 0); > if (ret < 0) > return ret; > > -- > 2.20.1
LGTM and tested. Thanks! _______________________________________________ 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".