summaryrefslogtreecommitdiff
path: root/libavcodec/h264.c
diff options
context:
space:
mode:
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-04-10 07:01:55 +0000
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>2009-04-10 07:01:55 +0000
commit15861962a7a9e64fbe75f5cc0dc7d1c032db8dd5 (patch)
treec2a8fb920ce91b8e7d0a64def8c7b947e88c47ac /libavcodec/h264.c
parentc81185a18333b28439476fdc00979225158c8755 (diff)
downloadffmpeg-15861962a7a9e64fbe75f5cc0dc7d1c032db8dd5.tar.gz
Add a ff_h264_free_context function and call it from the H.264 parser.
This ensures that the parser will no longer leak memory for all SPS/PPS it encounters. Originally committed as revision 18406 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r--libavcodec/h264.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 1b5aeb2ceb..3eb1386a24 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -8083,10 +8083,8 @@ int main(void){
#endif /* TEST */
-static av_cold int decode_end(AVCodecContext *avctx)
+av_cold ff_h264_free_context(H264Context *h)
{
- H264Context *h = avctx->priv_data;
- MpegEncContext *s = &h->s;
int i;
av_freep(&h->rbsp_buffer[0]);
@@ -8098,6 +8096,14 @@ static av_cold int decode_end(AVCodecContext *avctx)
for(i = 0; i < MAX_PPS_COUNT; i++)
av_freep(h->pps_buffers + i);
+}
+
+static av_cold int decode_end(AVCodecContext *avctx)
+{
+ H264Context *h = avctx->priv_data;
+ MpegEncContext *s = &h->s;
+
+ ff_h264_free_context(h);
MPV_common_end(s);