qtdemux: Add qtdemux_tree_get_child_by_index_full() helper function

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
This commit is contained in:
Sebastian Dröge 2025-05-05 11:08:51 +03:00 committed by GStreamer Marge Bot
parent 2b18846e39
commit d98df47e53
2 changed files with 26 additions and 0 deletions

View File

@ -87,6 +87,30 @@ qtdemux_tree_get_child_by_index (GNode * node, guint index)
return g_node_nth_child (node, index);
}
GNode *
qtdemux_tree_get_child_by_index_full (GNode * node, guint index,
GstByteReader * parser)
{
GNode *child;
guint8 *buffer;
guint32 child_len;
child = g_node_nth_child (node, index);
if (child) {
buffer = (guint8 *) child->data;
if (parser) {
child_len = QT_UINT32 (buffer);
if (G_UNLIKELY (child_len < (4 + 4)))
return NULL;
/* FIXME: must verify if atom length < parent atom length */
gst_byte_reader_init (parser, buffer + (4 + 4), child_len - (4 + 4));
}
return child;
}
return NULL;
}
GNode *
qtdemux_tree_get_sibling_by_type_full (GNode * node, guint32 fourcc,
GstByteReader * parser)

View File

@ -41,6 +41,8 @@ GNode *qtdemux_tree_get_sibling_by_type (GNode * node, guint32 fourcc);
GNode *qtdemux_tree_get_sibling_by_type_full (GNode * node,
guint32 fourcc, GstByteReader * parser);
GNode *qtdemux_tree_get_child_by_index (GNode * node, guint index);
GNode *qtdemux_tree_get_child_by_index_full (GNode * node, guint index,
GstByteReader * parser);
G_END_DECLS