From 4620048e01a51d1e009766ef0a7bc989261b5ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 20 Jun 2014 18:34:44 +0100 Subject: [PATCH] benchmarks: capsnego: add --loops command line option And default to 50 loops. --- tests/benchmarks/capsnego.c | 45 +++++++++++++++---------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/tests/benchmarks/capsnego.c b/tests/benchmarks/capsnego.c index 053a938fbd..e035ddccfe 100644 --- a/tests/benchmarks/capsnego.c +++ b/tests/benchmarks/capsnego.c @@ -134,7 +134,7 @@ create_nodes (GstBin * bin, GstElement * sink, gint depth, gint children, } static void -event_loop (GstElement * bin, GstClockTime start) +event_loop (GstElement * bin) { GstBus *bus; GstMessage *msg = NULL; @@ -144,27 +144,11 @@ event_loop (GstElement * bin, GstClockTime start) while (running) { msg = gst_bus_poll (bus, - GST_MESSAGE_STATE_CHANGED | GST_MESSAGE_ERROR | GST_MESSAGE_WARNING, - -1); + GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR | GST_MESSAGE_WARNING, -1); switch (GST_MESSAGE_TYPE (msg)) { - case GST_MESSAGE_STATE_CHANGED: - if (GST_MESSAGE_SRC (msg) == (GstObject *) bin) { - GstState old_state, new_state; - GstClockTime end; - - gst_message_parse_state_changed (msg, &old_state, &new_state, NULL); - - end = gst_util_get_timestamp (); - g_print ("%" GST_TIME_FORMAT " state change on the bin: %s -> %s\n", - GST_TIME_ARGS (end - start), - gst_element_state_get_name (old_state), - gst_element_state_get_name (new_state)); - - if (old_state == GST_STATE_READY && new_state == GST_STATE_PAUSED) { - running = FALSE; - } - } + case GST_MESSAGE_ASYNC_DONE: + running = FALSE; break; case GST_MESSAGE_WARNING:{ GError *err = NULL; @@ -205,6 +189,7 @@ main (gint argc, gchar * argv[]) gint flavour = FLAVOUR_AUDIO; gint children = 3; gint depth = 4; + gint loops = 50; GOptionContext *ctx; GOptionEntry options[] = { @@ -212,15 +197,18 @@ main (gint argc, gchar * argv[]) "Number of children (branches on each level) (default: 3)", NULL}, {"depth", 'd', 0, G_OPTION_ARG_INT, &depth, "Depth of pipeline hierarchy tree (default: 4)", NULL}, - {"flavour", 0, 0, G_OPTION_ARG_STRING, &flavour_str, + {"flavour", 'f', 0, G_OPTION_ARG_STRING, &flavour_str, "Flavour (video|audio) controlling the kind of elements used " "(default: audio)", NULL}, + {"loops", 'l', 0, G_OPTION_ARG_INT, &loops, + "How many loops to run (default: 50)", NULL}, {NULL} }; GError *err = NULL; GstBin *bin; GstClockTime start, end; GstElement *sink, *new_sink; + gint i; g_set_prgname ("capsnego"); @@ -259,13 +247,16 @@ main (gint argc, gchar * argv[]) g_print ("starting pipeline\n"); gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY); GST_DEBUG_BIN_TO_DOT_FILE (bin, GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE, "capsnego"); - start = gst_util_get_timestamp (); - gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); - event_loop (GST_ELEMENT (bin), start); - end = gst_util_get_timestamp (); - g_print ("%" GST_TIME_FORMAT " reached paused\n", - GST_TIME_ARGS (end - start)); + start = gst_util_get_timestamp (); + for (i = 0; i < loops; ++i) { + gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); + event_loop (GST_ELEMENT (bin)); + gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY); + } + end = gst_util_get_timestamp (); + g_print ("%" GST_TIME_FORMAT " reached PAUSED state (%d loop iterations)\n", + GST_TIME_ARGS (end - start), loops); /* clean up */ Error: gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);