static void CHECK_TOC (GstToc * toc_t) { GstTocEntry *entry_t, *subentry_t; GstTagList *tags; GList *entries, *subentries, *subsubentries; gchar *tag_t; /* dump TOC */ gst_toc_dump (toc_t); /* check TOC */ tags = gst_toc_get_tags (toc_t); fail_unless (tags != NULL); fail_unless (gst_tag_list_get_string (tags, GST_TAG_TITLE, &tag_t)); fail_unless_equals_string (tag_t, TOC_TAG); g_free (tag_t); entries = gst_toc_get_entries (toc_t); fail_unless_equals_int (g_list_length (entries), 2); /* check edition1 */ entry_t = g_list_nth_data (entries, 0); fail_if (entry_t == NULL); subentries = gst_toc_entry_get_sub_entries (entry_t); fail_unless_equals_int (g_list_length (subentries), 2); CHECK_TOC_ENTRY (entry_t, GST_TOC_ENTRY_TYPE_EDITION, ENTRY_ED1); /* check chapter1 */ subentry_t = g_list_nth_data (subentries, 0); fail_if (subentry_t == NULL); subsubentries = gst_toc_entry_get_sub_entries (subentry_t); fail_unless_equals_int (g_list_length (subsubentries), 0); CHECK_TOC_ENTRY (subentry_t, GST_TOC_ENTRY_TYPE_CHAPTER, ENTRY_CH1); /* check chapter2 */ subentry_t = g_list_nth_data (subentries, 1); fail_if (subentry_t == NULL); subsubentries = gst_toc_entry_get_sub_entries (subentry_t); fail_unless_equals_int (g_list_length (subsubentries), 0); CHECK_TOC_ENTRY (subentry_t, GST_TOC_ENTRY_TYPE_CHAPTER, ENTRY_CH2); /* check edition2 */ entry_t = g_list_nth_data (entries, 1); fail_if (entry_t == NULL); CHECK_TOC_ENTRY (entry_t, GST_TOC_ENTRY_TYPE_EDITION, ENTRY_ED2); subentries = gst_toc_entry_get_sub_entries (entry_t); fail_unless_equals_int (g_list_length (subentries), 1); /* check chapter3 */ subentry_t = g_list_nth_data (subentries, 0); fail_if (subentry_t == NULL); CHECK_TOC_ENTRY (subentry_t, GST_TOC_ENTRY_TYPE_CHAPTER, ENTRY_CH3); subsubentries = gst_toc_entry_get_sub_entries (subentry_t); fail_unless_equals_int (g_list_length (subsubentries), 1); /* check subchapter1 */ subentry_t = g_list_nth_data (subsubentries, 0); fail_if (subentry_t == NULL); CHECK_TOC_ENTRY (subentry_t, GST_TOC_ENTRY_TYPE_CHAPTER, ENTRY_SUB1); subsubentries = gst_toc_entry_get_sub_entries (subentry_t); fail_unless_equals_int (g_list_length (subsubentries), 0); }
/** * 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); }