X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fttaenc.c;h=5f66695a9abcfbcf0ae719910b0bc97795160c9b;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=d8e1136ead1a2ed7debc33ce1f5cba0aa8a39eb0;hpb=03210fe138f3b3bd7f5272fe29aca810cf517329;p=ffmpeg diff --git a/libavformat/ttaenc.c b/libavformat/ttaenc.c index d8e1136ead1..5f66695a9ab 100644 --- a/libavformat/ttaenc.c +++ b/libavformat/ttaenc.c @@ -22,6 +22,7 @@ #include "libavutil/crc.h" #include "libavutil/intreadwrite.h" +#include "libavcodec/packet_internal.h" #include "apetag.h" #include "avformat.h" #include "avio_internal.h" @@ -29,7 +30,7 @@ typedef struct TTAMuxContext { AVIOContext *seek_table; - AVPacketList *queue, *queue_end; + PacketList *queue, *queue_end; uint32_t nb_samples; int frame_size; int last_frame; @@ -93,8 +94,8 @@ static int tta_write_packet(AVFormatContext *s, AVPacket *pkt) TTAMuxContext *tta = s->priv_data; int ret; - ret = ff_packet_list_put(&tta->queue, &tta->queue_end, pkt, - FF_PACKETLIST_FLAG_REF_PACKET); + ret = avpriv_packet_list_put(&tta->queue, &tta->queue_end, pkt, + av_packet_ref, 0); if (ret < 0) { return ret; } @@ -125,7 +126,7 @@ static void tta_queue_flush(AVFormatContext *s) AVPacket pkt; while (tta->queue) { - ff_packet_list_get(&tta->queue, &tta->queue_end, &pkt); + avpriv_packet_list_get(&tta->queue, &tta->queue_end, &pkt); avio_write(s->pb, pkt.data, pkt.size); av_packet_unref(&pkt); } @@ -145,20 +146,26 @@ static int tta_write_trailer(AVFormatContext *s) /* Write Seek table */ crc = ffio_get_checksum(tta->seek_table) ^ UINT32_MAX; avio_wl32(tta->seek_table, crc); - size = avio_close_dyn_buf(tta->seek_table, &ptr); + size = avio_get_dyn_buf(tta->seek_table, &ptr); avio_write(s->pb, ptr, size); - av_free(ptr); /* Write audio data */ tta_queue_flush(s); ff_ape_write_tag(s); - avio_flush(s->pb); return 0; } -AVOutputFormat ff_tta_muxer = { +static void tta_deinit(AVFormatContext *s) +{ + TTAMuxContext *tta = s->priv_data; + + ffio_free_dyn_buf(&tta->seek_table); + avpriv_packet_list_free(&tta->queue, &tta->queue_end); +} + +const AVOutputFormat ff_tta_muxer = { .name = "tta", .long_name = NULL_IF_CONFIG_SMALL("TTA (True Audio)"), .mime_type = "audio/x-tta", @@ -167,6 +174,7 @@ AVOutputFormat ff_tta_muxer = { .audio_codec = AV_CODEC_ID_TTA, .video_codec = AV_CODEC_ID_NONE, .init = tta_init, + .deinit = tta_deinit, .write_header = tta_write_header, .write_packet = tta_write_packet, .write_trailer = tta_write_trailer,