[FFmpeg-cvslog] avformat/aiffenc: Use standard packet list functions

Andreas Rheinhardt git at videolan.org
Thu Oct 3 22:34:28 EEST 2019


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Wed Oct  2 06:04:10 2019 +0200| [c548b0a4c67b99e8728578a68084664d8bd220ac] | committer: Michael Niedermayer

avformat/aiffenc: Use standard packet list functions

Up until now, aiffenc didn't rely on the standard functions for adding
an element to a linked list and freeing the list, but instead
reimplemented them. This has been changed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
Reviewed-by: Matthieu Bouron <matthieu.bouron at gmail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavformat/aiffenc.c | 33 ++++-----------------------------
 1 file changed, 4 insertions(+), 29 deletions(-)

diff --git a/libavformat/aiffenc.c b/libavformat/aiffenc.c
index aab37418f0..dd8b8c3d01 100644
--- a/libavformat/aiffenc.c
+++ b/libavformat/aiffenc.c
@@ -36,7 +36,7 @@ typedef struct AIFFOutputContext {
     int64_t frames;
     int64_t ssnd;
     int audio_stream_idx;
-    AVPacketList *pict_list;
+    AVPacketList *pict_list, *pict_list_end;
     int write_id3v2;
     int id3v2_version;
 } AIFFOutputContext;
@@ -215,9 +215,6 @@ static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
     if (pkt->stream_index == aiff->audio_stream_idx)
         avio_write(pb, pkt->data, pkt->size);
     else {
-        int ret;
-        AVPacketList *pict_list, *last;
-
         if (s->streams[pkt->stream_index]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO)
             return 0;
 
@@ -229,24 +226,8 @@ static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
         if (s->streams[pkt->stream_index]->nb_frames >= 1)
             return 0;
 
-        pict_list = av_mallocz(sizeof(AVPacketList));
-        if (!pict_list)
-            return AVERROR(ENOMEM);
-
-        ret = av_packet_ref(&pict_list->pkt, pkt);
-        if (ret < 0) {
-            av_freep(&pict_list);
-            return ret;
-        }
-
-        if (!aiff->pict_list)
-            aiff->pict_list = pict_list;
-        else {
-            last = aiff->pict_list;
-            while (last->next)
-                last = last->next;
-            last->next = pict_list;
-        }
+        return ff_packet_list_put(&aiff->pict_list, &aiff->pict_list_end,
+                                  pkt, FF_PACKETLIST_FLAG_REF_PACKET);
     }
 
     return 0;
@@ -257,7 +238,6 @@ static int aiff_write_trailer(AVFormatContext *s)
     int ret;
     AVIOContext *pb = s->pb;
     AIFFOutputContext *aiff = s->priv_data;
-    AVPacketList *pict_list = aiff->pict_list;
     AVCodecParameters *par = s->streams[aiff->audio_stream_idx]->codecpar;
 
     /* Chunks sizes must be even */
@@ -293,12 +273,7 @@ static int aiff_write_trailer(AVFormatContext *s)
         avio_flush(pb);
     }
 
-    while (pict_list) {
-        AVPacketList *next = pict_list->next;
-        av_packet_unref(&pict_list->pkt);
-        av_freep(&pict_list);
-        pict_list = next;
-    }
+    ff_packet_list_free(&aiff->pict_list, &aiff->pict_list_end);
 
     return 0;
 }



More information about the ffmpeg-cvslog mailing list