ffmpeg | branch: master | James Almer <jamr...@gmail.com> | Thu Mar 28 22:36:25 
2019 -0300| [27c94c57dc84da8125225fda7d241be57d19b391] | committer: James Almer

avformat/movenc: free eac3 private data only when closing the stream

This makes sure the data is available when writing the moov atom during the
second pass triggered by the faststart movflag.

Fixes ticket #7780

Signed-off-by: James Almer <jamr...@gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=27c94c57dc84da8125225fda7d241be57d19b391
---

 libavformat/movenc.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 8969d5b170..26cb2e6ea1 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -552,8 +552,7 @@ static int mov_write_eac3_tag(AVIOContext *pb, MOVTrack 
*track)
     size = 2 + ((34 * (info->num_ind_sub + 1) + 7) >> 3);
     buf = av_malloc(size);
     if (!buf) {
-        size = AVERROR(ENOMEM);
-        goto end;
+        return AVERROR(ENOMEM);
     }
 
     init_put_bits(&pbc, buf, size);
@@ -584,10 +583,6 @@ static int mov_write_eac3_tag(AVIOContext *pb, MOVTrack 
*track)
 
     av_free(buf);
 
-end:
-    av_packet_unref(&info->pkt);
-    av_freep(&track->eac3_priv);
-
     return size;
 }
 
@@ -5973,6 +5968,11 @@ static void mov_free(AVFormatContext *s)
         av_freep(&mov->tracks[i].frag_info);
         av_packet_unref(&mov->tracks[i].cover_image);
 
+        if (mov->tracks[i].eac3_priv) {
+            struct eac3_info *info = mov->tracks[i].eac3_priv;
+            av_packet_unref(&info->pkt);
+            av_freep(&mov->tracks[i].eac3_priv);
+        }
         if (mov->tracks[i].vos_len)
             av_freep(&mov->tracks[i].vos_data);
 

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to