* Copyright (C) 2013 Thiago Santos <thiago.sousa.santos@collabora.com>
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <stdlib.h>
#include <string.h>
#include <gst/gst.h>
#include <gst/qa/qa.h>
+static gboolean seek_tests = FALSE;
+static gboolean seek_done = FALSE;
+
+static GMainLoop *mainloop;
+static GstElement *pipeline;
+
static gboolean
bus_callback (GstBus * bus, GstMessage * message, gpointer data)
{
case GST_MESSAGE_EOS:
g_main_loop_quit (loop);
break;
+ case GST_MESSAGE_STATE_CHANGED:
+ {
+ GstState new_state;
+ if (GST_MESSAGE_SRC (message) == (GstObject *) pipeline) {
+ gst_message_parse_state_changed (message, NULL, &new_state, NULL);
+ if (new_state == GST_STATE_PLAYING) {
+ /* pipeline has started, issue seeking */
+ /* TODO define where to seek to with arguments? */
+ if (seek_tests && !seek_done) {
+ g_print ("Performing seek\n");
+ seek_done = TRUE;
+ gst_element_seek_simple (pipeline, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_FLUSH, 5 * GST_SECOND);
+ }
+ }
+ }
+ }
+ break;
default:
break;
}
{
GError *err = NULL;
GOptionEntry options[] = {
+ {"seek-test", '\0', 0, G_OPTION_ARG_NONE, &seek_tests,
+ "Perform the seeking use case", NULL},
{NULL}
};
GOptionContext *ctx;
- GMainLoop *mainloop;
gchar **argvn;
GstQaRunner *runner;
- GstElement *pipeline;
GstBus *bus;
ctx = g_option_context_new ("- runs QA tests for a pipeline.");
gst_bus_add_watch (bus, bus_callback, mainloop);
gst_object_unref (bus);
+ g_print ("Starting pipeline\n");
if (gst_element_set_state (pipeline,
GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
goto exit;