@@ -37,7 +37,7 @@ typedef struct AIFFOutputContext {
int64_t frames;
int64_t ssnd;
int audio_stream_idx;
- PacketListEntry *pict_list, *pict_list_end;
+ AVPacketList *pict_list;
int write_id3v2;
int id3v2_version;
} AIFFOutputContext;
@@ -47,10 +47,10 @@ static int put_id3v2_tags(AVFormatContext *s, AIFFOutputContext *aiff)
int ret;
uint64_t pos, end, size;
ID3v2EncContext id3v2 = { 0 };
+ AVPacket pkt;
AVIOContext *pb = s->pb;
- PacketListEntry *pict_list = aiff->pict_list;
- if (!s->metadata && !s->nb_chapters && !aiff->pict_list)
+ if (!s->metadata && !s->nb_chapters && av_packet_list_peek(aiff->pict_list, NULL, 0))
return 0;
avio_wl32(pb, MKTAG('I', 'D', '3', ' '));
@@ -59,10 +59,11 @@ static int put_id3v2_tags(AVFormatContext *s, AIFFOutputContext *aiff)
ff_id3v2_start(&id3v2, pb, aiff->id3v2_version, ID3v2_DEFAULT_MAGIC);
ff_id3v2_write_metadata(s, &id3v2);
- while (pict_list) {
- if ((ret = ff_id3v2_write_apic(s, &id3v2, &pict_list->pkt)) < 0)
+ while (!av_packet_list_get(aiff->pict_list, &pkt, 0)) {
+ ret = ff_id3v2_write_apic(s, &id3v2, &pkt);
+ av_packet_unref(&pkt);
+ if (ret < 0)
return ret;
- pict_list = pict_list->next;
}
ff_id3v2_finish(&id3v2, pb, s->metadata_header_padding);
@@ -119,6 +120,10 @@ static int aiff_write_header(AVFormatContext *s)
return AVERROR(EINVAL);
}
+ aiff->pict_list = av_packet_list_alloc();
+ if (!aiff->pict_list)
+ return AVERROR(ENOMEM);
+
par = s->streams[aiff->audio_stream_idx]->codecpar;
/* First verify if format is ok */
@@ -221,8 +226,7 @@ static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
if (s->streams[pkt->stream_index]->nb_frames >= 1)
return 0;
- return avpriv_packet_list_put(&aiff->pict_list, &aiff->pict_list_end,
- pkt, av_packet_ref, 0);
+ return av_packet_list_put(aiff->pict_list, pkt, av_packet_ref, 0);
}
return 0;
@@ -273,7 +277,7 @@ static void aiff_deinit(AVFormatContext *s)
{
AIFFOutputContext *aiff = s->priv_data;
- avpriv_packet_list_free(&aiff->pict_list, &aiff->pict_list_end);
+ av_packet_list_free(&aiff->pict_list);
}
#define OFFSET(x) offsetof(AIFFOutputContext, x)
Signed-off-by: James Almer <jamrial@gmail.com> --- libavformat/aiffenc.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)