diff --git a/test/events/Makefile.am b/test/events/Makefile.am new file mode 100644 index 0000000000..f2300be1ac --- /dev/null +++ b/test/events/Makefile.am @@ -0,0 +1,4 @@ +noinst_PROGRAMS = seek + +LIBS += $(GST_LIBS) +CFLAGS += $(GST_CFLAGS) diff --git a/test/events/seek.c b/test/events/seek.c new file mode 100644 index 0000000000..89a6e27189 --- /dev/null +++ b/test/events/seek.c @@ -0,0 +1,68 @@ +#include + +int +main (int argc, char *argv[]) +{ + GstBin *bin; + GstElement *src, *sink; + GstPad *srcpad, *sinkpad; + +// _gst_plugin_spew = TRUE; + gst_init (&argc, &argv); + + bin = GST_BIN (gst_pipeline_new ("pipeline")); + g_return_val_if_fail (bin != NULL, -1); + + g_print ("--- creating src and sink elements\n"); + src = gst_elementfactory_make ("fakesrc", "src"); + g_return_val_if_fail (src != NULL, -1); + sink = gst_elementfactory_make ("fakesink", "sink"); + g_return_val_if_fail (sink != NULL, -1); + + g_print ("--- about to add the elements to the bin\n"); + gst_bin_add (bin, GST_ELEMENT (src)); + gst_bin_add (bin, GST_ELEMENT (sink)); + + g_print ("--- getting pads\n"); + srcpad = gst_element_get_pad (src, "src"); + g_return_val_if_fail (srcpad != NULL, -1); + sinkpad = gst_element_get_pad (sink, "sink"); + g_return_val_if_fail (srcpad != NULL, -1); + + g_print ("--- connecting\n"); + gst_pad_connect (srcpad, sinkpad); + + g_print ("--- setting up\n"); + gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING); + + g_print ("--- iterating\n"); + gst_bin_iterate (bin); + gst_bin_iterate (bin); + + g_print ("--- seek to 100\n"); + gst_pad_send_event (srcpad, gst_event_new_seek (GST_SEEK_ANY, 100, FALSE)); + + g_print ("--- seek done, iterating\n"); + gst_bin_iterate (bin); + gst_bin_iterate (bin); + + g_print ("--- seek to 200 with flush\n"); + gst_pad_send_event (srcpad, gst_event_new_seek (GST_SEEK_ANY, 200, TRUE)); + + g_print ("--- seek done, iterating\n"); + gst_bin_iterate (bin); + gst_bin_iterate (bin); + gst_bin_iterate (bin); + + g_print ("--- flush\n"); + gst_pad_send_event (srcpad, gst_event_new_flush ()); + + g_print ("--- flush done, iterating\n"); + gst_bin_iterate (bin); + gst_bin_iterate (bin); + + g_print ("--- cleaning up\n"); + gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL); + + return 0; +}