diff options
author | Stefan Sauer <ensonic@users.sf.net> | 2016-01-12 14:59:04 +0100 |
---|---|---|
committer | Stefan Sauer <ensonic@users.sf.net> | 2016-01-15 21:54:01 +0100 |
commit | 10b78d872b5a0050c8a4572267879b0adbb578f8 (patch) | |
tree | d49e466ba2cab09019fafbcffec6bed870a76f1b /plugins/tracers | |
parent | 7b49459f1ae42a08afff326567f028d1e583b960 (diff) |
tracerrecord: add a log record class
We use this class to register tracer log entry metadata and build a log
template. With the log template we can serialize log data very efficiently.
This also simplifies the logging code, since that is now a simple varargs
function that is not exposing the implementation details.
Add docs for the new class and basic tests.
Remove the previous log handler.
Fixes #760267
Diffstat (limited to 'plugins/tracers')
-rw-r--r-- | plugins/tracers/gstlatency.c | 14 | ||||
-rw-r--r-- | plugins/tracers/gstrusage.c | 56 | ||||
-rw-r--r-- | plugins/tracers/gststats.c | 228 |
3 files changed, 188 insertions, 110 deletions
diff --git a/plugins/tracers/gstlatency.c b/plugins/tracers/gstlatency.c index 1edd1a5d9..93d93eb9e 100644 --- a/plugins/tracers/gstlatency.c +++ b/plugins/tracers/gstlatency.c @@ -38,6 +38,7 @@ #endif #include "gstlatency.h" +#include <gst/gsttracerrecord.h> GST_DEBUG_CATEGORY_STATIC (gst_latency_debug); #define GST_CAT_DEFAULT gst_latency_debug @@ -52,6 +53,8 @@ static GQuark latency_probe_id; static GQuark latency_probe_pad; static GQuark latency_probe_ts; +static GstTracerRecord *tr_latency; + /* data helpers */ /* @@ -103,11 +106,8 @@ log_latency (const GstStructure * data, GstPad * sink_pad, guint64 sink_ts) src = g_strdup_printf ("%s_%s", GST_DEBUG_PAD_NAME (src_pad)); sink = g_strdup_printf ("%s_%s", GST_DEBUG_PAD_NAME (sink_pad)); - /* TODO(ensonic): report format is still unstable */ - gst_tracer_log_trace (gst_structure_new ("latency", - "src", G_TYPE_STRING, src, - "sink", G_TYPE_STRING, sink, - "time", G_TYPE_UINT64, GST_CLOCK_DIFF (src_ts, sink_ts), NULL)); + gst_tracer_record_log (tr_latency, src, sink, + GST_CLOCK_DIFF (src_ts, sink_ts)); g_free (src); g_free (sink); } @@ -204,11 +204,13 @@ gst_latency_tracer_class_init (GstLatencyTracerClass * klass) /* announce trace formats */ /* *INDENT-OFF* */ - gst_tracer_log_trace (gst_structure_new ("latency.class", + tr_latency = gst_tracer_record_new (gst_structure_new ("latency.class", "src", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_STRING, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "sink", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_STRING, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "time", GST_TYPE_STRUCTURE, gst_structure_new ("value", diff --git a/plugins/tracers/gstrusage.c b/plugins/tracers/gstrusage.c index 3db10119c..c455dab14 100644 --- a/plugins/tracers/gstrusage.c +++ b/plugins/tracers/gstrusage.c @@ -22,7 +22,7 @@ * SECTION:gstrusage * @short_description: log resource usage stats * - * A tracing module that take rusage() snapshots and logs them. + * A tracing module that take rusage() snapshots and logs them. */ #ifdef HAVE_CONFIG_H @@ -31,6 +31,7 @@ #include <unistd.h> #include "gstrusage.h" +#include <gst/gsttracerrecord.h> #ifdef HAVE_SYS_RESOURCE_H #ifndef __USE_GNU @@ -56,6 +57,8 @@ G_DEFINE_TYPE_WITH_CODE (GstRUsageTracer, gst_rusage_tracer, GST_TYPE_TRACER, /* number of cpus to scale cpu-usage in threads */ static glong num_cpus = 1; +static GstTracerRecord *tr_proc, *tr_thread; + typedef struct { /* time spend in this thread */ @@ -236,13 +239,8 @@ do_stats (GstTracer * obj, guint64 ts) update_trace_value (stats->tvs_thread, ts, stats->tthread, &dts, &dtproc); cur_cpuload = (guint) gst_util_uint64_scale (dtproc, G_GINT64_CONSTANT (1000), dts); - gst_tracer_log_trace (gst_structure_new ("thread-rusage", - "ts", G_TYPE_UINT64, ts, - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (thread_id), - "average-cpuload", G_TYPE_UINT, MIN (avg_cpuload, 1000), - "current-cpuload", G_TYPE_UINT, MIN (cur_cpuload, 1000), - "time", G_TYPE_UINT64, stats->tthread, - NULL)); + gst_tracer_record_log (tr_thread, (guint64)thread_id, ts, + MIN (avg_cpuload, 1000), MIN (cur_cpuload, 1000), stats->tthread); avg_cpuload = (guint) gst_util_uint64_scale (tproc / num_cpus, G_GINT64_CONSTANT (1000), ts); @@ -251,12 +249,8 @@ do_stats (GstTracer * obj, guint64 ts) G_UNLOCK (_proc); cur_cpuload = (guint) gst_util_uint64_scale (dtproc / num_cpus, G_GINT64_CONSTANT (1000), dts); - gst_tracer_log_trace (gst_structure_new ("proc-rusage", - "ts", G_TYPE_UINT64, ts, - "average-cpuload", G_TYPE_UINT, MIN (avg_cpuload, 1000), - "current-cpuload", G_TYPE_UINT, MIN (cur_cpuload, 1000), - "time", G_TYPE_UINT64, tproc, - NULL)); + gst_tracer_record_log (tr_proc, ts, MIN (avg_cpuload, 1000), + MIN (cur_cpuload, 1000), tproc); /* *INDENT-ON* */ } @@ -291,54 +285,64 @@ gst_rusage_tracer_class_init (GstRUsageTracerClass * klass) /* announce trace formats */ /* *INDENT-OFF* */ - gst_tracer_log_trace (gst_structure_new ("thread-rusage.class", + tr_thread = gst_tracer_record_new (gst_structure_new ("thread-rusage.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO: use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "average-cpuload", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT, "description", G_TYPE_STRING, "average cpu usage per thread in ‰", - "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ - "min", G_TYPE_UINT, 0, + "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ + "min", G_TYPE_UINT, 0, "max", G_TYPE_UINT, 1000, NULL), "current-cpuload", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT, "description", G_TYPE_STRING, "current cpu usage per thread in ‰", - "flags", G_TYPE_STRING, "windowed", /* TODO: use gflags */ - "min", G_TYPE_UINT, 0, + "flags", G_TYPE_STRING, "windowed", /* TODO: use gflags */ + "min", G_TYPE_UINT, 0, "max", G_TYPE_UINT, 1000, NULL), "time", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT64, "description", G_TYPE_STRING, "time spent in thread in ns", - "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ + "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0), "max", G_TYPE_UINT64, G_MAXUINT64, NULL), NULL)); - gst_tracer_log_trace (gst_structure_new ("proc-rusage.class", + tr_proc = gst_tracer_record_new (gst_structure_new ("proc-rusage.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "process", /* TODO: use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "average-cpuload", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT, "description", G_TYPE_STRING, "average cpu usage per process in ‰", - "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ - "min", G_TYPE_UINT, 0, + "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ + "min", G_TYPE_UINT, 0, "max", G_TYPE_UINT, 1000, NULL), "current-cpuload", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT, "description", G_TYPE_STRING, "current cpu usage per process in ‰", - "flags", G_TYPE_STRING, "windowed", /* TODO: use gflags */ - "min", G_TYPE_UINT, 0, + "flags", G_TYPE_STRING, "windowed", /* TODO: use gflags */ + "min", G_TYPE_UINT, 0, "max", G_TYPE_UINT, 1000, NULL), "time", GST_TYPE_STRUCTURE, gst_structure_new ("value", "type", G_TYPE_GTYPE, G_TYPE_UINT64, "description", G_TYPE_STRING, "time spent in process in ns", - "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ + "flags", G_TYPE_STRING, "aggregated", /* TODO: use gflags */ "min", G_TYPE_UINT64, G_GUINT64_CONSTANT (0), "max", G_TYPE_UINT64, G_MAXUINT64, NULL), diff --git a/plugins/tracers/gststats.c b/plugins/tracers/gststats.c index 1c93123a3..87c19278e 100644 --- a/plugins/tracers/gststats.c +++ b/plugins/tracers/gststats.c @@ -30,6 +30,7 @@ #endif #include "gststats.h" +#include <gst/gsttracerrecord.h> #include <stdio.h> @@ -47,6 +48,14 @@ G_LOCK_DEFINE (_pad_stats); G_DEFINE_TYPE_WITH_CODE (GstStatsTracer, gst_stats_tracer, GST_TYPE_TRACER, _do_init); +static GstTracerRecord *tr_new_element; +static GstTracerRecord *tr_new_pad; +static GstTracerRecord *tr_buffer; +static GstTracerRecord *tr_element_query; +static GstTracerRecord *tr_event; +static GstTracerRecord *tr_message; +static GstTracerRecord *tr_query; + typedef struct { /* we can't rely on the address to be unique over time */ @@ -87,14 +96,9 @@ static void log_new_element_stats (GstElementStats * stats, GstElement * element, GstClockTime elapsed) { - gst_tracer_log_trace (gst_structure_new ("new-element", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, elapsed, - "ix", G_TYPE_UINT, stats->index, - "parent-ix", G_TYPE_UINT, stats->parent_ix, - "name", G_TYPE_STRING, GST_OBJECT_NAME (element), - "type", G_TYPE_STRING, G_OBJECT_TYPE_NAME (element), - "is-bin", G_TYPE_BOOLEAN, GST_IS_BIN (element), NULL)); + gst_tracer_record_log (tr_new_element, (guint64) g_thread_self (), + elapsed, stats->index, stats->parent_ix, GST_OBJECT_NAME (element), + G_OBJECT_TYPE_NAME (element), GST_IS_BIN (element)); } static void @@ -194,15 +198,10 @@ fill_pad_stats (GstStatsTracer * self, GstPad * pad) static void log_new_pad_stats (GstPadStats * stats, GstPad * pad) { - gst_tracer_log_trace (gst_structure_new ("new-pad", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ix", G_TYPE_UINT, stats->index, - "parent-ix", G_TYPE_UINT, stats->parent_ix, - "name", G_TYPE_STRING, GST_OBJECT_NAME (pad), - "type", G_TYPE_STRING, G_OBJECT_TYPE_NAME (pad), - "is-ghostpad", G_TYPE_BOOLEAN, GST_IS_GHOST_PAD (pad), - "pad-direction", GST_TYPE_PAD_DIRECTION, GST_PAD_DIRECTION (pad), - NULL)); + gst_tracer_record_log (tr_new_element, (guint64) g_thread_self (), + stats->index, stats->parent_ix, GST_OBJECT_NAME (pad), + G_OBJECT_TYPE_NAME (pad), GST_IS_GHOST_PAD (pad), + GST_PAD_DIRECTION (pad)); } static void @@ -254,50 +253,27 @@ do_buffer_stats (GstStatsTracer * self, GstPad * this_pad, GstElement *that_elem = get_real_pad_parent (that_pad); GstElementStats *that_elem_stats = get_element_stats (self, that_elem); - /* TODO(ensonic): need a quark-table (shared with the tracer-front-ends?) */ - gst_tracer_log_trace (gst_structure_new ("buffer", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, elapsed, - "pad-ix", G_TYPE_UINT, this_pad_stats->index, - "elem-ix", G_TYPE_UINT, this_elem_stats->index, - "peer-pad-ix", G_TYPE_UINT, that_pad_stats->index, - "peer-elem-ix", G_TYPE_UINT, that_elem_stats->index, - "buffer-size", G_TYPE_UINT, gst_buffer_get_size (buf), - "buffer-pts", G_TYPE_UINT64, GST_BUFFER_PTS (buf), - "buffer-dts", G_TYPE_UINT64, GST_BUFFER_DTS (buf), - "buffer-duration", G_TYPE_UINT64, GST_BUFFER_DURATION (buf), - "buffer-flags", GST_TYPE_BUFFER_FLAGS, GST_BUFFER_FLAGS (buf), - /* - scheduling-jitter: for this we need the last_ts on the pad - */ - NULL)); + gst_tracer_record_log (tr_buffer, (guint64) g_thread_self (), elapsed, + this_pad_stats->index, this_elem_stats->index, that_pad_stats->index, + that_elem_stats->index, gst_buffer_get_size (buf), GST_BUFFER_PTS (buf), + GST_BUFFER_DTS (buf), GST_BUFFER_DURATION (buf), GST_BUFFER_FLAGS (buf)); } static void do_query_stats (GstStatsTracer * self, GstPad * this_pad, GstPadStats * this_pad_stats, GstPad * that_pad, GstPadStats * that_pad_stats, GstQuery * qry, GstClockTime elapsed, - gboolean res, gboolean is_post) + gboolean have_res, gboolean res) { GstElement *this_elem = get_real_pad_parent (this_pad); GstElementStats *this_elem_stats = get_element_stats (self, this_elem); GstElement *that_elem = get_real_pad_parent (that_pad); GstElementStats *that_elem_stats = get_element_stats (self, that_elem); - GstStructure *s; - - s = gst_structure_new ("query", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, elapsed, - "pad-ix", G_TYPE_UINT, this_pad_stats->index, - "elem-ix", G_TYPE_UINT, this_elem_stats->index, - "peer-pad-ix", G_TYPE_UINT, that_pad_stats->index, - "peer-elem-ix", G_TYPE_UINT, that_elem_stats->index, - "name", G_TYPE_STRING, GST_QUERY_TYPE_NAME (qry), - "structure", GST_TYPE_STRUCTURE, gst_query_get_structure (qry), NULL); - if (is_post) { - gst_structure_set (s, "res", G_TYPE_BOOLEAN, res, NULL); - } - gst_tracer_log_trace (s); + + gst_tracer_record_log (tr_query, (guint64) g_thread_self (), elapsed, + this_pad_stats->index, this_elem_stats->index, that_pad_stats->index, + that_elem_stats->index, GST_QUERY_TYPE_NAME (qry), + gst_query_get_structure (qry), have_res, res); } static void @@ -473,12 +449,8 @@ do_push_event_pre (GstStatsTracer * self, guint64 ts, GstPad * pad, GstPadStats *pad_stats = get_pad_stats (self, pad); elem_stats->last_ts = ts; - gst_tracer_log_trace (gst_structure_new ("event", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, ts, - "pad-ix", G_TYPE_UINT, pad_stats->index, - "elem-ix", G_TYPE_UINT, elem_stats->index, - "name", G_TYPE_STRING, GST_EVENT_TYPE_NAME (ev), NULL)); + gst_tracer_record_log (tr_event, (guint64) g_thread_self (), ts, + pad_stats->index, elem_stats->index, GST_EVENT_TYPE_NAME (ev)); } static void @@ -487,19 +459,11 @@ do_post_message_pre (GstStatsTracer * self, guint64 ts, GstElement * elem, { GstElementStats *stats = get_element_stats (self, elem); const GstStructure *msg_s = gst_message_get_structure (msg); - GstStructure *s; stats->last_ts = ts; - - s = gst_structure_new ("message", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, ts, - "elem-ix", G_TYPE_UINT, stats->index, - "name", G_TYPE_STRING, GST_MESSAGE_TYPE_NAME (msg), NULL); - if (msg_s) { - gst_structure_set (s, "structure", GST_TYPE_STRUCTURE, msg_s, NULL); - } - gst_tracer_log_trace (s); + gst_tracer_record_log (tr_message, (guint64) g_thread_self (), ts, + stats->index, GST_MESSAGE_TYPE_NAME (msg), + (msg_s ? msg_s : gst_structure_new_empty ("dummy"))); } static void @@ -518,11 +482,8 @@ do_element_query_pre (GstStatsTracer * self, guint64 ts, GstElement * elem, GstElementStats *stats = get_element_stats (self, elem); stats->last_ts = ts; - gst_tracer_log_trace (gst_structure_new ("element-query", - "thread-id", G_TYPE_UINT, GPOINTER_TO_UINT (g_thread_self ()), - "ts", G_TYPE_UINT64, ts, - "elem-ix", G_TYPE_UINT, stats->index, - "name", G_TYPE_STRING, GST_QUERY_TYPE_NAME (qry), NULL)); + gst_tracer_record_log (tr_element_query, (guint64) g_thread_self (), ts, + stats->index, GST_QUERY_TYPE_NAME (qry)); } static void @@ -546,7 +507,7 @@ do_query_post (GstStatsTracer * self, guint64 ts, GstPad * this_pad, GstPadStats *that_pad_stats = get_pad_stats (self, that_pad); do_query_stats (self, this_pad, this_pad_stats, that_pad, that_pad_stats, - qry, ts, res, TRUE); + qry, ts, TRUE, res); } /* tracer class */ @@ -556,20 +517,29 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) { /* announce trace formats */ /* *INDENT-OFF* */ - gst_tracer_log_trace (gst_structure_new ("buffer.class", + tr_buffer = gst_tracer_record_new (gst_structure_new ("buffer.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "pad-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "peer-pad-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "peer-element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "buffer-size", GST_TYPE_STRUCTURE, gst_structure_new ("value", @@ -595,14 +565,21 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) NULL), /* TODO(ensonic): "buffer-flags" */ NULL)); - gst_tracer_log_trace (gst_structure_new ("event.class", + tr_event = gst_tracer_record_new (gst_structure_new ("event.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "pad-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", @@ -611,11 +588,17 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) "flags", G_TYPE_STRING, "", /* TODO: use gflags */ NULL), NULL)); - gst_tracer_log_trace (gst_structure_new ("message.class", + tr_message = gst_tracer_record_new (gst_structure_new ("message.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", @@ -628,11 +611,18 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) "description", G_TYPE_STRING, "message structure", NULL), NULL)); - gst_tracer_log_trace (gst_structure_new ("element-query.class", + tr_element_query = gst_tracer_record_new (gst_structure_new ( + "element-query.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", @@ -641,20 +631,29 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) "flags", G_TYPE_STRING, "", /* TODO: use gflags */ NULL), NULL)); - gst_tracer_log_trace (gst_structure_new ("query.class", + tr_query = gst_tracer_record_new (gst_structure_new ("query.class", "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), "pad-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "peer-pad-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ NULL), "peer-element-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ NULL), "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", @@ -667,8 +666,81 @@ gst_stats_tracer_class_init (GstStatsTracerClass * klass) "description", G_TYPE_STRING, "query structure", "flags", G_TYPE_STRING, "", /* TODO: use gflags */ NULL), + "have-res", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_BOOLEAN, + "description", G_TYPE_STRING, "have query result", + NULL), + "res", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_BOOLEAN, + "description", G_TYPE_STRING, "query result", + NULL), /* TODO(ensonic): "buffer-flags" */ NULL)); + tr_new_element = gst_tracer_record_new (gst_structure_new ( + "new-element.class", + "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ + NULL), + "ts", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "description", G_TYPE_STRING, "event ts", + NULL), + "ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, + "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ + NULL), + "parent-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, + "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ + NULL), + "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_STRING, + "description", G_TYPE_STRING, "name of the element", + "flags", G_TYPE_STRING, "", /* TODO: use gflags */ + NULL), + "type", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_STRING, + "description", G_TYPE_STRING, "type name of the element", + "flags", G_TYPE_STRING, "", /* TODO: use gflags */ + NULL), + "is-bin", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_BOOLEAN, + "description", G_TYPE_STRING, "is element a bin", + NULL), + NULL)); + tr_new_pad = gst_tracer_record_new (gst_structure_new ("new-pad.class", + "thread-id", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT64, + "related-to", G_TYPE_STRING, "thread", /* TODO use genum */ + NULL), + "ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, + "related-to", G_TYPE_STRING, "pad", /* TODO: use genum */ + NULL), + "parent-ix", GST_TYPE_STRUCTURE, gst_structure_new ("scope", + "type", G_TYPE_GTYPE, G_TYPE_UINT, + "related-to", G_TYPE_STRING, "element", /* TODO: use genum */ + NULL), + "name", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_STRING, + "description", G_TYPE_STRING, "name of the pad", + "flags", G_TYPE_STRING, "", /* TODO: use gflags */ + NULL), + "type", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_STRING, + "description", G_TYPE_STRING, "type name of the pad", + "flags", G_TYPE_STRING, "", /* TODO: use gflags */ + NULL), + "is-ghostpad", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, G_TYPE_BOOLEAN, + "description", G_TYPE_STRING, "is pad a ghostpad", + NULL), + "pad-direction", GST_TYPE_STRUCTURE, gst_structure_new ("value", + "type", G_TYPE_GTYPE, GST_TYPE_PAD_DIRECTION, + "description", G_TYPE_STRING, "ipad direction", + NULL), + NULL)); /* *INDENT-ON* */ } |