[FFmpeg-devel] [PATCH 2/3] avformat/ttaenc: Defer freeing dynamic buffer
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Thu May 21 06:34:30 EEST 2020
James Almer:
> On 5/20/2020 11:36 PM, Andreas Rheinhardt wrote:
>> 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.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
>> ---
>> libavformat/ttaenc.c | 4 +---
>> 1 file changed, 1 insertion(+), 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);
>
> LGTM
Applied, thanks.
- Andreas
More information about the ffmpeg-devel
mailing list