Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gstreamer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2021-04-23 22:34:26 +0300
committerOlivier CrĂȘte <olivier.crete@collabora.com>2021-08-19 00:01:27 +0300
commit8332b44a2ab6ba84aa362df3cc494be6ee85dfa7 (patch)
tree9af39dfbf9bd4cf519b3e2fd651fd9e63586fbe3
parent2b01467934ab79ac87e6e44d88f6b587229a840e (diff)
tracers: Add tracepoint when a plugin feature it loaded
This makes it possible to trace which ones are loaded in a specific program to make nice statistics. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/782>
-rw-r--r--gst/gstpluginfeature.c2
-rw-r--r--gst/gsttracerutils.c2
-rw-r--r--gst/gsttracerutils.h29
3 files changed, 32 insertions, 1 deletions
diff --git a/gst/gstpluginfeature.c b/gst/gstpluginfeature.c
index e7c741de8b..ac61cc0e11 100644
--- a/gst/gstpluginfeature.c
+++ b/gst/gstpluginfeature.c
@@ -124,6 +124,8 @@ gst_plugin_feature_load (GstPluginFeature * feature)
else if (!real_feature->loaded)
goto not_found;
+ GST_TRACER_PLUGIN_FEATURE_LOADED (real_feature);
+
return real_feature;
/* ERRORS */
diff --git a/gst/gsttracerutils.c b/gst/gsttracerutils.c
index ea9c9e320a..cc92e6448d 100644
--- a/gst/gsttracerutils.c
+++ b/gst/gsttracerutils.c
@@ -54,7 +54,7 @@ static const gchar *_quark_strings[] = {
"element-change-state-pre", "element-change-state-post",
"mini-object-created", "mini-object-destroyed", "object-created",
"object-destroyed", "mini-object-reffed", "mini-object-unreffed",
- "object-reffed", "object-unreffed",
+ "object-reffed", "object-unreffed", "plugin-feature-loaded"
};
GQuark _priv_gst_tracer_quark_table[GST_TRACER_QUARK_MAX];
diff --git a/gst/gsttracerutils.h b/gst/gsttracerutils.h
index a2a5ed6d2a..48b0864015 100644
--- a/gst/gsttracerutils.h
+++ b/gst/gsttracerutils.h
@@ -79,6 +79,7 @@ typedef enum /*< skip >*/
GST_TRACER_QUARK_HOOK_MINI_OBJECT_UNREFFED,
GST_TRACER_QUARK_HOOK_OBJECT_REFFED,
GST_TRACER_QUARK_HOOK_OBJECT_UNREFFED,
+ GST_TRACER_QUARK_HOOK_PLUGIN_FEATURE_LOADED,
GST_TRACER_QUARK_MAX
} GstTracerQuarkId;
@@ -689,11 +690,38 @@ typedef void (*GstTracerHookObjectCreated) (GObject *self, GstClockTime ts,
*/
typedef void (*GstTracerHookObjectDestroyed) (GObject *self, GstClockTime ts,
GstObject *object);
+
#define GST_TRACER_OBJECT_DESTROYED(object) G_STMT_START{ \
GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_OBJECT_DESTROYED), \
GstTracerHookObjectDestroyed, (GST_TRACER_ARGS, object)); \
}G_STMT_END
+/**
+ * GstTracerHookPluginFeatureLoaded:
+ * @self: the tracer instance
+ * @ts: the current timestamp
+ * @feature: the plugin feature that was loaded
+ *
+ * Hook called when a GstPluginFeature is loaded named
+ * "plugin-feature-loaded".
+ *
+ * Since: 1.20
+ */
+typedef void (*GstTracerHookPluginFeatureLoaded) (GObject *self, GstClockTime ts,
+ GstPluginFeature *feature);
+/**
+ * GST_TRACER_PLUGIN_FEATURE_LOADED:
+ * @feature: The feature that this tracer is called for
+ *
+ * Add a tracepoint when a plugin feature is loaded.
+ *
+ * Since: 1.20
+ */
+#define GST_TRACER_PLUGIN_FEATURE_LOADED(feature) G_STMT_START{ \
+ GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_PLUGIN_FEATURE_LOADED), \
+ GstTracerHookPluginFeatureLoaded, (GST_TRACER_ARGS, feature)); \
+}G_STMT_END
+
#else /* !GST_DISABLE_GST_TRACER_HOOKS */
@@ -743,6 +771,7 @@ _priv_gst_tracing_deinit (void)
#define GST_TRACER_OBJECT_DESTROYED(object)
#define GST_TRACER_OBJECT_REFFED(object, new_refcount)
#define GST_TRACER_OBJECT_UNREFFED(object, new_refcount)
+#define GST_TRACER_PLUGIN_FEATURE_LOADED(feature)
#endif /* GST_DISABLE_GST_TRACER_HOOKS */