diff options
author | Mark Thompson <sw@jkqxz.net> | 2017-02-05 14:58:06 +0000 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2017-02-05 15:13:15 +0000 |
commit | 3420b34a8a63c89d748abe8e99e7acf4c2408a81 (patch) | |
tree | 8eb32cc64f5374dbb95fd74841b0a28391b117f9 | |
parent | df3b17eba47e635a694acb18b74e389194355f45 (diff) | |
download | ffmpeg-3420b34a8a63c89d748abe8e99e7acf4c2408a81.tar.gz |
Revert "avutil/hwcontext_vaapi: fix SEGV in vaTerminate when vaInitialize fails"
The original code is correctly following the API - vaTerminate() must
be called to free the resources of a VADisplay after it is created by
any of the vaGetDisplay*() calls; it is not necessary to have
successfully called vaInitialize() on it. The segfaults which
prompted this change must therefore be bugs in libva or the driver it
loads.
This reverts commit 3606602f1137552ea54f2c259eb140c1e3c026d4.
-rw-r--r-- | libavutil/hwcontext_vaapi.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 0051acb4f6..6176bdc880 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -961,13 +961,14 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, return AVERROR(EINVAL); } + hwctx->display = display; + vas = vaInitialize(display, &major, &minor); if (vas != VA_STATUS_SUCCESS) { av_log(ctx, AV_LOG_ERROR, "Failed to initialise VAAPI " "connection: %d (%s).\n", vas, vaErrorStr(vas)); return AVERROR(EIO); } - hwctx->display = display; av_log(ctx, AV_LOG_VERBOSE, "Initialised VAAPI connection: " "version %d.%d\n", major, minor); |