mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-03 15:06:34 +00:00
tests: test videotestsrc in reverse playback
https://bugzilla.gnome.org/show_bug.cgi?id=701813
This commit is contained in:
parent
866f132821
commit
8bcd1a2f8d
1 changed files with 62 additions and 0 deletions
|
@ -366,6 +366,67 @@ GST_START_TEST (test_rgb_formats)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
eos_watch (GstBus * bus, GstMessage * message, GMainLoop * loop)
|
||||||
|
{
|
||||||
|
if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_EOS) {
|
||||||
|
g_main_loop_quit (loop);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_START_TEST (test_backward_playback)
|
||||||
|
{
|
||||||
|
GstBus *bus;
|
||||||
|
GstElement *bin;
|
||||||
|
GError *error = NULL;
|
||||||
|
GMainLoop *loop;
|
||||||
|
guint bus_watch = 0;
|
||||||
|
GstStateChangeReturn ret;
|
||||||
|
|
||||||
|
bin = gst_parse_launch ("videotestsrc ! fakesink name=sink", &error);
|
||||||
|
|
||||||
|
/* run until we receive EOS */
|
||||||
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
bus = gst_element_get_bus (bin);
|
||||||
|
bus_watch = gst_bus_add_watch (bus, (GstBusFunc) eos_watch, loop);
|
||||||
|
gst_object_unref (bus);
|
||||||
|
|
||||||
|
|
||||||
|
ret = gst_element_set_state (bin, GST_STATE_PAUSED);
|
||||||
|
|
||||||
|
if (ret == GST_STATE_CHANGE_ASYNC) {
|
||||||
|
ret = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
|
||||||
|
fail_if (ret != GST_STATE_CHANGE_SUCCESS, "Could not start test pipeline");
|
||||||
|
}
|
||||||
|
|
||||||
|
gst_element_seek (bin, -1.0, GST_FORMAT_TIME,
|
||||||
|
GST_SEEK_FLAG_ACCURATE | GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET,
|
||||||
|
0, GST_SEEK_TYPE_SET, 1 * GST_SECOND);
|
||||||
|
|
||||||
|
ret = gst_element_set_state (bin, GST_STATE_PLAYING);
|
||||||
|
fail_if (ret == GST_STATE_CHANGE_FAILURE, "Could not start test pipeline");
|
||||||
|
if (ret == GST_STATE_CHANGE_ASYNC) {
|
||||||
|
ret = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
|
||||||
|
fail_if (ret != GST_STATE_CHANGE_SUCCESS, "Could not start test pipeline");
|
||||||
|
}
|
||||||
|
g_main_loop_run (loop);
|
||||||
|
|
||||||
|
ret = gst_element_set_state (bin, GST_STATE_NULL);
|
||||||
|
fail_if (ret == GST_STATE_CHANGE_FAILURE, "Could not stop test pipeline");
|
||||||
|
if (ret == GST_STATE_CHANGE_ASYNC) {
|
||||||
|
ret = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
|
||||||
|
fail_if (ret != GST_STATE_CHANGE_SUCCESS, "Could not stop test pipeline");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
g_main_loop_unref (loop);
|
||||||
|
g_source_remove (bus_watch);
|
||||||
|
gst_object_unref (bin);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
|
|
||||||
/* FIXME: add tests for YUV formats */
|
/* FIXME: add tests for YUV formats */
|
||||||
|
|
||||||
|
@ -386,6 +447,7 @@ videotestsrc_suite (void)
|
||||||
|
|
||||||
tcase_add_test (tc_chain, test_all_patterns);
|
tcase_add_test (tc_chain, test_all_patterns);
|
||||||
tcase_add_test (tc_chain, test_rgb_formats);
|
tcase_add_test (tc_chain, test_rgb_formats);
|
||||||
|
tcase_add_test (tc_chain, test_backward_playback);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue