diff options
author | Stefan Kost <ensonic@users.sf.net> | 2010-10-01 10:38:29 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-10-01 10:38:29 +0300 |
commit | 61ba43f8732f407e1d069a8f16c2bad8a6998acb (patch) | |
tree | a2b346c61510266d4f45becbbc6dda7445a63718 | |
parent | f0bfbfe57b531dfd64df1a521ed6291568d4521a (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.c | 20 | ||||
-rw-r--r-- | src/ui/log-buffer.c | 50 | ||||
-rw-r--r-- | src/ui/log-buffer.h | 5 | ||||
-rw-r--r-- | src/ui/main-window.c | 25 |
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); } |