summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-20 21:52:09 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-21 05:30:26 +0200
commitdbacecd347599aa421be94ad5e16521aa51f7014 (patch)
treeda8c6973f3437e92d55dae697368277222c51b88 /libavformat
parent9f6b738896196ffb911f75719d00b63ebc7ea217 (diff)
avformat/ttaenc: Defer freeing dynamic buffer
The TTA muxer writes a seektable in a dynamic buffer as it receives packets and when writing the trailer, closes the dynamic buffer using avio_close_dyn_buf(), writes the seektable and frees the buffer. But the TTA muxer already has a deinit function which unconditionally calls ffio_free_dyn_buf() on the dynamic buffer, so switching to avio_get_dyn_buf() means that one can remove the code to free the buffer; furthermore, it also might save an allocation if the seektable is so small that it fits into the dynamic buffer's write buffer or if adding the padding that avio_close_dyn_buf() adds necessitated reallocating of the underlying buffer. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/ttaenc.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/libavformat/ttaenc.c b/libavformat/ttaenc.c
index 4860aab4c1..becd3e7153 100644
--- a/libavformat/ttaenc.c
+++ b/libavformat/ttaenc.c
@@ -145,10 +145,8 @@ 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);
- tta->seek_table = NULL;
- av_free(ptr);
/* Write audio data */
tta_queue_flush(s);