From 86be66378b2ba2181e9efbc8c6d27e311f3a9263 Mon Sep 17 00:00:00 2001 From: David Conrad Date: Wed, 5 Sep 2007 00:24:06 +0000 Subject: [PATCH] Move writing Xiph-style sizes to its own function Originally committed as revision 10338 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/matroskaenc.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 5247c5350c..3ccecb110c 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -178,6 +178,14 @@ static void end_ebml_master(ByteIOContext *pb, offset_t start) url_fseek(pb, pos, SEEK_SET); } +static void put_xiph_size(ByteIOContext *pb, int size) +{ + int i; + for (i = 0; i < size / 255; i++) + put_byte(pb, 255); + put_byte(pb, size % 255); +} + // initializes a mkv_seekhead element to be ready to index level 1 matroska elements // if numelements is greater than 0, it reserves enough space for that many elements // at the current file position and writes the seekhead there, otherwise the seekhead @@ -331,7 +339,7 @@ static int put_xiph_codecpriv(ByteIOContext *pb, AVCodecContext *codec) uint8_t *header_start[3]; int header_len[3]; int first_header_size; - int j, k; + int j; if (codec->codec_id == CODEC_ID_VORBIS) first_header_size = 30; @@ -347,9 +355,7 @@ static int put_xiph_codecpriv(ByteIOContext *pb, AVCodecContext *codec) codecprivate = start_ebml_master(pb, MATROSKA_ID_CODECPRIVATE); put_byte(pb, 2); // number packets - 1 for (j = 0; j < 2; j++) { - for (k = 0; k < header_len[j] / 255; k++) - put_byte(pb, 255); - put_byte(pb, header_len[j] % 255); + put_xiph_size(pb, header_len[j]); } for (j = 0; j < 3; j++) put_buffer(pb, header_start[j], header_len[j]);