qtdemux: handle default-base-is-moof flag
authorThiago Santos <thiagoss@osg.samsung.com>
Sun, 26 Jul 2015 05:09:24 +0000 (02:09 -0300)
committerThiago Santos <thiagoss@osg.samsung.com>
Wed, 5 Aug 2015 21:12:45 +0000 (18:12 -0300)
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

gst/isomp4/atoms.h
gst/isomp4/qtdemux.c
gst/isomp4/qtdemux_types.h

index 1f0c59d..f8789e4 100644 (file)
@@ -612,7 +612,8 @@ enum TfFlags
   TF_DEFAULT_SAMPLE_DURATION  = 0x08,     /* default-sample-duration-present */
   TF_DEFAULT_SAMPLE_SIZE      = 0x010,    /* default-sample-size-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
index 6a52021..bef2427 100644 (file)
@@ -2879,6 +2879,9 @@ qtdemux_parse_tfhd (GstQTDemux * qtdemux, GstByteReader * tfhd,
   if (G_UNLIKELY (!*stream))
     goto unknown_stream;
 
+  if (flags & TF_DEFAULT_BASE_IS_MOOF)
+    *base_offset = qtdemux->moof_offset;
+
   if (flags & TF_BASE_DATA_OFFSET)
     if (!gst_byte_reader_get_uint64_be (tfhd, (guint64 *) base_offset))
       goto invalid_track;
index 57ab4f0..43ef77c 100644 (file)
@@ -62,7 +62,8 @@ enum TfFlags
   TF_DEFAULT_SAMPLE_DURATION  = 0x000008,   /* default-sample-duration-present */
   TF_DEFAULT_SAMPLE_SIZE      = 0x000010,   /* default-sample-size-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