From d6e1e744a7b3ac2eb43929b4b7b7c64e6abea89b Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Wed, 17 Jun 2015 15:19:47 -0400 Subject: [PATCH] cslg: Add Composition Shift Least Greatest Atom This simply add fourcc and dump function for the cslg Atom. https://bugzilla.gnome.org/show_bug.cgi?id=751103 --- gst/isomp4/fourcc.h | 1 + gst/isomp4/qtdemux_dump.c | 22 ++++++++++++++++++++++ gst/isomp4/qtdemux_dump.h | 2 ++ gst/isomp4/qtdemux_types.c | 1 + 4 files changed, 26 insertions(+) diff --git a/gst/isomp4/fourcc.h b/gst/isomp4/fourcc.h index 774a26608a..147027bb53 100644 --- a/gst/isomp4/fourcc.h +++ b/gst/isomp4/fourcc.h @@ -102,6 +102,7 @@ G_BEGIN_DECLS #define FOURCC_crgn GST_MAKE_FOURCC('c','r','g','n') #define FOURCC_ctab GST_MAKE_FOURCC('c','t','a','b') #define FOURCC_ctts GST_MAKE_FOURCC('c','t','t','s') +#define FOURCC_cslg GST_MAKE_FOURCC('c','s','l','g') #define FOURCC_dac3 GST_MAKE_FOURCC('d','a','c','3') #define FOURCC_data GST_MAKE_FOURCC('d','a','t','a') #define FOURCC_dcom GST_MAKE_FOURCC('d','c','o','m') diff --git a/gst/isomp4/qtdemux_dump.c b/gst/isomp4/qtdemux_dump.c index 132a458e7d..880bb74cbe 100644 --- a/gst/isomp4/qtdemux_dump.c +++ b/gst/isomp4/qtdemux_dump.c @@ -521,6 +521,28 @@ qtdemux_dump_ctts (GstQTDemux * qtdemux, GstByteReader * data, int depth) return TRUE; } +gboolean +qtdemux_dump_cslg (GstQTDemux * qtdemux, GstByteReader * data, int depth) +{ + guint32 ver_flags = 0, shift = 0; + gint32 least_offset = 0, start_time = 0, end_time = 0; + + if (!gst_byte_reader_get_uint32_be (data, &ver_flags) || + !gst_byte_reader_get_uint32_be (data, &shift) || + !gst_byte_reader_get_int32_be (data, &least_offset) || + !gst_byte_reader_get_int32_be (data, &start_time) || + !gst_byte_reader_get_int32_be (data, &end_time)) + return FALSE; + + GST_LOG ("%*s version/flags: %08x", depth, "", ver_flags); + GST_LOG ("%*s shift: %u", depth, "", shift); + GST_LOG ("%*s least offset: %d", depth, "", least_offset); + GST_LOG ("%*s start time: %d", depth, "", start_time); + GST_LOG ("%*s end time: %d", depth, "", end_time); + + return TRUE; +} + gboolean qtdemux_dump_co64 (GstQTDemux * qtdemux, GstByteReader * data, int depth) { diff --git a/gst/isomp4/qtdemux_dump.h b/gst/isomp4/qtdemux_dump.h index 162b411aa3..4234023b40 100644 --- a/gst/isomp4/qtdemux_dump.h +++ b/gst/isomp4/qtdemux_dump.h @@ -61,6 +61,8 @@ gboolean qtdemux_dump_cmvd (GstQTDemux * qtdemux, GstByteReader * data, int depth); gboolean qtdemux_dump_ctts (GstQTDemux * qtdemux, GstByteReader * data, int depth); +gboolean qtdemux_dump_cslg (GstQTDemux * qtdemux, GstByteReader * data, + int depth); gboolean qtdemux_dump_mfro (GstQTDemux * qtdemux, GstByteReader * data, int depth); gboolean qtdemux_dump_mfhd (GstQTDemux * qtdemux, GstByteReader * data, diff --git a/gst/isomp4/qtdemux_types.c b/gst/isomp4/qtdemux_types.c index 6672efed3c..ecd02f2654 100644 --- a/gst/isomp4/qtdemux_types.c +++ b/gst/isomp4/qtdemux_types.c @@ -146,6 +146,7 @@ static const QtNodeType qt_node_types[] = { {FOURCC_rdrf, "rdrf", 0,}, {FOURCC__gen, "Custom Genre", QT_FLAG_CONTAINER,}, {FOURCC_ctts, "Composition time to sample", 0, qtdemux_dump_ctts}, + {FOURCC_cslg, "Composition Shift Least Greatest", 0, qtdemux_dump_cslg}, {FOURCC_XiTh, "XiTh", 0}, {FOURCC_XdxT, "XdxT", 0}, {FOURCC_loci, "loci", 0},