aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/mov.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-01-26 01:52:29 +0100
committerMichael Niedermayer <michaelni@gmx.at>2012-01-26 02:23:56 +0100
commit3c5fe5b52758225e58fec917cc29281d6025aa67 (patch)
treed7484edfa989ffc33744cbbf11960e803f677f2b /libavformat/mov.c
parent01e5e97026cf0b344abafca22b0336a2c58b2a33 (diff)
parentd78bb1a4b2a3a415b68e4e6dd448779eccec64e3 (diff)
downloadffmpeg-3c5fe5b52758225e58fec917cc29281d6025aa67.tar.gz
Merge remote-tracking branch 'qatar/master'
* qatar/master: (22 commits) wma: Clip WMA1 and WMA2 frame length to 11 bits. movenc: Don't require frame_size to be set for modes other than mov doc: Update APIchanges with info on muxer flushing movenc: Reindent a block tools: Remove some unnecessary #undefs. rv20: prevent calling ff_h263_decode_mba() with unset height/width tools: K&R reformatting cosmetics Ignore generated aviocat and ismindex tools. build: Automatically include architecture-specific library Makefile snippets. indeo5: prevent null pointer dereference on broken files pktdumper: Use usleep instead of sleep cosmetics: Remove some unnecessary block braces. Drop unnecessary prefix from *sink* variable and struct names. Add a tool for creating smooth streaming manifests movdec: Calculate an average bit rate for fragmented streams, too movenc: Write the sample rate instead of time scale in the stsd atom movenc: Add a separate ismv/isma (smooth streaming) muxer movenc: Allow the caller to decide on fragmentation libavformat: Add a flag for muxers that support write_packet(NULL) for flushing movenc: Add support for writing fragmented mov files ... Conflicts: Changelog cmdutils.c cmdutils.h doc/APIchanges ffmpeg.c ffplay.c libavfilter/Makefile libavformat/Makefile libavformat/avformat.h libavformat/movenc.c libavformat/movenc.h libavformat/version.h tools/graph2dot.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mov.c')
-rw-r--r--libavformat/mov.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 4faea2b543..a8c78b27c5 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1643,8 +1643,10 @@ static int mov_read_stsz(MOVContext *c, AVIOContext *pb, MOVAtom atom)
init_get_bits(&gb, buf, 8*num_bytes);
- for (i=0; i<entries; i++)
+ for (i = 0; i < entries; i++) {
sc->sample_sizes[i] = get_bits_long(&gb, field_size);
+ sc->data_size += sc->sample_sizes[i];
+ }
av_free(buf);
return 0;
@@ -2347,6 +2349,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
distance++;
dts += sample_duration;
offset += sample_size;
+ sc->data_size += sample_size;
}
frag->moof_offset = offset;
st->duration = dts + sc->time_offset;
@@ -2722,6 +2725,16 @@ static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap)
mov_read_timecode_track(s, s->streams[i]);
}
+ if (mov->trex_data) {
+ int i;
+ for (i = 0; i < s->nb_streams; i++) {
+ AVStream *st = s->streams[i];
+ MOVStreamContext *sc = st->priv_data;
+ if (st->duration)
+ st->codec->bit_rate = sc->data_size * 8 * sc->time_scale / st->duration;
+ }
+ }
+
return 0;
}