diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-10-02 06:04:10 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2019-10-03 19:34:23 +0200 |
commit | c548b0a4c67b99e8728578a68084664d8bd220ac (patch) | |
tree | cb3d2f3870ebedbb883c8cee2cd6a846d83bf3c2 /libavformat | |
parent | 93ea21f9b7cc08401218a47dcaf78798fd97c173 (diff) | |
download | ffmpeg-c548b0a4c67b99e8728578a68084664d8bd220ac.tar.gz |
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@gmail.com>
Reviewed-by: Matthieu Bouron <matthieu.bouron@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/aiffenc.c | 33 |
1 files 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; } |