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>
This commit is contained in:
committed by
Michael Niedermayer
parent
93ea21f9b7
commit
c548b0a4c6
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user