summaryrefslogtreecommitdiffstats
path: root/gst/avi
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-09-21 12:32:51 +0200
committerWim Taymans <wim@metal.(none)>2009-09-21 12:32:51 +0200
commit2f26ee4285db50304f1fc81f1426e0f56198b26c (patch)
treeb54139f063ead46420caa64a4ebd3a993830a7ce /gst/avi
parent50c41acdff0c54caefe026db1bc0aab704e917db (diff)
avi: add some performance measurements
Measure the performance of various index and header parsing steps to the PERFORMANCE debug category.
Diffstat (limited to 'gst/avi')
-rw-r--r--gst/avi/gstavidemux.c42
1 files changed, 38 insertions, 4 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 3dbc78f3..3a732531 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -54,6 +54,7 @@
GST_DEBUG_CATEGORY_STATIC (avidemux_debug);
#define GST_CAT_DEFAULT avidemux_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_PERFORMANCE);
GST_DEBUG_CATEGORY_EXTERN (GST_CAT_EVENT);
@@ -173,6 +174,7 @@ gst_avi_demux_class_init (GstAviDemuxClass * klass)
GST_DEBUG_CATEGORY_INIT (avidemux_debug, "avidemux",
0, "Demuxer for AVI streams");
+ GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE");
parent_class = g_type_class_peek_parent (klass);
@@ -862,6 +864,9 @@ static gboolean
gst_avi_demux_parse_file_header (GstElement * element, GstBuffer * buf)
{
guint32 doctype;
+ GstClockTime stamp;
+
+ stamp = gst_util_get_timestamp ();
/* riff_parse posts an error */
if (!gst_riff_parse_file_header (element, buf, &doctype))
@@ -870,6 +875,10 @@ gst_avi_demux_parse_file_header (GstElement * element, GstBuffer * buf)
if (doctype != GST_RIFF_RIFF_AVI)
goto not_avi;
+ stamp = gst_util_get_timestamp () - stamp;
+ GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "parsing header %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (stamp));
+
return TRUE;
/* ERRORS */
@@ -1993,10 +2002,10 @@ gst_avi_demux_parse_index (GstAviDemux * avi,
guint8 *data;
GList *entries_list = NULL;
guint i, num, n;
-
#ifndef GST_DISABLE_GST_DEBUG
gulong _nr_keyframes = 0;
#endif
+ GstClockTime stamp;
if (!buf || !GST_BUFFER_SIZE (buf)) {
*_entries_list = NULL;
@@ -2006,6 +2015,8 @@ gst_avi_demux_parse_index (GstAviDemux * avi,
return;
}
+ stamp = gst_util_get_timestamp ();
+
data = GST_BUFFER_DATA (buf);
num = GST_BUFFER_SIZE (buf) / sizeof (gst_riff_index_entry);
if (!(entries = g_try_new (gst_avi_index_entry, num)))
@@ -2133,6 +2144,11 @@ gst_avi_demux_parse_index (GstAviDemux * avi,
} else {
g_free (entries);
}
+
+ stamp = gst_util_get_timestamp () - stamp;
+ GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "parsing index %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (stamp));
+
return;
/* ERRORS */
@@ -2700,6 +2716,9 @@ gst_avi_demux_massage_index (GstAviDemux * avi,
guint i;
GList *node;
gint64 delay = G_GINT64_CONSTANT (0);
+ GstClockTime stamp;
+
+ stamp = gst_util_get_timestamp ();
GST_LOG_OBJECT (avi, "Starting index massage, nr_entries = %d",
list ? g_list_length (list) : 0);
@@ -2872,13 +2891,21 @@ gst_avi_demux_massage_index (GstAviDemux * avi,
#endif
GST_LOG_OBJECT (avi, "Index massaging done");
+
+ stamp = gst_util_get_timestamp () - stamp;
+
+ GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "massaging index %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (stamp));
+
return TRUE;
/* ERRORS */
out_of_mem:
- GST_WARNING_OBJECT (avi, "Out of memory for %" G_GSIZE_FORMAT " bytes",
- sizeof (gst_avi_index_entry) * avi->index_size);
- return FALSE;
+ {
+ GST_WARNING_OBJECT (avi, "Out of memory for %" G_GSIZE_FORMAT " bytes",
+ sizeof (gst_avi_index_entry) * avi->index_size);
+ return FALSE;
+ }
}
static void
@@ -3261,6 +3288,9 @@ gst_avi_demux_stream_header_pull (GstAviDemux * avi)
guint offset = 4;
gint64 stop;
GstElement *element = GST_ELEMENT_CAST (avi);
+ GstClockTime stamp;
+
+ stamp = gst_util_get_timestamp ();
/* the header consists of a 'hdrl' LIST tag */
res = gst_riff_read_chunk (element, avi->sinkpad, &avi->offset, &tag, &buf);
@@ -3492,6 +3522,10 @@ skipping_done:
(FALSE, avi->segment.rate, GST_FORMAT_TIME,
avi->segment.start, stop, avi->segment.start);
+ stamp = gst_util_get_timestamp () - stamp;
+ GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "pulling header %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (stamp));
+
/* at this point we know all the streams and we can signal the no more
* pads signal */
GST_DEBUG_OBJECT (avi, "signaling no more pads");