History

mov: Handle tfdt atoms

Martin Storsjö committed 12 years ago

Commit a74f8121 parent c2c22c71 file · +31 −0Browse files

Unified · Split

libavformat/mov.c+31−0
@@ -2618,6 +2618,36 @@ static int mov_read_trex(MOVContext *c, AVIOContext *pb, MOVAtom atom) · 2617 unmodified lines
2618 return 0;2618 return 0;
2619}2619}
2620 2620
2621static int mov_read_tfdt(MOVContext *c, AVIOContext *pb, MOVAtom atom)
2622{
2623 MOVFragment *frag = &c->fragment;
2624 AVStream *st = NULL;
2625 MOVStreamContext *sc;
2626 int version, i;
2627
2628 for (i = 0; i < c->fc->nb_streams; i++) {
2629 if (c->fc->streams[i]->id == frag->track_id) {
2630 st = c->fc->streams[i];
2631 break;
2632 }
2633 }
2634 if (!st) {
2635 av_log(c->fc, AV_LOG_ERROR, "could not find corresponding track id %d\n", frag->track_id);
2636 return AVERROR_INVALIDDATA;
2637 }
2638 sc = st->priv_data;
2639 if (sc->pseudo_stream_id + 1 != frag->stsd_id)
2640 return 0;
2641 version = avio_r8(pb);
2642 avio_rb24(pb); /* flags */
2643 if (version) {
2644 sc->track_end = avio_rb64(pb);
2645 } else {
2646 sc->track_end = avio_rb32(pb);
2647 }
2648 return 0;
2649}
2650
2621static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)2651static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
2622{2652{
2623 MOVFragment *frag = &c->fragment;2653 MOVFragment *frag = &c->fragment;
@@ -2870,6 +2900,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { · 246 unmodified lines
2870{ MKTAG('s','t','t','s'), mov_read_stts },2900{ MKTAG('s','t','t','s'), mov_read_stts },
2871{ MKTAG('s','t','z','2'), mov_read_stsz }, /* compact sample size */2901{ MKTAG('s','t','z','2'), mov_read_stsz }, /* compact sample size */
2872{ MKTAG('t','k','h','d'), mov_read_tkhd }, /* track header */2902{ MKTAG('t','k','h','d'), mov_read_tkhd }, /* track header */
2903{ MKTAG('t','f','d','t'), mov_read_tfdt },
2873{ MKTAG('t','f','h','d'), mov_read_tfhd }, /* track fragment header */2904{ MKTAG('t','f','h','d'), mov_read_tfhd }, /* track fragment header */
2874{ MKTAG('t','r','a','k'), mov_read_trak },2905{ MKTAG('t','r','a','k'), mov_read_trak },
2875{ MKTAG('t','r','a','f'), mov_read_default },2906{ MKTAG('t','r','a','f'), mov_read_default },

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t