qtdemux: handle default-base-is-moof flag

Handle the flag from the tfhd that signals the base offset to
start from the moof atom

https://bugzilla.gnome.org/show_bug.cgi?id=752603
This commit is contained in:
Thiago Santos 2015-07-26 02:09:24 -03:00
parent cd57697a2c
commit bb336840c0
3 changed files with 7 additions and 2 deletions

View file

@ -612,7 +612,8 @@ enum TfFlags
TF_DEFAULT_SAMPLE_DURATION = 0x08, /* default-sample-duration-present */ TF_DEFAULT_SAMPLE_DURATION = 0x08, /* default-sample-duration-present */
TF_DEFAULT_SAMPLE_SIZE = 0x010, /* default-sample-size-present */ TF_DEFAULT_SAMPLE_SIZE = 0x010, /* default-sample-size-present */
TF_DEFAULT_SAMPLE_FLAGS = 0x020, /* default-sample-flags-present */ TF_DEFAULT_SAMPLE_FLAGS = 0x020, /* default-sample-flags-present */
TF_DURATION_IS_EMPTY = 0x010000 /* sample-composition-time-offsets-presents */ TF_DURATION_IS_EMPTY = 0x010000, /* sample-composition-time-offsets-presents */
TF_DEFAULT_BASE_IS_MOOF = 0x020000 /* default-base-is-moof */
}; };
typedef struct _AtomTRAK typedef struct _AtomTRAK

View file

@ -2879,6 +2879,9 @@ qtdemux_parse_tfhd (GstQTDemux * qtdemux, GstByteReader * tfhd,
if (G_UNLIKELY (!*stream)) if (G_UNLIKELY (!*stream))
goto unknown_stream; goto unknown_stream;
if (flags & TF_DEFAULT_BASE_IS_MOOF)
*base_offset = qtdemux->moof_offset;
if (flags & TF_BASE_DATA_OFFSET) if (flags & TF_BASE_DATA_OFFSET)
if (!gst_byte_reader_get_uint64_be (tfhd, (guint64 *) base_offset)) if (!gst_byte_reader_get_uint64_be (tfhd, (guint64 *) base_offset))
goto invalid_track; goto invalid_track;

View file

@ -62,7 +62,8 @@ enum TfFlags
TF_DEFAULT_SAMPLE_DURATION = 0x000008, /* default-sample-duration-present */ TF_DEFAULT_SAMPLE_DURATION = 0x000008, /* default-sample-duration-present */
TF_DEFAULT_SAMPLE_SIZE = 0x000010, /* default-sample-size-present */ TF_DEFAULT_SAMPLE_SIZE = 0x000010, /* default-sample-size-present */
TF_DEFAULT_SAMPLE_FLAGS = 0x000020, /* default-sample-flags-present */ TF_DEFAULT_SAMPLE_FLAGS = 0x000020, /* default-sample-flags-present */
TF_DURATION_IS_EMPTY = 0x100000 /* duration-is-empty */ TF_DURATION_IS_EMPTY = 0x010000, /* duration-is-empty */
TF_DEFAULT_BASE_IS_MOOF = 0x020000 /* default-base-is-moof */
}; };
enum TrFlags enum TrFlags