]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/qsvdec.c
d3d11va: make av_d3d11va_alloc_context() available at all times
[ffmpeg] / libavcodec / qsvdec.c
index 8c324f42c9fede9c74d3b2fb245c47b88fccf81a..ca6f78110bf8759c2c54eaa1dab9b7af81dd9963 100644 (file)
@@ -70,7 +70,7 @@ static int qsv_init_session(AVCodecContext *avctx, QSVContext *q, mfxSession ses
     return 0;
 }
 
-int ff_qsv_decode_init(AVCodecContext *avctx, QSVContext *q, mfxSession session)
+static int qsv_decode_init(AVCodecContext *avctx, QSVContext *q, mfxSession session)
 {
     mfxVideoParam param = { { 0 } };
     int ret;
@@ -309,6 +309,9 @@ int ff_qsv_decode_close(QSVContext *q)
 {
     QSVFrame *cur = q->work_frames;
 
+    if (q->session)
+        MFXVideoDECODE_Close(q->session);
+
     while (cur) {
         q->work_frames = cur->next;
         av_frame_free(&cur->frame);
@@ -341,7 +344,7 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q,
             return AVERROR(ENOMEM);
 
         if (avctx->extradata) {
-            q->avctx_internal->extradata = av_mallocz(avctx->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
+            q->avctx_internal->extradata = av_mallocz(avctx->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
             if (!q->avctx_internal->extradata)
                 return AVERROR(ENOMEM);
 
@@ -410,7 +413,7 @@ int ff_qsv_process_data(AVCodecContext *avctx, QSVContext *q,
             q->nb_ext_buffers = user_ctx->nb_ext_buffers;
         }
 
-        ret = ff_qsv_decode_init(avctx, q, session);
+        ret = qsv_decode_init(avctx, q, session);
         if (ret < 0)
             goto reinit_fail;
     }