[FFmpeg-devel] [PATCH 1/3] avformat/aiffenc: Use standard packet list functions
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Wed Oct 2 07:04:10 EEST 2019
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>
---
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;
}
--
2.21.0
More information about the ffmpeg-devel
mailing list