]> git.sesse.net Git - ffmpeg/commitdiff
hevc: Fix memory leak related to a53_caption data
authorWill Kelleher <wkelleher@gogoair.com>
Thu, 7 Apr 2016 13:58:31 +0000 (08:58 -0500)
committerMichael Niedermayer <michael@niedermayer.cc>
Sat, 14 May 2016 23:30:53 +0000 (01:30 +0200)
Signed-off-by: Will Kelleher <wkelleher@gogoair.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/hevc.c
libavcodec/hevc.h
libavcodec/hevc_parser.c
libavcodec/hevc_sei.c

index d1aa0b06d02e3116fd3f3c3d7111d96593729d6f..b478065db2b8da7c41adcb7a1cdfc5139377c3a1 100644 (file)
@@ -3155,6 +3155,8 @@ static av_cold int hevc_init_context(AVCodecContext *avctx)
     s->context_initialized = 1;
     s->eos = 0;
 
+    ff_hevc_reset_sei(s);
+
     return 0;
 
 fail:
index f44fa492ce57730eacb5349b0fb0014d89be0a06..be91010378545c949f6c5eb3e812625ba046968b 100644 (file)
@@ -1054,6 +1054,15 @@ void ff_hevc_hls_mvd_coding(HEVCContext *s, int x0, int y0, int log2_cb_size);
 int ff_hevc_encode_nal_vps(HEVCVPS *vps, unsigned int id,
                            uint8_t *buf, int buf_size);
 
+/**
+ * Reset SEI values that are stored on the Context.
+ * e.g. Caption data that was extracted during NAL
+ * parsing.
+ *
+ * @param s HEVCContext.
+ */
+void ff_hevc_reset_sei(HEVCContext *s);
+
 extern const uint8_t ff_hevc_qpel_extra_before[4];
 extern const uint8_t ff_hevc_qpel_extra_after[4];
 extern const uint8_t ff_hevc_qpel_extra[4];
index 1227358b9da736d1291a62ae9ea774ce834755c0..b5633f16ef19461eef96edeed87544e3d5650bef 100644 (file)
@@ -211,6 +211,8 @@ static inline int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
 
     h->avctx = avctx;
 
+    ff_hevc_reset_sei(h);
+
     if (!buf_size)
         return 0;
 
index 40685fe5d88c91419a20411d9f8fb21b6304c258..f598b6393a1e1189eeba8eb30617f3e5562588f2 100644 (file)
@@ -373,3 +373,9 @@ int ff_hevc_decode_nal_sei(HEVCContext *s)
     } while (more_rbsp_data(&s->HEVClc->gb));
     return 1;
 }
+
+void ff_hevc_reset_sei(HEVCContext *s)
+{
+    s->a53_caption_size = 0;
+    av_freep(&s->a53_caption);
+}