qtdemux: Cope with difference between QTFF and ISO BMFF specs

The 'meta' atom is defined differently in QTFF and BMFF, so try
to guess which spec the current stream applies to by looking
at the major file type.
This commit is contained in:
Edward Hervey 2018-02-09 08:54:05 +01:00 committed by Edward Hervey
parent b415358c7e
commit 357d77cf55

View file

@ -7521,7 +7521,13 @@ qtdemux_parse_node (GstQTDemux * qtdemux, GNode * node, const guint8 * buffer,
case FOURCC_meta:
{
GST_DEBUG_OBJECT (qtdemux, "parsing meta atom");
qtdemux_parse_container (qtdemux, node, buffer + 12, end);
/* You are reading this correctly. QTFF specifies that the
* metadata atom is a short atom, whereas ISO BMFF specifies
* it's a full atom. joy joy joy */
if (qtdemux->major_brand == FOURCC_qt__)
qtdemux_parse_container (qtdemux, node, buffer + 8, end);
else
qtdemux_parse_container (qtdemux, node, buffer + 12, end);
break;
}
case FOURCC_mp4s: