summaryrefslogtreecommitdiff
path: root/plugins/tracers
diff options
context:
space:
mode:
authorStefan Sauer <ensonic@users.sf.net>2016-01-12 14:59:04 +0100
committerStefan Sauer <ensonic@users.sf.net>2016-01-15 21:54:01 +0100
commit10b78d872b5a0050c8a4572267879b0adbb578f8 (patch)
treed49e466ba2cab09019fafbcffec6bed870a76f1b /plugins/tracers
parent7b49459f1ae42a08afff326567f028d1e583b960 (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.c14
-rw-r--r--plugins/tracers/gstrusage.c56
-rw-r--r--plugins/tracers/gststats.c228
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* */
}