From 669ce62ea292b0f1341cbcf4034640d978c0fd4e Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Sun, 28 Apr 2013 00:22:42 +0200 Subject: [PATCH] test-utils: Add test file generation code. --- tests/check/ges/test-utils.c | 41 ++++++++++++++++++++++++++++++++++++ tests/check/ges/test-utils.h | 5 +++++ 2 files changed, 46 insertions(+) diff --git a/tests/check/ges/test-utils.c b/tests/check/ges/test-utils.c index a3d6fa0878..b188235f51 100644 --- a/tests/check/ges/test-utils.c +++ b/tests/check/ges/test-utils.c @@ -104,7 +104,48 @@ ges_test_create_pipeline (GESTimeline * timeline) gst_element_factory_make ("fakesink", "test-videofakesink"), NULL); return pipeline; +} +void +ges_generate_test_file_audio_video (const gchar * filedest, + const gchar * audio_enc, + const gchar * video_enc, + const gchar * mux, const gchar * video_pattern, const gchar * audio_wave) +{ + GError *error = NULL; + GstElement *pipeline; + GstBus *bus; + GstMessage *message; + gchar *pipeline_str; + gboolean done = FALSE; + + if (g_file_test (filedest, G_FILE_TEST_EXISTS)) { + GST_INFO ("The file %s already existed.", filedest); + return; + } + + pipeline_str = g_strdup_printf ("audiotestsrc num-buffers=430 wave=%s " + "! %s ! %s name=m ! filesink location= %s/%s " + "videotestsrc pattern=%s num-buffers=300 ! %s ! m.", + audio_wave, audio_enc, mux, g_get_current_dir (), + filedest, video_pattern, video_enc); + + pipeline = gst_parse_launch (pipeline_str, &error); + + bus = gst_element_get_bus (GST_ELEMENT (pipeline)); + gst_bus_add_signal_watch (bus); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + + while (!done) { + message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_CLOCK_TIME_NONE); + if (GST_MESSAGE_TYPE (message) & GST_MESSAGE_EOS) + done = TRUE; + else if (GST_MESSAGE_TYPE (message) & GST_MESSAGE_ERROR) { + done = TRUE; + g_print ("Error"); + } + } } static void diff --git a/tests/check/ges/test-utils.h b/tests/check/ges/test-utils.h index e3f3431782..dbc0f4b12c 100644 --- a/tests/check/ges/test-utils.h +++ b/tests/check/ges/test-utils.h @@ -37,6 +37,11 @@ gchar * ges_test_get_audio_video_uri (void); gchar * ges_test_get_image_uri (void); gchar * ges_test_file_uri (const gchar *filename); void check_destroyed (GObject *object_to_unref, GObject *first_object, ...) G_GNUC_NULL_TERMINATED; +void +ges_generate_test_file_audio_video (const gchar * filedest, + const gchar * audio_enc, + const gchar * video_enc, + const gchar * mux, const gchar * video_pattern, const gchar * audio_wave); #define gnl_object_check(gnlobj, start, duration, mstart, mduration, priority, active) { \ guint64 pstart, pdur, inpoint, pprio, pact; \