Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-04-28 05:54:05 +0300
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-03 14:43:54 +0300
commit6397b4d6a241692a1c7bb611a3fd42b0de2d32b5 (patch)
tree1a9f9efdbb428d1727d0b917e36ad9eb587d4d94 /libavformat/oggenc.c
parent704d7c9f4616d71db1a1baa0a1726c77a9957521 (diff)
avformat/vorbiscomment: Switch to AVIOContext from bytestream API
Up until now ff_vorbiscomment_write() used the bytestream API to write VorbisComments. Therefore the caller had to provide a sufficiently large buffer to write the output. Yet two of the three callers (namely the FLAC and the Matroska muxer) actually want the output to be written via an AVIOContext; therefore they allocated buffers of the right size just for this purpose (i.e. they get freed immediately afterwards). Only the Ogg muxer actually wants a buffer. But given that it is easy to wrap a buffer into an AVIOContext this commit changes ff_vorbiscomment_write() to use an AVIOContext for its output. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/oggenc.c')
-rw-r--r--libavformat/oggenc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c
index cc9a899a4c..3aff3c7a08 100644
--- a/libavformat/oggenc.c
+++ b/libavformat/oggenc.c
@@ -294,8 +294,9 @@ static uint8_t *ogg_write_vorbiscomment(int64_t offset, int bitexact,
AVChapter **chapters, unsigned int nb_chapters)
{
const char *vendor = bitexact ? "ffmpeg" : LIBAVFORMAT_IDENT;
+ AVIOContext pb;
int64_t size;
- uint8_t *p, *p0;
+ uint8_t *p;
ff_metadata_conv(m, ff_vorbiscomment_metadata_conv, NULL);
@@ -305,15 +306,14 @@ static uint8_t *ogg_write_vorbiscomment(int64_t offset, int bitexact,
p = av_mallocz(size);
if (!p)
return NULL;
- p0 = p;
- p += offset;
- ff_vorbiscomment_write(&p, *m, vendor, chapters, nb_chapters);
+ ffio_init_context(&pb, p + offset, size - offset, 1, NULL, NULL, NULL, NULL);
+ ff_vorbiscomment_write(&pb, *m, vendor, chapters, nb_chapters);
if (framing_bit)
- bytestream_put_byte(&p, 1);
+ avio_w8(&pb, 1);
*header_len = size;
- return p0;
+ return p;
}
static int ogg_build_flac_headers(AVCodecParameters *par,