Browse Source

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.

Merges Libav commit fd0fae60.

Signed-off-by: wm4 <nfxjfg@googlemail.com>
tags/n3.3
Mark Thompson wm4 9 years ago
parent
commit
fb69a8e1f1
1 changed files with 4 additions and 1 deletions
  1. +4
    -1
      libavcodec/pthread_frame.c

+ 4
- 1
libavcodec/pthread_frame.c View File

@@ -620,8 +620,11 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
av_freep(&p->avctx->slice_offset);
}

if (p->avctx)
if (p->avctx) {
av_freep(&p->avctx->internal);
av_buffer_unref(&p->avctx->hw_frames_ctx);
}

av_freep(&p->avctx);
}



Loading…
Cancel
Save