summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2010-10-01 10:38:29 +0300
committerStefan Kost <ensonic@users.sf.net>2010-10-01 10:38:29 +0300
commit61ba43f8732f407e1d069a8f16c2bad8a6998acb (patch)
treea2b346c61510266d4f45becbbc6dda7445a63718
parentf0bfbfe57b531dfd64df1a521ed6291568d4521a (diff)
ui: more statistic details
Log ghost pad flag from tracelib. In UI show number of ghost+proxy pads. For the number always show current and max.
-rw-r--r--src/gsttracelib.c20
-rw-r--r--src/ui/log-buffer.c50
-rw-r--r--src/ui/log-buffer.h5
-rw-r--r--src/ui/main-window.c25
4 files changed, 71 insertions, 29 deletions
diff --git a/src/gsttracelib.c b/src/gsttracelib.c
index 268bcda..1881cde 100644
--- a/src/gsttracelib.c
+++ b/src/gsttracelib.c
@@ -642,7 +642,7 @@ _check_ghost_pad_proxy (GstGhostPad *gpad, GstPad *newtarget, GstElement *elemen
if(newtarget) {
_log_entry(
- "topo_element_add %" GST_TIME_FORMAT " %lf %u %s %u %s\n",
+ "topo_element_add %" GST_TIME_FORMAT " %lf %u %s %u %s 1\n",
GST_TIME_ARGS (elapsed), GSTTL_TIME_AS_SECOND (elapsed),
elem_stats->index, elem_stats->name, ppad_stats->index, ppad_stats->name);
_log_entry(
@@ -657,7 +657,7 @@ _check_ghost_pad_proxy (GstGhostPad *gpad, GstPad *newtarget, GstElement *elemen
srcpad_stats->index, srcpad_stats->name,
sinkpad_stats->index, sinkpad_stats->name);
_log_entry(
- "topo_element_rem %" GST_TIME_FORMAT " %lf %u %s %u %s\n",
+ "topo_element_rem %" GST_TIME_FORMAT " %lf %u %s %u %s 1\n",
GST_TIME_ARGS (elapsed), GSTTL_TIME_AS_SECOND (elapsed),
elem_stats->index, elem_stats->name, ppad_stats->index, ppad_stats->name);
gst_object_unref (target);
@@ -1505,13 +1505,15 @@ gst_element_add_pad (GstElement *element, GstPad *pad)
gboolean ret;
if (gsttl_do_log_topo) {
+ gboolean is_ghost = GST_IS_GHOST_PAD (pad);
GsttlElementStats *elem_stats = GST_IS_BIN (element) ? _get_bin_stats (element) : _get_element_stats (element);
- GsttlPadStats *pad_stats = GST_IS_GHOST_PAD (pad) ? _get_ghost_pad_stats (pad) : _get_pad_stats (pad);
+ GsttlPadStats *pad_stats = is_ghost ? _get_ghost_pad_stats (pad) : _get_pad_stats (pad);
_log_entry(
- "topo_element_add %" GST_TIME_FORMAT " %lf %u %s %u %s\n",
+ "topo_element_add %" GST_TIME_FORMAT " %lf %u %s %u %s %d\n",
GST_TIME_ARGS (elapsed), GSTTL_TIME_AS_SECOND (elapsed),
- elem_stats->index, elem_stats->name, pad_stats->index, pad_stats->name);
+ elem_stats->index, elem_stats->name, pad_stats->index, pad_stats->name,
+ is_ghost);
}
_log_common(elapsed);
@@ -1541,13 +1543,15 @@ gst_element_remove_pad (GstElement *element, GstPad *pad)
gboolean ret;
if (gsttl_do_log_topo) {
+ gboolean is_ghost = GST_IS_GHOST_PAD (pad);
GsttlElementStats *elem_stats = GST_IS_BIN (element) ? _get_bin_stats (element) : _get_element_stats (element);
- GsttlPadStats *pad_stats = GST_IS_GHOST_PAD (pad) ? _get_ghost_pad_stats (pad) : _get_pad_stats (pad);
+ GsttlPadStats *pad_stats = is_ghost ? _get_ghost_pad_stats (pad) : _get_pad_stats (pad);
_log_entry(
- "topo_element_rem %" GST_TIME_FORMAT " %lf %u %s %u %s\n",
+ "topo_element_rem %" GST_TIME_FORMAT " %lf %u %s %u %s %d\n",
GST_TIME_ARGS (elapsed), GSTTL_TIME_AS_SECOND (elapsed),
- elem_stats->index, elem_stats->name, pad_stats->index, pad_stats->name);
+ elem_stats->index, elem_stats->name, pad_stats->index, pad_stats->name,
+ is_ghost);
}
_log_common(elapsed);
diff --git a/src/ui/log-buffer.c b/src/ui/log-buffer.c
index def43d3..36e46ce 100644
--- a/src/ui/log-buffer.c
+++ b/src/ui/log-buffer.c
@@ -64,7 +64,10 @@ struct _GstTLLogBufferPrivate {
gdouble base_ts;
/* statistics */
- guint ct_bins, ct_elems, ct_pads;
+ guint num_bins_current, num_bins_total;
+ guint num_elems_current, num_elems_total;
+ guint num_pads_current, num_pads_total;
+ guint num_gppads_current, num_gppads_total;
};
static guint signals[LAST_SIGNAL] = {0,};
@@ -221,11 +224,15 @@ add_log_line (GstTLLogBuffer *self, gchar *line)
ev->data.topo_bin.elem_name = g_ptr_array_set (self->priv->element_names, ev->data.topo_bin.elem_ix, values[6]);
if(ev->data.topo_bin.is_bin) {
- self->priv->ct_bins++;
- ev->data.topo_bin.accum = self->priv->ct_bins;
+ self->priv->num_bins_total++;
+ self->priv->num_bins_current++;
+ ev->data.topo_bin.num_total = self->priv->num_bins_total;
+ ev->data.topo_bin.num_current = self->priv->num_bins_current;
} else {
- self->priv->ct_elems++;
- ev->data.topo_bin.accum = self->priv->ct_elems;
+ self->priv->num_elems_total++;
+ self->priv->num_elems_current++;
+ ev->data.topo_bin.num_total = self->priv->num_elems_total;
+ ev->data.topo_bin.num_current = self->priv->num_elems_current;
}
} else if(!strcmp (&values[0][5], "bin_rem") && ix >= 7) {
ev->qkey = log_event_type_topo_bin_rem;
@@ -236,34 +243,49 @@ add_log_line (GstTLLogBuffer *self, gchar *line)
ev->data.topo_bin.bin_name = g_ptr_array_set (self->priv->element_names, ev->data.topo_bin.bin_ix, values[4]);
ev->data.topo_bin.elem_name = g_ptr_array_set (self->priv->element_names, ev->data.topo_bin.elem_ix, values[6]);
- // this would need to know wheter its a bin or element
if(ev->data.topo_bin.is_bin) {
- self->priv->ct_bins--;
- ev->data.topo_bin.accum = self->priv->ct_bins;
+ self->priv->num_bins_current--;
+ ev->data.topo_bin.num_current = self->priv->num_bins_current;
} else {
- self->priv->ct_elems--;
- ev->data.topo_bin.accum = self->priv->ct_elems;
+ self->priv->num_elems_current--;
+ ev->data.topo_bin.num_current = self->priv->num_elems_current;
}
} else if(!strcmp (&values[0][5], "element_add") && ix >= 6) {
ev->qkey = log_event_type_topo_element_add;
ev->data.topo_elem.elem_ix = atoi(values[3]);
ev->data.topo_elem.pad_ix = atoi(values[5]);
+ ev->data.topo_elem.is_ghost = atoi(values[7]);
ev->data.topo_elem.elem_name = g_ptr_array_set (self->priv->element_names, ev->data.topo_elem.elem_ix, values[4]);
ev->data.topo_elem.pad_name = g_ptr_array_set (self->priv->pad_names, ev->data.topo_elem.pad_ix, values[6]);
- self->priv->ct_pads++;
- ev->data.topo_elem.accum = self->priv->ct_pads;
+ if(ev->data.topo_elem.is_ghost) {
+ self->priv->num_gppads_total++;
+ self->priv->num_gppads_current++;
+ ev->data.topo_elem.num_total = self->priv->num_gppads_total;
+ ev->data.topo_elem.num_current = self->priv->num_gppads_current;
+ } else {
+ self->priv->num_pads_total++;
+ self->priv->num_pads_current++;
+ ev->data.topo_elem.num_total = self->priv->num_pads_total;
+ ev->data.topo_elem.num_current = self->priv->num_pads_current;
+ }
} else if(!strcmp (&values[0][5], "element_rem") && ix >= 6) {
ev->qkey = log_event_type_topo_element_rem;
ev->data.topo_elem.elem_ix = atoi(values[3]);
ev->data.topo_elem.pad_ix = atoi(values[5]);
+ ev->data.topo_elem.is_ghost = atoi(values[7]);
ev->data.topo_elem.elem_name = g_ptr_array_set (self->priv->element_names, ev->data.topo_elem.elem_ix, values[4]);
ev->data.topo_elem.pad_name = g_ptr_array_set (self->priv->pad_names, ev->data.topo_elem.pad_ix, values[6]);
- self->priv->ct_pads--;
- ev->data.topo_elem.accum = self->priv->ct_pads;
+ if(ev->data.topo_elem.is_ghost) {
+ self->priv->num_gppads_current--;
+ ev->data.topo_elem.num_current = self->priv->num_gppads_current;
+ } else {
+ self->priv->num_pads_current--;
+ ev->data.topo_elem.num_current = self->priv->num_pads_current;
+ }
} else if(!strcmp (&values[0][5], "link_add") && ix >= 6) {
ev->qkey = log_event_type_topo_link_add;
ev->data.topo_link.src_pad_ix = atoi(values[3]);
diff --git a/src/ui/log-buffer.h b/src/ui/log-buffer.h
index afbdf18..0c49117 100644
--- a/src/ui/log-buffer.h
+++ b/src/ui/log-buffer.h
@@ -60,7 +60,7 @@ typedef struct {
struct {
guint bin_ix;
guint elem_ix;
- guint accum;
+ guint num_current, num_total;
gboolean is_bin;
gchar *bin_name;
gchar *elem_name;
@@ -68,7 +68,8 @@ typedef struct {
struct {
guint elem_ix;
guint pad_ix;
- guint accum;
+ guint num_current, num_total;
+ gboolean is_ghost;
gchar *elem_name;
gchar *pad_name;
} topo_elem;
diff --git a/src/ui/main-window.c b/src/ui/main-window.c
index e19677c..2e4c023 100644
--- a/src/ui/main-window.c
+++ b/src/ui/main-window.c
@@ -82,6 +82,7 @@ struct _GstTLMainWindowPrivate {
GtkLabel *running_time;
GtkProgressBar *cpu_load, *qos_prop;
GtkLabel *bin_ct_label, *elem_ct_label, *pad_ct_label;
+ GtkLabel *gppad_ct_label;
/* time control widgets */
GtkToggleButton *record_button, *replay_button;
@@ -659,11 +660,11 @@ on_new_log_event (GstTLLogBuffer *lb, GstTLLogEvent *ev, gpointer user_data)
GstTLElement *item;
// update statistics
- sprintf (fmt, "%u", ev->data.topo_bin.accum);
+ sprintf (fmt, "%u / %u", ev->data.topo_bin.num_current, ev->data.topo_bin.num_total);
if (ev->data.topo_bin.is_bin) {
- gtk_label_set_text (self->priv->elem_ct_label, fmt);
- } else {
gtk_label_set_text (self->priv->bin_ct_label, fmt);
+ } else {
+ gtk_label_set_text (self->priv->elem_ct_label, fmt);
}
// update parent
@@ -707,8 +708,12 @@ on_new_log_event (GstTLLogBuffer *lb, GstTLLogEvent *ev, gpointer user_data)
GstTLElement *pitem;
// update statistics
- sprintf (fmt, "%u", ev->data.topo_elem.accum);
- gtk_label_set_text (self->priv->pad_ct_label, fmt);
+ sprintf (fmt, "%u / %u", ev->data.topo_elem.num_current, ev->data.topo_elem.num_total);
+ if (ev->data.topo_elem.is_ghost) {
+ gtk_label_set_text (self->priv->gppad_ct_label, fmt);
+ } else {
+ gtk_label_set_text (self->priv->pad_ct_label, fmt);
+ }
// update parent
if (!(pitem = g_ptr_array_check (earr, ev->data.topo_elem.elem_ix))) {
@@ -1132,7 +1137,17 @@ gsttl_main_window_init (GstTLMainWindow *self)
gtk_label_set_single_line_mode (self->priv->pad_ct_label, TRUE);
gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->pad_ct_label),
3, 4, 2, 3, GTK_FILL, GTK_FILL, 0, 0);
+
+ /* third column */
+ gtk_table_attach (GTK_TABLE (stats), gtk_label_new (_("Ghost/ProxyPads")),
+ 4, 5, 0, 1, GTK_FILL, GTK_FILL, 6, 0);
+ self->priv->gppad_ct_label = GTK_LABEL (gtk_label_new ("0"));
+ gtk_label_set_single_line_mode (self->priv->gppad_ct_label, TRUE);
+ gtk_table_attach (GTK_TABLE (stats), GTK_WIDGET (self->priv->gppad_ct_label),
+ 5, 6, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
+
+
gtk_box_pack_start (GTK_BOX (box), stats, FALSE, FALSE, 3);
}