summaryrefslogtreecommitdiff
path: root/libavcodec/pthread_frame.c
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2016-11-03 00:13:35 +0000
committerMark Thompson <sw@jkqxz.net>2016-11-10 20:36:11 +0000
commitfd0fae60372cddbe0bec8830d07e760195f80bad (patch)
treeefa45930f135da8c940b5e2cd561db0f50375d6b /libavcodec/pthread_frame.c
parent11623217e3c9b859daee544e31acdd0821b61039 (diff)
downloadffmpeg-fd0fae60372cddbe0bec8830d07e760195f80bad.tar.gz
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.
Diffstat (limited to 'libavcodec/pthread_frame.c')
-rw-r--r--libavcodec/pthread_frame.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index 671c551f29..2736a81efe 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -571,6 +571,8 @@ void ff_frame_thread_free(AVCodecContext *avctx, int thread_count)
av_freep(&p->avctx->slice_offset);
}
+ av_buffer_unref(&p->avctx->hw_frames_ctx);
+
av_freep(&p->avctx->internal);
av_freep(&p->avctx);
}