From 7e19a6e86814b08073b4b8873598ef5d94e6345d Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Wed, 30 Mar 2011 14:08:16 -0700 Subject: movenc: always write esds descriptor length using 4 bytes. ipod shuffle doesn't support anything else. Signed-off-by: Anton Khirnov --- libavformat/movenc.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'libavformat/movenc.c') diff --git a/libavformat/movenc.c b/libavformat/movenc.c index bdd92f23b8..52c775a565 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -238,16 +238,9 @@ static int mov_write_enda_tag(AVIOContext *pb) return 10; } -static unsigned int descrLength(unsigned int len) -{ - int i; - for(i=1; len>>(7*i); i++); - return len + 1 + i; -} - static void putDescr(AVIOContext *pb, int tag, unsigned int size) { - int i= descrLength(size) - size - 2; + int i = 3; avio_w8(pb, tag); for(; i>0; i--) avio_w8(pb, (size>>(7*i)) | 0x80); @@ -257,15 +250,14 @@ static void putDescr(AVIOContext *pb, int tag, unsigned int size) static int mov_write_esds_tag(AVIOContext *pb, MOVTrack *track) // Basic { int64_t pos = avio_tell(pb); - int decoderSpecificInfoLen = track->vosLen ? descrLength(track->vosLen):0; + int decoderSpecificInfoLen = track->vosLen ? 5+track->vosLen : 0; avio_wb32(pb, 0); // size ffio_wfourcc(pb, "esds"); avio_wb32(pb, 0); // Version // ES descriptor - putDescr(pb, 0x03, 3 + descrLength(13 + decoderSpecificInfoLen) + - descrLength(1)); + putDescr(pb, 0x03, 3 + 5+13 + decoderSpecificInfoLen + 5+1); avio_wb16(pb, track->trackID); avio_w8(pb, 0x00); // flags (= no flags) -- cgit v1.2.3