From 7dfc0a8eadbe07768562c1a39de835fecfe1b65d Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Tue, 15 Jul 2014 09:49:23 +0200 Subject: [PATCH] tracers: add a logging helper to remove identical copies from the tracers --- gst/gsttracer.c | 14 ++++++++++++++ gst/gsttracer.h | 9 +++++++++ plugins/tracers/gstlatency.c | 16 +--------------- plugins/tracers/gstrusage.c | 16 +--------------- plugins/tracers/gststats.c | 26 ++++++-------------------- 5 files changed, 31 insertions(+), 50 deletions(-) diff --git a/gst/gsttracer.c b/gst/gsttracer.c index 8d48dda7c2..a57d420468 100644 --- a/gst/gsttracer.c +++ b/gst/gsttracer.c @@ -299,4 +299,18 @@ gst_tracer_dispatch (GstTracerHookId hid, GstTracerMessageId mid, ...) } } +/* tracing module helpers */ + +void +gst_tracer_log_trace (GstStructure * s) +{ + gchar *data; + + // TODO(ensonic): use a GVariant? + data = gst_structure_to_string (s); + GST_TRACE ("%s", data); + g_free (data); + gst_structure_free (s); +} + #endif /* GST_DISABLE_GST_DEBUG */ diff --git a/gst/gsttracer.h b/gst/gsttracer.h index 38ea39fde0..99f1982deb 100644 --- a/gst/gsttracer.h +++ b/gst/gsttracer.h @@ -118,9 +118,18 @@ GType gst_tracer_get_type (void); void _priv_gst_tracer_init (void); void _priv_gst_tracer_deinit (void); +/* tracing modules */ + gboolean gst_tracer_register (GstPlugin * plugin, const gchar * name, GType type); + +/* tracing helpers */ + void gst_tracer_dispatch (GstTracerHookId hid, GstTracerMessageId mid, ...); +/* tracing module helpers */ + +void gst_tracer_log_trace (GstStructure * s); + extern gboolean _priv_tracer_enabled; extern GList *_priv_tracers[GST_TRACER_HOOK_ID_LAST]; diff --git a/plugins/tracers/gstlatency.c b/plugins/tracers/gstlatency.c index d474cba7c0..3d97a86ff3 100644 --- a/plugins/tracers/gstlatency.c +++ b/plugins/tracers/gstlatency.c @@ -38,20 +38,6 @@ static GQuark latency_probe_id; static GQuark latency_probe_pad; static GQuark latency_probe_ts; -/* logging */ - -static void -log_trace (GstStructure * s) -{ - gchar *data; - - // TODO(ensonic): use a GVariant? - data = gst_structure_to_string (s); - GST_TRACE ("%s", data); - g_free (data); - gst_structure_free (s); -} - /* data helpers */ /* @@ -177,7 +163,7 @@ do_push_event_pre (GstLatencyTracer * self, va_list var_args) to = g_strdup_printf ("%s_%s", GST_DEBUG_PAD_NAME (peer_pad)); /* TODO(ensonic): report format is still unstable */ - log_trace (gst_structure_new ("latency", + gst_tracer_log_trace (gst_structure_new ("latency", "from", G_TYPE_STRING, from, "to", G_TYPE_STRING, to, "time", G_TYPE_UINT64, GST_CLOCK_DIFF (origin_ts, ts), NULL)); diff --git a/plugins/tracers/gstrusage.c b/plugins/tracers/gstrusage.c index 70e277c712..897feb80d4 100644 --- a/plugins/tracers/gstrusage.c +++ b/plugins/tracers/gstrusage.c @@ -48,20 +48,6 @@ typedef struct static void gst_rusage_tracer_invoke (GstTracer * self, GstTracerHookId id, GstTracerMessageId mid, va_list var_args); -/* logging */ - -static void -log_trace (GstStructure * s) -{ - gchar *data; - - // TODO(ensonic): use a GVariant? - data = gst_structure_to_string (s); - GST_TRACE ("%s", data); - g_free (data); - gst_structure_free (s); -} - /* data helper */ static void @@ -146,7 +132,7 @@ gst_rusage_tracer_invoke (GstTracer * obj, GstTracerHookId hid, */ cpuload = (guint) gst_util_uint64_scale (tusersys, G_GINT64_CONSTANT (100), treal); - log_trace (gst_structure_new ("rusage", "ts", G_TYPE_UINT64, treal, "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (thread_id), "cpuload", G_TYPE_UINT, cpuload, "treal", G_TYPE_UINT64, stats->treal, /* time in thread */ + gst_tracer_log_trace (gst_structure_new ("rusage", "ts", G_TYPE_UINT64, treal, "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (thread_id), "cpuload", G_TYPE_UINT, cpuload, "treal", G_TYPE_UINT64, stats->treal, /* time in thread */ "tsum", G_TYPE_UINT64, tusersys, /* time in process */ NULL)); } diff --git a/plugins/tracers/gststats.c b/plugins/tracers/gststats.c index d4573ad210..fdef85e45b 100644 --- a/plugins/tracers/gststats.c +++ b/plugins/tracers/gststats.c @@ -62,20 +62,6 @@ typedef struct guint parent_ix; } GstElementStats; -/* logging */ - -static void -log_trace (GstStructure * s) -{ - gchar *data; - - // TODO(ensonic): use a GVariant? - data = gst_structure_to_string (s); - GST_TRACE ("%s", data); - g_free (data); - gst_structure_free (s); -} - /* data helper */ static GstElementStats no_elem_stats = { 0, }; @@ -93,7 +79,7 @@ fill_element_stats (GstStatsTracer * self, GstElement * element) static void log_new_element_stats (GstElementStats * stats, GstElement * element) { - log_trace (gst_structure_new ("new-element", + gst_tracer_log_trace (gst_structure_new ("new-element", "ix", G_TYPE_UINT, stats->index, "parent-ix", G_TYPE_UINT, stats->parent_ix, "name", G_TYPE_STRING, GST_OBJECT_NAME (element), @@ -190,7 +176,7 @@ fill_pad_stats (GstStatsTracer * self, GstPad * pad) static void log_new_pad_stats (GstPadStats * stats, GstPad * pad) { - log_trace (gst_structure_new ("new-pad", + gst_tracer_log_trace (gst_structure_new ("new-pad", "ix", G_TYPE_UINT, stats->index, "parent-ix", G_TYPE_UINT, stats->parent_ix, "name", G_TYPE_STRING, GST_OBJECT_NAME (pad), @@ -252,7 +238,7 @@ do_buffer_stats (GstStatsTracer * self, GstPad * this_pad, GstElementStats *that_elem_stats = get_element_stats (self, that_elem); /* TODO(ensonic): need a quark-table (shared with the tracer-front-ends?) */ - log_trace (gst_structure_new ("buffer", + gst_tracer_log_trace (gst_structure_new ("buffer", "ts", G_TYPE_UINT64, elapsed, "pad-ix", G_TYPE_UINT, this_pad_stats->index, "elem-ix", G_TYPE_UINT, this_elem_stats->index, @@ -480,7 +466,7 @@ do_push_event_pre (GstStatsTracer * self, va_list var_args) GstPadStats *pad_stats = get_pad_stats (self, pad); elem_stats->last_ts = ts; - log_trace (gst_structure_new ("event", + gst_tracer_log_trace (gst_structure_new ("event", "ts", G_TYPE_UINT64, ts, "pad-ix", G_TYPE_UINT, pad_stats->index, "elem-ix", G_TYPE_UINT, elem_stats->index, @@ -505,7 +491,7 @@ do_post_message_pre (GstStatsTracer * self, va_list var_args) GstElementStats *stats = get_element_stats (self, elem); stats->last_ts = ts; - log_trace (gst_structure_new ("message", + gst_tracer_log_trace (gst_structure_new ("message", "ts", G_TYPE_UINT64, ts, "elem-ix", G_TYPE_UINT, stats->index, "name", G_TYPE_STRING, GST_MESSAGE_TYPE_NAME (msg), NULL)); @@ -529,7 +515,7 @@ do_query_pre (GstStatsTracer * self, va_list var_args) GstElementStats *stats = get_element_stats (self, elem); stats->last_ts = ts; - log_trace (gst_structure_new ("query", + gst_tracer_log_trace (gst_structure_new ("query", "ts", G_TYPE_UINT64, ts, "elem-ix", G_TYPE_UINT, stats->index, "name", G_TYPE_STRING, GST_QUERY_TYPE_NAME (qry), NULL));