diff options
author | Mark Thompson <sw@jkqxz.net> | 2019-05-06 15:41:09 +0100 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2019-06-02 23:03:27 +0100 |
commit | 0b4696fbe8dbd2ab038006fdc02cada2ef6ae3ba (patch) | |
tree | a9a83f8399a84354160a840004432e519086d9ae /libavutil/hwcontext_vaapi.c | |
parent | 7f3f5a24a1c70c6a8e72cdf387252ce0d1afee7f (diff) | |
download | ffmpeg-0b4696fbe8dbd2ab038006fdc02cada2ef6ae3ba.tar.gz |
hwcontext_vaapi: Try to create devices via DRM before X11
Opening the device via X11 (DRI2/DRI3) rather than opening a DRM render
node directly is only useful if you intend to use the legacy X11 interop
functions. That's never true for the ffmpeg utility, and a library user
who does want this will likely provide their own display instance rather
than making a new one here.
Diffstat (limited to 'libavutil/hwcontext_vaapi.c')
-rw-r--r-- | libavutil/hwcontext_vaapi.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index f05b9ee9cf..4227c3c090 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -1500,27 +1500,6 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, try_x11 = HAVE_VAAPI_X11; } -#if HAVE_VAAPI_X11 - if (!display && try_x11) { - // Try to open the device as an X11 display. - priv->x11_display = XOpenDisplay(device); - if (!priv->x11_display) { - av_log(ctx, AV_LOG_VERBOSE, "Cannot open X11 display " - "%s.\n", XDisplayName(device)); - } else { - display = vaGetDisplay(priv->x11_display); - if (!display) { - av_log(ctx, AV_LOG_ERROR, "Cannot open a VA display " - "from X11 display %s.\n", XDisplayName(device)); - return AVERROR_UNKNOWN; - } - - av_log(ctx, AV_LOG_VERBOSE, "Opened VA display via " - "X11 display %s.\n", XDisplayName(device)); - } - } -#endif - #if HAVE_VAAPI_DRM while (!display && try_drm) { // If the device is specified, try to open it as a DRM device node. @@ -1588,6 +1567,27 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, } #endif +#if HAVE_VAAPI_X11 + if (!display && try_x11) { + // Try to open the device as an X11 display. + priv->x11_display = XOpenDisplay(device); + if (!priv->x11_display) { + av_log(ctx, AV_LOG_VERBOSE, "Cannot open X11 display " + "%s.\n", XDisplayName(device)); + } else { + display = vaGetDisplay(priv->x11_display); + if (!display) { + av_log(ctx, AV_LOG_ERROR, "Cannot open a VA display " + "from X11 display %s.\n", XDisplayName(device)); + return AVERROR_UNKNOWN; + } + + av_log(ctx, AV_LOG_VERBOSE, "Opened VA display via " + "X11 display %s.\n", XDisplayName(device)); + } + } +#endif + if (!display) { if (device) av_log(ctx, AV_LOG_ERROR, "No VA display found for " |