X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fqsvdec.c;h=ca6f78110bf8759c2c54eaa1dab9b7af81dd9963;hb=bb198c4997d5036f3bf91de51e44f807115677d0;hp=8c324f42c9fede9c74d3b2fb245c47b88fccf81a;hpb=41d47ea85fb4ad9cfb5c2dc808a46bc1d57f3986;p=ffmpeg diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 8c324f42c9f..ca6f78110bf 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -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; }