lavc: set avctx->hwaccel before init
authorwm4 <nfxjfg@googlemail.com>
Tue, 6 Jun 2017 16:51:08 +0000 (18:51 +0200)
committerDiego Biurrun <diego@biurrun.de>
Thu, 8 Jun 2017 18:55:45 +0000 (20:55 +0200)
So a hwaccel can access avctx->hwaccel in init for whatever reason. This
is for the new d3d hwaccel API. We could create separate entrypoints for
each of the 3 hwaccel types (dxva2, d3d11va, new d3d11va), but this
seems nicer.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
libavcodec/decode.c

index bb58dfc..ae2c715 100644 (file)
@@ -746,16 +746,16 @@ static int setup_hwaccel(AVCodecContext *avctx,
             return AVERROR(ENOMEM);
     }
 
+    avctx->hwaccel = hwa;
     if (hwa->init) {
         ret = hwa->init(avctx);
         if (ret < 0) {
             av_freep(&avctx->internal->hwaccel_priv_data);
+            avctx->hwaccel = NULL;
             return ret;
         }
     }
 
-    avctx->hwaccel = hwa;
-
     return 0;
 }