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;
{
QSVFrame *cur = q->work_frames;
+ if (q->session)
+ MFXVideoDECODE_Close(q->session);
+
while (cur) {
q->work_frames = cur->next;
av_frame_free(&cur->frame);
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);
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;
}