mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
Merge commit 'a74f8121d88e0bdf0d69c22e4b3713032da9300a'
* commit 'a74f8121d88e0bdf0d69c22e4b3713032da9300a': mov: Handle tfdt atoms Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
5552594a44
@ -2918,6 +2918,36 @@ static int mov_read_trex(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mov_read_tfdt(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
{
|
||||
MOVFragment *frag = &c->fragment;
|
||||
AVStream *st = NULL;
|
||||
MOVStreamContext *sc;
|
||||
int version, i;
|
||||
|
||||
for (i = 0; i < c->fc->nb_streams; i++) {
|
||||
if (c->fc->streams[i]->id == frag->track_id) {
|
||||
st = c->fc->streams[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!st) {
|
||||
av_log(c->fc, AV_LOG_ERROR, "could not find corresponding track id %d\n", frag->track_id);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
sc = st->priv_data;
|
||||
if (sc->pseudo_stream_id + 1 != frag->stsd_id)
|
||||
return 0;
|
||||
version = avio_r8(pb);
|
||||
avio_rb24(pb); /* flags */
|
||||
if (version) {
|
||||
sc->track_end = avio_rb64(pb);
|
||||
} else {
|
||||
sc->track_end = avio_rb32(pb);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
{
|
||||
MOVFragment *frag = &c->fragment;
|
||||
@ -3285,6 +3315,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = {
|
||||
{ MKTAG('s','t','t','s'), mov_read_stts },
|
||||
{ MKTAG('s','t','z','2'), mov_read_stsz }, /* compact sample size */
|
||||
{ MKTAG('t','k','h','d'), mov_read_tkhd }, /* track header */
|
||||
{ MKTAG('t','f','d','t'), mov_read_tfdt },
|
||||
{ MKTAG('t','f','h','d'), mov_read_tfhd }, /* track fragment header */
|
||||
{ MKTAG('t','r','a','k'), mov_read_trak },
|
||||
{ MKTAG('t','r','a','f'), mov_read_default },
|
||||
|
Loading…
Reference in New Issue
Block a user