/** * gst_encoding_list_all_targets: * @categoryname: (allow-none): The category, for ex: #GST_ENCODING_CATEGORY_DEVICE. * Can be %NULL. * * List all available #GstEncodingTarget for the specified category, or all categories * if @categoryname is %NULL. * * Returns: (transfer full) (element-type GstEncodingTarget): The list of #GstEncodingTarget */ GList * gst_encoding_list_all_targets (const gchar * categoryname) { GList *res = NULL; gchar *topdir; gchar **encoding_target_dirs; const gchar *envvar = g_getenv ("GST_ENCODING_TARGET_PATH"); if (envvar) { gint i; encoding_target_dirs = g_strsplit (envvar, G_SEARCHPATH_SEPARATOR_S, -1); for (i = 0; encoding_target_dirs[i]; i++) res = merge_targets (res, get_all_targets (encoding_target_dirs[i], categoryname)); g_strfreev (encoding_target_dirs); } /* Get user-locals */ topdir = g_build_filename (g_get_user_data_dir (), "gstreamer-" GST_API_VERSION, GST_ENCODING_TARGET_DIRECTORY, NULL); res = merge_targets (res, get_all_targets (topdir, categoryname)); g_free (topdir); /* Get system-wide */ topdir = g_build_filename (GST_DATADIR, "gstreamer-" GST_API_VERSION, GST_ENCODING_TARGET_DIRECTORY, NULL); res = merge_targets (res, get_all_targets (topdir, categoryname)); g_free (topdir); return res; }
void options_c::find_elements(kax_analyzer_c *analyzer) { ebml_element_cptr tracks(read_element<KaxTracks>(analyzer, Y("Track headers"))); ebml_element_cptr info, tags, chapters, attachments; attachment_id_manager_cptr attachment_id_manager; for (auto &target_ptr : m_targets) { target_c &target = *target_ptr; if (dynamic_cast<segment_info_target_c *>(&target)) { if (!info) info = read_element<KaxInfo>(analyzer, Y("Segment information")); target.set_level1_element(info); } else if (dynamic_cast<tag_target_c *>(&target)) { if (!tags) { tags = read_element<KaxTags>(analyzer, Y("Tags"), false); if (!tags) tags = ebml_element_cptr(new KaxTags); } target.set_level1_element(tags, tracks); } else if (dynamic_cast<chapter_target_c *>(&target)) { if (!chapters) { chapters = read_element<KaxChapters>(analyzer, Y("Chapters"), false); if (!chapters) chapters = ebml_element_cptr(new KaxChapters); } target.set_level1_element(chapters, tracks); } else if (dynamic_cast<attachment_target_c *>(&target)) { if (!attachments) { attachments = read_element<KaxAttachments>(analyzer, Y("Attachments"), false); if (!attachments) attachments = ebml_element_cptr(new KaxAttachments); attachment_id_manager = std::make_shared<attachment_id_manager_c>(static_cast<EbmlMaster *>(attachments.get()), 1); } static_cast<attachment_target_c &>(target).set_id_manager(attachment_id_manager); target.set_level1_element(attachments); } else if (dynamic_cast<track_target_c *>(&target)) target.set_level1_element(tracks); else assert(false); } merge_targets(); }