static void print_toc_entry (gpointer data, gpointer user_data) { GstTocEntry *entry = (GstTocEntry *) data; guint depth = GPOINTER_TO_UINT (user_data); guint indent = MIN (GPOINTER_TO_UINT (user_data), MAX_INDENT); GstTagList *tags; GList *subentries; gint64 start, stop; gst_toc_entry_get_start_stop_times (entry, &start, &stop); g_print ("%*s%s: start: %" GST_TIME_FORMAT " stop: %" GST_TIME_FORMAT "\n", depth, " ", gst_toc_entry_type_get_nick (gst_toc_entry_get_entry_type (entry)), GST_TIME_ARGS (start), GST_TIME_ARGS (stop)); indent += 2; /* print tags */ tags = gst_toc_entry_get_tags (entry); if (tags) { g_print ("%*sTags:\n", 2 * depth, " "); gst_tag_list_foreach (tags, print_tag_foreach, GUINT_TO_POINTER (indent)); } /* loop over sub-toc entries */ subentries = gst_toc_entry_get_sub_entries (entry); g_list_foreach (subentries, print_toc_entry, GUINT_TO_POINTER (indent)); }
/** * gst_toc_append_entry: * @toc: A #GstToc instance * @entry: (transfer full): A #GstTocEntry * * Appends the #GstTocEntry @entry to @toc. */ void gst_toc_append_entry (GstToc * toc, GstTocEntry * entry) { g_return_if_fail (toc != NULL); g_return_if_fail (gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (toc))); g_return_if_fail (gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (entry))); g_return_if_fail (entry->toc == NULL); g_return_if_fail (entry->parent == NULL); toc->entries = g_list_append (toc->entries, entry); entry->toc = toc; GST_LOG ("appended %s entry with uid %s to toc %p", gst_toc_entry_type_get_nick (entry->type), entry->uid, toc); gst_toc_dump (toc); }
/** * gst_toc_entry_append_sub_entry: * @entry: A #GstTocEntry instance * @subentry: (transfer full): A #GstTocEntry * * Appends the #GstTocEntry @subentry to @entry. */ void gst_toc_entry_append_sub_entry (GstTocEntry * entry, GstTocEntry * subentry) { g_return_if_fail (entry != NULL); g_return_if_fail (subentry != NULL); g_return_if_fail (gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (entry))); g_return_if_fail (gst_mini_object_is_writable (GST_MINI_OBJECT_CAST (subentry))); g_return_if_fail (subentry->toc == NULL); g_return_if_fail (subentry->parent == NULL); entry->subentries = g_list_append (entry->subentries, subentry); subentry->toc = entry->toc; subentry->parent = entry; GST_LOG ("appended %s subentry with uid %s to entry %s", gst_toc_entry_type_get_nick (subentry->type), subentry->uid, entry->uid); }
static void gst_toc_dump_entries (GList * entries, guint depth) { GList *e; gchar *indent; indent = g_malloc0 (depth + 1); memset (indent, ' ', depth); for (e = entries; e != NULL; e = e->next) { GstTocEntry *entry = e->data; GST_TRACE ("%s+ %s (%s), %" GST_TIME_FORMAT " - %" GST_TIME_FORMAT ", " "tags: %" GST_PTR_FORMAT, indent, entry->uid, gst_toc_entry_type_get_nick (entry->type), GST_TIME_ARGS (entry->start), GST_TIME_ARGS (entry->stop), entry->tags); if (entry->subentries != NULL) gst_toc_dump_entries (entry->subentries, depth + 2); } g_free (indent); }