|
|
|
@ -1580,8 +1580,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; |
|
|
|
@ -2258,6 +2260,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; |
|
|
|
@ -2576,6 +2579,16 @@ static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
if (pb->seekable && mov->chapter_track > 0) |
|
|
|
|
mov_read_chapters(s); |
|
|
|
|
|
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|