[FFmpeg-cvslog] avformat/dvenc: Replace write_trailer by deinit function

Andreas Rheinhardt git at videolan.org
Sun Jan 26 19:43:23 EET 2020


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Sun Jan 26 07:40:50 2020 +0100| [f1dbfcdf895e03e3d0d8b195f3525b57426b0377] | committer: Michael Niedermayer

avformat/dvenc: Replace write_trailer by deinit function

The old write_trailer only freed memory, so it is better to make a
dedicated deinit function out of it. Given that this function will also
be called when writing the header fails, one can also remove code that
frees already allocated fifos when allocating another one fails.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
Reviewed-by: Paul B Mahol <onemda at gmail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavformat/dvenc.c | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c
index a7d1413eb2..b89ad4d1c8 100644
--- a/libavformat/dvenc.c
+++ b/libavformat/dvenc.c
@@ -364,10 +364,6 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
 
     for (i=0; i < c->n_ast; i++) {
         if (c->ast[i] && !(c->audio_data[i]=av_fifo_alloc_array(100, MAX_AUDIO_FRAME_SIZE))) {
-            while (i > 0) {
-                i--;
-                av_fifo_freep(&c->audio_data[i]);
-            }
             goto bail_out;
         }
     }
@@ -378,13 +374,6 @@ bail_out:
     return NULL;
 }
 
-static void dv_delete_mux(DVMuxContext *c)
-{
-    int i;
-    for (i=0; i < c->n_ast; i++)
-        av_fifo_freep(&c->audio_data[i]);
-}
-
 static int dv_write_header(AVFormatContext *s)
 {
     AVRational rate;
@@ -432,10 +421,12 @@ static int dv_write_packet(struct AVFormatContext *s, AVPacket *pkt)
  * Currently we simply drop the last frame. I don't know whether this
  * is the best strategy of all
  */
-static int dv_write_trailer(struct AVFormatContext *s)
+static void dv_deinit(AVFormatContext *s)
 {
-    dv_delete_mux(s->priv_data);
-    return 0;
+    DVMuxContext *c = s->priv_data;
+
+    for (int i = 0; i < c->n_ast; i++)
+        av_fifo_freep(&c->audio_data[i]);
 }
 
 AVOutputFormat ff_dv_muxer = {
@@ -447,5 +438,5 @@ AVOutputFormat ff_dv_muxer = {
     .video_codec       = AV_CODEC_ID_DVVIDEO,
     .write_header      = dv_write_header,
     .write_packet      = dv_write_packet,
-    .write_trailer     = dv_write_trailer,
+    .deinit            = dv_deinit,
 };



More information about the ffmpeg-cvslog mailing list