pthread_frame: Unreference hw_frames_ctx on per-thread codec contexts

When decoding with threads enabled, the get_format callback will be
called with one of the per-thread codec contexts rather than with the
outer context.  If a hwaccel is in use too, this will add a reference
to the hardware frames context on that codec context, which will then
propagate to all of the other per-thread contexts for decoding.  Once
the decoder finishes, however, the per-thread contexts are not freed
normally, so these references leak.
This commit is contained in:
Mark Thompson 2016-11-03 00:13:35 +00:00
parent 11623217e3
commit fd0fae6037
1 changed files with 2 additions and 0 deletions

View File

@ -571,6 +571,8 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
av_freep(&p->avctx->slice_offset); av_freep(&p->avctx->slice_offset);
} }
av_buffer_unref(&p->avctx->hw_frames_ctx);
av_freep(&p->avctx->internal); av_freep(&p->avctx->internal);
av_freep(&p->avctx); av_freep(&p->avctx);
} }