diff options
author | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2010-03-12 11:28:51 -0300 |
---|---|---|
committer | Thiago Santos <thiago.sousa.santos@collabora.co.uk> | 2010-03-12 13:04:26 -0300 |
commit | 0b441d7611f283acd5c85b0572931f99bc8f4350 (patch) | |
tree | 8647bc221ffa4fc451417ab7214f7e874e475bc6 /tests | |
parent | ca30c1d915d54466843de88380f064034f87399f (diff) | |
download | gstreamer-plugins-bad-0b441d7611f283acd5c85b0572931f99bc8f4350.tar.gz |
tests: tagschecking: Improvements and new geo-location tests
Makes some improvements to tagschecking.c, making it use
fakesrc instead of videotestsrc and allowing to set input
caps so that more muxers can be used. Previously we could
only use those that accepted raw video caps.
Also adds some tests for geo-location tags
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/pipelines/tagschecking.c | 64 |
1 files changed, 51 insertions, 13 deletions
diff --git a/tests/check/pipelines/tagschecking.c b/tests/check/pipelines/tagschecking.c index 770b16400..20bdcc860 100644 --- a/tests/check/pipelines/tagschecking.c +++ b/tests/check/pipelines/tagschecking.c @@ -70,29 +70,32 @@ bus_handler (GstBus * bus, GstMessage * message, gpointer data) return TRUE; } +/* + * Creates a pipeline in the form: + * fakesrc num-buffers=1 ! caps ! muxer ! filesink location=file + * + * And sets the tags in tag_str into the muxer via tagsetter. + */ static void -test_mux_tags (const gchar * tag_str, const gchar * muxer, const gchar * file) +test_mux_tags (const gchar * tag_str, const gchar * caps, + const gchar * muxer, const gchar * file) { GstElement *pipeline; GstBus *bus; GMainLoop *loop; GstTagList *sent_tags; - GstElement *videotestsrc, *mux; + GstElement *mux; GstTagSetter *setter; gchar *launch_str; GST_DEBUG ("testing xmp muxing on : %s", muxer); - launch_str = g_strdup_printf ("videotestsrc name=src ! %s name=mux ! " - "filesink location=%s name=sink", muxer, file); + launch_str = g_strdup_printf ("fakesrc num-buffers=1 ! %s ! %s name=mux ! " + "filesink location=%s name=sink", caps, muxer, file); pipeline = gst_parse_launch (launch_str, NULL); g_free (launch_str); fail_unless (pipeline != NULL); - videotestsrc = gst_bin_get_by_name (GST_BIN (pipeline), "src"); - fail_unless (videotestsrc != NULL); - g_object_set (G_OBJECT (videotestsrc), "num-buffers", 1, NULL); - mux = gst_bin_get_by_name (GST_BIN (pipeline), "mux"); fail_unless (mux != NULL); @@ -119,10 +122,16 @@ test_mux_tags (const gchar * tag_str, const gchar * muxer, const gchar * file) g_main_loop_unref (loop); g_object_unref (mux); - g_object_unref (videotestsrc); g_object_unref (pipeline); } +/* + * Makes a pipeline in the form: + * filesrc location=file ! demuxer ! fakesink + * + * And gets the tags that are posted on the bus to compare + * with the tags in 'tag_str' + */ static void test_demux_tags (const gchar * tag_str, const gchar * demuxer, const gchar * file) @@ -216,8 +225,16 @@ test_demux_tags (const gchar * tag_str, const gchar * demuxer, g_object_unref (pipeline); } +/* + * Tests if the muxer/demuxer pair can serialize the tags in 'tag_str' + * to a file and recover them correctly. + * + * 'caps' are used to assure the muxer accepts the fake buffer fakesrc + * will send to it. + */ static void -test_tags (const gchar * tag_str, const gchar * muxer, const gchar * demuxer) +test_tags (const gchar * tag_str, const gchar * caps, const gchar * muxer, + const gchar * demuxer) { gchar *tmpfile; gchar *tmp; @@ -227,13 +244,33 @@ test_tags (const gchar * tag_str, const gchar * muxer, const gchar * demuxer) g_free (tmp); GST_DEBUG ("testing tags : %s", tag_str); - test_mux_tags (tag_str, muxer, tmpfile); + test_mux_tags (tag_str, caps, muxer, tmpfile); test_demux_tags (tag_str, demuxer, tmpfile); } +#define H264_CAPS "video/x-h264, width=(int)320, height=(int)240," \ + " framerate=(fraction)30/1, codec_data=(buffer)" \ + "01401592ffe10017674d401592540a0fd8088000000300" \ + "8000001e478b175001000468ee3c80, stream-format=(string)avc" + GST_START_TEST (test_common_tags) { - test_tags ("taglist,title=(string)test_title", "qtmux", "qtdemux"); + test_tags ("taglist,title=(string)test_title", H264_CAPS, "qtmux", "qtdemux"); +} + +GST_END_TEST; + +GST_START_TEST (test_geo_location_tags) +{ + test_tags ("taglist,geo-location-country=Brazil," + "geo-location-city=\"Campina Grande\"," + "geo-location-sublocation=Bodocongo", H264_CAPS, "qtmux", "qtdemux"); + test_tags ("taglist,geo-location-country=Brazil," + "geo-location-city=\"Campina Grande\"," + "geo-location-sublocation=Bodocongo", H264_CAPS, "mp4mux", "qtdemux"); + test_tags ("taglist,geo-location-country=Brazil," + "geo-location-city=\"Campina Grande\"," + "geo-location-sublocation=Bodocongo", H264_CAPS, "gppmux", "qtdemux"); } GST_END_TEST; @@ -241,7 +278,7 @@ GST_END_TEST; Suite * metadata_suite (void) { - Suite *s = suite_create ("XMP"); + Suite *s = suite_create ("tagschecking"); TCase *tc_chain = tcase_create ("general"); @@ -250,6 +287,7 @@ metadata_suite (void) suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_common_tags); + tcase_add_test (tc_chain, test_geo_location_tags); return s; } |