...
 
Commits (3)
......@@ -58,6 +58,7 @@ G_BEGIN_DECLS
#define FOURCC_MAC6 GST_MAKE_FOURCC('M','A','C','6')
#define FOURCC_MP4V GST_MAKE_FOURCC('M','P','4','V')
#define FOURCC_PICT GST_MAKE_FOURCC('P','I','C','T')
#define FOURCC_pict GST_MAKE_FOURCC('p','i','c','t')
#define FOURCC_QDM2 GST_MAKE_FOURCC('Q','D','M','2')
#define FOURCC_SVQ3 GST_MAKE_FOURCC('S','V','Q','3')
#define FOURCC_VP31 GST_MAKE_FOURCC('V','P','3','1')
......@@ -391,6 +392,21 @@ G_BEGIN_DECLS
#define FOURCC_tenc GST_MAKE_FOURCC('t','e','n','c')
#define FOURCC_cenc GST_MAKE_FOURCC('c','e','n','c')
/* child atoms of meta */
#define FOURCC_pitm GST_MAKE_FOURCC('p','i','t','m')
#define FOURCC_iloc GST_MAKE_FOURCC('i','l','o','c')
#define FOURCC_iinf GST_MAKE_FOURCC('i','i','n','f')
#define FOURCC_infe GST_MAKE_FOURCC('i','n','f','e')
#define FOURCC_iref GST_MAKE_FOURCC('i','r','e','f')
/* High Efficiency Image File Format (HEIF) */
#define FOURCC_mif1 GST_MAKE_FOURCC('m','i','f','1')
#define FOURCC_msf1 GST_MAKE_FOURCC('m','s','f','1')
#define FOURCC_iprp GST_MAKE_FOURCC('i','p','r','p')
#define FOURCC_ipco GST_MAKE_FOURCC('i','p','c','o')
#define FOURCC_ispe GST_MAKE_FOURCC('i','s','p','e')
#define FOURCC_ipma GST_MAKE_FOURCC('i','p','m','a')
G_END_DECLS
#endif /* __FOURCC_H__ */
This diff is collapsed.
......@@ -57,6 +57,13 @@ enum QtDemuxState
QTDEMUX_STATE_BUFFER_MDAT /* Buffering the mdat atom */
};
enum QtDemuxHeaderState
{
QTDEMUX_HEADER_NONE, /* Initial state (haven't got moov or initial meta yet) */
QTDEMUX_HEADER_MOOV, /* Got moov and it's parsed */
QTDEMUX_HEADER_INIT /* Got init. data via caps or 'meta' atom */
};
struct _GstQTDemux {
GstElement element;
......@@ -97,11 +104,16 @@ struct _GstQTDemux {
* to a temporary variable ? */
GNode *moov_node;
/* top-level [meta] header */
GNode *meta_node;
GstBuffer *metabuffer;
/* FIXME : This is never freed. It is only assigned once. memleak ? */
GNode *moov_node_compressed;
/* Set to TRUE when the [moov] header has been fully parsed */
gboolean got_moov;
/* Currrent initial header state. Depending on specification, qtdemux can
* be initialized via moov, caps, or some other way */
enum QtDemuxHeaderState header_state;
/* Global timescale for the incoming stream. Use the QTTIME macros
* to convert values to/from GstClockTime */
......
This diff is collapsed.
......@@ -91,6 +91,18 @@ gboolean qtdemux_dump_fLaC (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_gmin (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_pitm (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_iloc (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_iinf (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_infe (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_ispe (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_dump_ipma (GstQTDemux * qtdemux, GstByteReader * data,
int depth);
gboolean qtdemux_node_dump (GstQTDemux * qtdemux, GNode * node);
......
......@@ -220,6 +220,15 @@ static const QtNodeType qt_node_types[] = {
{FOURCC_av1m, "AV1 Multi-Frame sample group entry", 0},
{FOURCC_av1s, "AV1 S-Frame sample group entry", 0},
{FOURCC_av1M, "AV1 Metadata sample group entry", 0},
{FOURCC_pitm, "primary item", 0, qtdemux_dump_pitm},
{FOURCC_iloc, "item location", 0, qtdemux_dump_iloc},
{FOURCC_iinf, "item information", 0, qtdemux_dump_iinf},
{FOURCC_infe, "item information entry", 0, qtdemux_dump_infe},
{FOURCC_iref, "item reference", 0},
{FOURCC_iprp, "item properties", QT_FLAG_CONTAINER},
{FOURCC_ipco, "item property container", QT_FLAG_CONTAINER},
{FOURCC_ispe, "item spatial extents", 0, qtdemux_dump_ispe},
{FOURCC_ipma, "item property association", 0, qtdemux_dump_ipma},
{0, "unknown", 0,},
};
......