From 357d77cf5528c0b66808e4788b1f98d2560949cf Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 9 Feb 2018 08:54:05 +0100 Subject: [PATCH] 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. --- gst/isomp4/qtdemux.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index 4fda82a82c..3ec41b91d2 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -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: