From 114ef64465bfdadd51d217f5470b79a9c9534624 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Thu, 15 Jun 2023 17:35:57 -0400 Subject: [PATCH] ges: Expose GESDiscovererManager::source-setup Part-of: --- girs/GES-1.0.gir | 12 ++++++++++ .../ges/ges-discoverer-manager.c | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/girs/GES-1.0.gir b/girs/GES-1.0.gir index de3541e37b..b5b94b9fff 100644 --- a/girs/GES-1.0.gir +++ b/girs/GES-1.0.gir @@ -3234,6 +3234,18 @@ discovery. + + Allows to setup the source element before the discoverer runs. + + + + + + The source #GstElement to setup + + + + diff --git a/subprojects/gst-editing-services/ges/ges-discoverer-manager.c b/subprojects/gst-editing-services/ges/ges-discoverer-manager.c index 1a67d2dbfd..804de14366 100644 --- a/subprojects/gst-editing-services/ges/ges-discoverer-manager.c +++ b/subprojects/gst-editing-services/ges/ges-discoverer-manager.c @@ -31,6 +31,7 @@ enum enum { LOAD_SERIALIZED_INFO_SIGNAL, + DISCOVERER_SOURCE_SETUP, DISCOVERER_SIGNAL, N_SIGNALS }; @@ -154,6 +155,19 @@ ges_discoverer_manager_class_init (GESDiscovererManagerClass * klass) G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, GST_TYPE_DISCOVERER_INFO, 1, G_TYPE_STRING); + /** + * GESDiscovererManager::source-setup: + * @manager: the #GESDiscovererManager + * @source: The source #GstElement to setup + * + * Allows to setup the source element before the discoverer runs. + * + * Since: 1.24 + */ + signals[DISCOVERER_SOURCE_SETUP] = + g_signal_new ("source-setup", G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); + /** * GESDiscovererManager::discovered: (attributes doc.skip=true) * @manager: the #GESDiscovererManager @@ -285,6 +299,12 @@ proxy_load_serialized_info_cb (GESDiscovererManager * self, const gchar * uri) return info; } +static void +source_setup_cb (GESDiscovererManager * self, GstElement * source) +{ + g_signal_emit (self, signals[DISCOVERER_SOURCE_SETUP], 0, source); +} + static void proxy_discovered_cb (GESDiscovererManager * self, GstDiscovererInfo * info, GError * err, gpointer user_data) @@ -301,6 +321,8 @@ create_discoverer (GESDiscovererManager * self) discoverer = gst_discoverer_new (self->timeout, NULL); g_signal_connect_swapped (discoverer, "load-serialized-info", G_CALLBACK (proxy_load_serialized_info_cb), self); + g_signal_connect_swapped (discoverer, "source-setup", + G_CALLBACK (source_setup_cb), self); g_signal_connect_swapped (discoverer, "discovered", G_CALLBACK (proxy_discovered_cb), self); g_object_set (discoverer, "use-cache", self->use_cache, NULL);