From d8ceb02149266be5e4a44be558a571f4e96bf3ef Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Wed, 30 Nov 2005 17:05:56 +0000 Subject: [PATCH] move location of test registry Original commit message from CVS: move location of test registry --- Makefile.am | 12 +- check/.gitignore | 1 - check/Makefile.am | 55 ---- check/clocks/.gitignore | 2 - check/clocks/selection.c | 71 ----- check/elements/.gitignore | 7 - check/elements/audioconvert.c | 315 ------------------- check/elements/audioresample.c | 247 --------------- check/elements/audiotestsrc.c | 142 --------- check/elements/videotestsrc.c | 143 --------- check/elements/volume.c | 302 ------------------ check/elements/vorbisdec.c | 260 ---------------- check/generic/.gitignore | 2 - check/generic/states.c | 109 ------- check/pipelines/.gitignore | 2 - check/pipelines/simple_launch_lines.c | 181 ----------- common | 2 +- configure.ac | 3 +- docs/libs/tmpl/gstaudio.sgml | 3 - docs/libs/tmpl/gstcolorbalance.sgml | 3 - docs/libs/tmpl/gstgconf.sgml | 3 - docs/libs/tmpl/gstmixer.sgml | 9 - docs/libs/tmpl/gstringbuffer.sgml | 3 - docs/libs/tmpl/gsttuner.sgml | 3 - docs/libs/tmpl/gstxoverlay.sgml | 3 - tests/check/Makefile.am | 8 +- testsuite/Makefile.am | 26 -- testsuite/alsa/.gitignore | 3 - testsuite/alsa/Makefile.am | 13 - testsuite/alsa/formats.c | 183 ----------- testsuite/alsa/sinesrc.c | 349 --------------------- testsuite/alsa/sinesrc.h | 89 ------ testsuite/alsa/srcstate.c | 95 ------ testsuite/alsa/state.c | 108 ------- testsuite/embed/Makefile.am | 7 - testsuite/embed/embed.c | 54 ---- testsuite/gst-lint | 571 ---------------------------------- 37 files changed, 9 insertions(+), 3380 deletions(-) delete mode 100644 check/.gitignore delete mode 100644 check/Makefile.am delete mode 100644 check/clocks/.gitignore delete mode 100644 check/clocks/selection.c delete mode 100644 check/elements/.gitignore delete mode 100644 check/elements/audioconvert.c delete mode 100644 check/elements/audioresample.c delete mode 100644 check/elements/audiotestsrc.c delete mode 100644 check/elements/videotestsrc.c delete mode 100644 check/elements/volume.c delete mode 100644 check/elements/vorbisdec.c delete mode 100644 check/generic/.gitignore delete mode 100644 check/generic/states.c delete mode 100644 check/pipelines/.gitignore delete mode 100644 check/pipelines/simple_launch_lines.c delete mode 100644 testsuite/Makefile.am delete mode 100644 testsuite/alsa/.gitignore delete mode 100644 testsuite/alsa/Makefile.am delete mode 100644 testsuite/alsa/formats.c delete mode 100644 testsuite/alsa/sinesrc.c delete mode 100644 testsuite/alsa/sinesrc.h delete mode 100644 testsuite/alsa/srcstate.c delete mode 100644 testsuite/alsa/state.c delete mode 100644 testsuite/embed/Makefile.am delete mode 100644 testsuite/embed/embed.c delete mode 100755 testsuite/gst-lint diff --git a/Makefile.am b/Makefile.am index 998f502..58b6ff0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,18 +12,11 @@ else SUBDIRS_EXAMPLES = endif -if HAVE_CHECK -SUBDIRS_CHECK = check -else -SUBDIRS_CHECK = -endif - SUBDIRS = \ gst-libs \ gst sys $(SUBDIRS_EXT) \ $(SUBDIRS_EXAMPLES) \ tools \ - $(SUBDIRS_CHECK) \ docs \ po \ common \ @@ -31,7 +24,6 @@ SUBDIRS = \ pkgconfig DIST_SUBDIRS = \ - check \ docs \ gst-libs \ gst sys ext \ @@ -55,7 +47,7 @@ include $(top_srcdir)/common/release.mak include $(top_srcdir)/common/po.mak check-valgrind: - cd check && make check-valgrind + cd tests/check && make check-valgrind check-torture: - cd check && make torture + cd tests/check && make torture diff --git a/check/.gitignore b/check/.gitignore deleted file mode 100644 index 5d45c6c..0000000 --- a/check/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test-registry.xml diff --git a/check/Makefile.am b/check/Makefile.am deleted file mode 100644 index 6dacfc6..0000000 --- a/check/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -include $(top_srcdir)/common/check.mak - -CHECK_REGISTRY = $(top_builddir)/check/test-registry.xml - -REGISTRY_ENVIRONMENT = \ - GST_REGISTRY=$(CHECK_REGISTRY) - -TESTS_ENVIRONMENT = \ - CK_DEFAULT_TIMEOUT=20 \ - $(REGISTRY_ENVIRONMENT) \ - GST_PLUGIN_SYSTEM_PATH= \ - GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_DIR) - -# ths core dumps of some machines have PIDs appended -CLEANFILES = core.* test-registry.xml - -clean-local: clean-local-check - -$(CHECK_REGISTRY): - $(TESTS_ENVIRONMENT) - -TESTS = $(check_PROGRAMS) - -if USE_VORBIS -check_vorbis = elements/vorbisdec -else -check_vorbis = -endif - -check_PROGRAMS = \ - elements/audioconvert \ - elements/audioresample \ - elements/audiotestsrc \ - elements/videotestsrc \ - elements/volume \ - generic/states \ - pipelines/simple_launch_lines \ - clocks/selection \ - $(check_vorbis) - -VALGRIND_TO_FIX = \ - elements/audioresample \ - generic/states \ - pipelines/simple_launch_lines - -# these tests don't even pass -noinst_PROGRAMS = - -AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) -LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS) - -# valgrind testing -VALGRIND_TESTS_DISABLE = $(VALGRIND_TO_FIX) - -SUPPRESSIONS = $(top_srcdir)/common/gst.supp diff --git a/check/clocks/.gitignore b/check/clocks/.gitignore deleted file mode 100644 index d96bb9e..0000000 --- a/check/clocks/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.dirstamp -selection diff --git a/check/clocks/selection.c b/check/clocks/selection.c deleted file mode 100644 index 8d5a156..0000000 --- a/check/clocks/selection.c +++ /dev/null @@ -1,71 +0,0 @@ -/* GStreamer - * - * unit test for clock selection - * - * Copyright (C) <2005> Wim Taymans - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GST_START_TEST (test_add) -{ - GstElement *pipeline; - GstStateChangeReturn ret; - - pipeline = gst_pipeline_new ("pipeline"); - fail_unless (pipeline != NULL, "could not create pipeline"); - - ret = gst_element_set_state (pipeline, GST_STATE_READY); - fail_unless (ret == GST_STATE_CHANGE_SUCCESS, "could not set to READY"); - - /* cleanup */ - gst_object_unref (pipeline); -} - -GST_END_TEST; - -Suite * -volume_suite (void) -{ - Suite *s = suite_create ("clocks"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_add); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = volume_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/.gitignore b/check/elements/.gitignore deleted file mode 100644 index 504ca66..0000000 --- a/check/elements/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -.dirstamp -audioconvert -audioresample -audiotestsrc -videotestsrc -volume -vorbisdec diff --git a/check/elements/audioconvert.c b/check/elements/audioconvert.c deleted file mode 100644 index 36ee2b4..0000000 --- a/check/elements/audioconvert.c +++ /dev/null @@ -1,315 +0,0 @@ -/* GStreamer - * - * unit test for audioconvert - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; -gboolean have_eos = FALSE; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysrcpad, *mysinkpad; - -#define CONVERT_CAPS_TEMPLATE_STRING \ - "audio/x-raw-float, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 8 ], " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 32;" \ - "audio/x-raw-int, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 8 ], " \ - "endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " \ - "width = (int) 32, " \ - "depth = (int) [ 1, 32 ], " \ - "signed = (boolean) { true, false }; " \ - "audio/x-raw-int, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 8 ], " \ - "endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " \ - "width = (int) 24, " \ - "depth = (int) [ 1, 24 ], " \ - "signed = (boolean) { true, false }; " \ - "audio/x-raw-int, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 8 ], " \ - "endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " \ - "width = (int) 16, " \ - "depth = (int) [ 1, 16 ], " \ - "signed = (boolean) { true, false }; " \ - "audio/x-raw-int, " \ - "rate = (int) [ 1, MAX ], " \ - "channels = (int) [ 1, 8 ], " \ - "endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " \ - "width = (int) 8, " \ - "depth = (int) [ 1, 8 ], " \ - "signed = (boolean) { true, false } " - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (CONVERT_CAPS_TEMPLATE_STRING) - ); -static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (CONVERT_CAPS_TEMPLATE_STRING) - ); - -/* takes over reference for outcaps */ -GstElement * -setup_audioconvert (GstCaps * outcaps) -{ - GstElement *audioconvert; - - GST_DEBUG ("setup_audioconvert with caps %" GST_PTR_FORMAT, outcaps); - audioconvert = gst_check_setup_element ("audioconvert"); - mysrcpad = gst_check_setup_src_pad (audioconvert, &srctemplate, NULL); - mysinkpad = gst_check_setup_sink_pad (audioconvert, &sinktemplate, NULL); - /* this installs a getcaps func that will always return the caps we set - * later */ - gst_pad_use_fixed_caps (mysinkpad); - gst_pad_set_caps (mysinkpad, outcaps); - gst_caps_unref (outcaps); - outcaps = gst_pad_get_negotiated_caps (mysinkpad); - fail_unless (gst_caps_is_fixed (outcaps)); - gst_caps_unref (outcaps); - - gst_pad_set_active (mysrcpad, TRUE); - gst_pad_set_active (mysinkpad, TRUE); - - return audioconvert; -} - -void -cleanup_audioconvert (GstElement * audioconvert) -{ - GST_DEBUG ("cleanup_audioconvert"); - - gst_pad_set_active (mysrcpad, FALSE); - gst_pad_set_active (mysinkpad, FALSE); - gst_check_teardown_src_pad (audioconvert); - gst_check_teardown_sink_pad (audioconvert); - gst_check_teardown_element (audioconvert); -} - -/* returns a newly allocated caps */ -static GstCaps * -get_int_caps (guint channels, gchar * endianness, guint width, - guint depth, gboolean signedness) -{ - GstCaps *caps; - gchar *string; - - string = g_strdup_printf ("audio/x-raw-int, " - "rate = (int) 44100, " - "channels = (int) %d, " - "endianness = (int) %s, " - "width = (int) %d, " - "depth = (int) %d, " - "signed = (boolean) %s ", - channels, endianness, width, depth, signedness ? "true" : "false"); - GST_DEBUG ("creating caps from %s", string); - caps = gst_caps_from_string (string); - g_free (string); - fail_unless (caps != NULL); - GST_DEBUG ("returning caps %p", caps); - return caps; -} - -/* eats the refs to the caps */ -static void -verify_convert (void *in, int inlength, - GstCaps * incaps, void *out, int outlength, GstCaps * outcaps) -{ - GstBuffer *inbuffer, *outbuffer; - GstElement *audioconvert; - - GST_DEBUG ("incaps: %" GST_PTR_FORMAT, incaps); - GST_DEBUG ("outcaps: %" GST_PTR_FORMAT, outcaps); - ASSERT_CAPS_REFCOUNT (incaps, "incaps", 1); - ASSERT_CAPS_REFCOUNT (outcaps, "outcaps", 1); - audioconvert = setup_audioconvert (outcaps); - ASSERT_CAPS_REFCOUNT (outcaps, "outcaps", 1); - - fail_unless (gst_element_set_state (audioconvert, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - GST_DEBUG ("Creating buffer of %d bytes", inlength); - inbuffer = gst_buffer_new_and_alloc (inlength); - memcpy (GST_BUFFER_DATA (inbuffer), in, inlength); - gst_buffer_set_caps (inbuffer, incaps); - ASSERT_CAPS_REFCOUNT (incaps, "incaps", 2); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - - /* pushing gives away my reference ... */ - GST_DEBUG ("push it"); - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - GST_DEBUG ("pushed it"); - /* ... and puts a new buffer on the global list */ - fail_unless (g_list_length (buffers) == 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - - ASSERT_BUFFER_REFCOUNT (outbuffer, "outbuffer", 1); - fail_unless_equals_int (GST_BUFFER_SIZE (outbuffer), outlength); - fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, outlength) == 0); - buffers = g_list_remove (buffers, outbuffer); - gst_buffer_unref (outbuffer); - fail_unless (gst_element_set_state (audioconvert, - GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS, "could not set to null"); - /* cleanup */ - GST_DEBUG ("cleanup audioconvert"); - cleanup_audioconvert (audioconvert); - GST_DEBUG ("cleanup, unref incaps"); - ASSERT_CAPS_REFCOUNT (incaps, "incaps", 1); - gst_caps_unref (incaps); -} - - -#define RUN_CONVERSION(inarray, in_get_caps, outarray, out_get_caps) \ - verify_convert (inarray, sizeof (inarray), \ - in_get_caps, outarray, sizeof (outarray), out_get_caps) - -GST_START_TEST (test_int16) -{ - /* stereo to mono */ - { - gint16 in[] = { 16384, -256, 1024, 1024 }; - gint16 out[] = { 8064, 1024 }; - - RUN_CONVERSION (in, get_int_caps (2, "BYTE_ORDER", 16, 16, TRUE), - out, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE)); - } - /* mono to stereo */ - { - gint16 in[] = { 512, 1024 }; - gint16 out[] = { 512, 512, 1024, 1024 }; - - RUN_CONVERSION (in, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE), - out, get_int_caps (2, "BYTE_ORDER", 16, 16, TRUE)); - } - /* signed -> unsigned */ - { - gint16 in[] = { 0, -32767, 32767, -32768 }; - guint16 out[] = { 32768, 1, 65535, 0 }; - - RUN_CONVERSION (in, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE), - out, get_int_caps (1, "BYTE_ORDER", 16, 16, FALSE)); - RUN_CONVERSION (out, get_int_caps (1, "BYTE_ORDER", 16, 16, FALSE), - in, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE)); - } -} - -GST_END_TEST; - -GST_START_TEST (test_int_conversion) -{ - /* 8 <-> 16 signed */ - /* NOTE: if audioconvert was doing dithering we'd have a problem */ - { - gint8 in[] = { 0, 1, 2, 127, -127 }; - gint16 out[] = { 0, 256, 512, 32512, -32512 }; - - RUN_CONVERSION (in, get_int_caps (1, "BYTE_ORDER", 8, 8, TRUE), - out, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE) - ); - RUN_CONVERSION (out, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE), - in, get_int_caps (1, "BYTE_ORDER", 8, 8, TRUE) - ); - } - /* 16 -> 8 signed */ - { - gint16 in[] = { 0, 255, 256, 257 }; - gint8 out[] = { 0, 0, 1, 1 }; - - RUN_CONVERSION (in, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE), - out, get_int_caps (1, "BYTE_ORDER", 8, 8, TRUE) - ); - } - /* 8 unsigned <-> 16 signed */ - /* NOTE: if audioconvert was doing dithering we'd have a problem */ - { - guint8 in[] = { 128, 129, 130, 255, 1 }; - gint16 out[] = { 0, 256, 512, 32512, -32512 }; - GstCaps *incaps, *outcaps; - - /* exploded for easier valgrinding */ - incaps = get_int_caps (1, "BYTE_ORDER", 8, 8, FALSE); - outcaps = get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE); - GST_DEBUG ("incaps: %" GST_PTR_FORMAT, incaps); - GST_DEBUG ("outcaps: %" GST_PTR_FORMAT, outcaps); - RUN_CONVERSION (in, incaps, out, outcaps); - RUN_CONVERSION (out, get_int_caps (1, "BYTE_ORDER", 16, 16, TRUE), - in, get_int_caps (1, "BYTE_ORDER", 8, 8, FALSE) - ); - } - /* 8 <-> 24 signed */ - /* NOTE: if audioconvert was doing dithering we'd have a problem */ - { - gint8 in[] = { 0, 1, 127 }; - guint8 out[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7f }; - - RUN_CONVERSION (in, get_int_caps (1, "BYTE_ORDER", 8, 8, TRUE), - out, get_int_caps (1, "BYTE_ORDER", 24, 24, TRUE) - ); - RUN_CONVERSION (out, get_int_caps (1, "BYTE_ORDER", 24, 24, TRUE), - in, get_int_caps (1, "BYTE_ORDER", 8, 8, TRUE) - ); - } -} - -GST_END_TEST; - - -Suite * -audioconvert_suite (void) -{ - Suite *s = suite_create ("audioconvert"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_int16); - //tcase_add_test (tc_chain, test_int_conversion); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = audioconvert_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/audioresample.c b/check/elements/audioresample.c deleted file mode 100644 index 2972433..0000000 --- a/check/elements/audioresample.c +++ /dev/null @@ -1,247 +0,0 @@ -/* GStreamer - * - * unit test for audioresample - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; -gboolean have_eos = FALSE; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysrcpad, *mysinkpad; - - -#define RESAMPLE_CAPS_TEMPLATE_STRING \ - "audio/x-raw-int, " \ - "channels = (int) [ 1, MAX ], " \ - "rate = (int) [ 1, MAX ], " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 16, " \ - "depth = (int) 16, " \ - "signed = (bool) TRUE" - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (RESAMPLE_CAPS_TEMPLATE_STRING) - ); -static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (RESAMPLE_CAPS_TEMPLATE_STRING) - ); - -GstElement * -setup_audioresample (int channels, int inrate, int outrate) -{ - GstElement *audioresample; - GstCaps *caps; - GstStructure *structure; - GstPad *pad; - - GST_DEBUG ("setup_audioresample"); - audioresample = gst_check_setup_element ("audioresample"); - - caps = gst_caps_from_string (RESAMPLE_CAPS_TEMPLATE_STRING); - structure = gst_caps_get_structure (caps, 0); - gst_structure_set (structure, "channels", G_TYPE_INT, channels, - "rate", G_TYPE_INT, inrate, NULL); - fail_unless (gst_caps_is_fixed (caps)); - - mysrcpad = gst_check_setup_src_pad (audioresample, &srctemplate, caps); - pad = gst_pad_get_peer (mysrcpad); - gst_pad_set_caps (pad, caps); - gst_object_unref (GST_OBJECT (pad)); - gst_caps_unref (caps); - gst_pad_set_active (mysrcpad, TRUE); - - caps = gst_caps_from_string (RESAMPLE_CAPS_TEMPLATE_STRING); - structure = gst_caps_get_structure (caps, 0); - gst_structure_set (structure, "channels", G_TYPE_INT, channels, - "rate", G_TYPE_INT, outrate, NULL); - fail_unless (gst_caps_is_fixed (caps)); - - mysinkpad = gst_check_setup_sink_pad (audioresample, &sinktemplate, caps); - /* this installs a getcaps func that will always return the caps we set - * later */ - gst_pad_use_fixed_caps (mysinkpad); - pad = gst_pad_get_peer (mysinkpad); - gst_pad_set_caps (pad, caps); - gst_object_unref (GST_OBJECT (pad)); - gst_caps_unref (caps); - gst_pad_set_active (mysinkpad, TRUE); - - return audioresample; -} - -void -cleanup_audioresample (GstElement * audioresample) -{ - GST_DEBUG ("cleanup_audioresample"); - - gst_check_teardown_src_pad (audioresample); - gst_check_teardown_sink_pad (audioresample); - gst_check_teardown_element (audioresample); -} - -static void -fail_unless_perfect_stream () -{ - guint64 timestamp = 0L, duration = 0L; - guint64 offset = 0L, offset_end = 0L; - - GList *l; - GstBuffer *buffer; - - for (l = buffers; l; l = l->next) { - buffer = GST_BUFFER (l->data); - ASSERT_BUFFER_REFCOUNT (buffer, "buffer", 1); - GST_DEBUG ("buffer timestamp %" G_GUINT64_FORMAT ", duration %" - G_GUINT64_FORMAT, GST_BUFFER_TIMESTAMP (buffer), - GST_BUFFER_DURATION (buffer)); - - fail_unless_equals_uint64 (timestamp, GST_BUFFER_TIMESTAMP (buffer)); - fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET (buffer)); - duration = GST_BUFFER_DURATION (buffer); - offset_end = GST_BUFFER_OFFSET_END (buffer); - - timestamp += duration; - offset = offset_end; - gst_buffer_unref (buffer); - } - g_list_free (buffers); - buffers = NULL; -} - -static void -test_perfect_stream_instance (int inrate, int outrate, int samples, - int numbuffers) -{ - GstElement *audioresample; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - - int i, j; - gint16 *p; - - audioresample = setup_audioresample (2, inrate, outrate); - caps = gst_pad_get_negotiated_caps (mysrcpad); - fail_unless (gst_caps_is_fixed (caps)); - - fail_unless (gst_element_set_state (audioresample, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - for (j = 1; j <= numbuffers; ++j) { - - inbuffer = gst_buffer_new_and_alloc (samples * 4); - GST_BUFFER_DURATION (inbuffer) = samples * GST_SECOND / inrate; - GST_BUFFER_TIMESTAMP (inbuffer) = GST_BUFFER_DURATION (inbuffer) * (j - 1); - GST_BUFFER_OFFSET (inbuffer) = 0; - GST_BUFFER_OFFSET_END (inbuffer) = samples; - - gst_buffer_set_caps (inbuffer, caps); - - p = (gint16 *) GST_BUFFER_DATA (inbuffer); - - /* create a 16 bit signed ramp */ - for (i = 0; i < samples; ++i) { - *p = -32767 + i * (65535 / samples); - ++p; - *p = -32767 + i * (65535 / samples); - ++p; - } - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - fail_unless_equals_int (g_list_length (buffers), j); - } - - /* FIXME: we should make audioresample handle eos by flushing out the last - * samples, which will give us one more, small, buffer */ - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - ASSERT_BUFFER_REFCOUNT (outbuffer, "outbuffer", 1); - - fail_unless_perfect_stream (); - - /* cleanup */ - gst_caps_unref (caps); - cleanup_audioresample (audioresample); -} - - -/* make sure that outgoing buffers are contiguous in timestamp/duration and - * offset/offsetend - */ -GST_START_TEST (test_perfect_stream) -{ - guint inrate, outrate, bytes; - - /* integral scalings */ - test_perfect_stream_instance (48000, 24000, 500, 20); - test_perfect_stream_instance (48000, 12000, 500, 20); - test_perfect_stream_instance (12000, 24000, 500, 20); - test_perfect_stream_instance (12000, 48000, 500, 20); - - /* non-integral scalings */ - test_perfect_stream_instance (44100, 8000, 500, 20); - test_perfect_stream_instance (8000, 44100, 500, 20); - - /* wacky scalings */ - test_perfect_stream_instance (12345, 54321, 500, 20); - test_perfect_stream_instance (101, 99, 500, 20); -} - -GST_END_TEST; - -Suite * -audioresample_suite (void) -{ - Suite *s = suite_create ("audioresample"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_perfect_stream); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = audioresample_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/audiotestsrc.c b/check/elements/audiotestsrc.c deleted file mode 100644 index 169416b..0000000 --- a/check/elements/audiotestsrc.c +++ /dev/null @@ -1,142 +0,0 @@ -/* GStreamer - * - * unit test for audiotestsrc - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; -gboolean have_eos = FALSE; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysinkpad; - - -#define CAPS_TEMPLATE_STRING \ - "audio/x-raw-int, " \ - "channels = (int) 1, " \ - "rate = (int) [ 1, MAX ], " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 16, " \ - "depth = (int) 16, " \ - "signed = (bool) TRUE" - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (CAPS_TEMPLATE_STRING) - ); - -GstElement * -setup_audiotestsrc () -{ - GstElement *audiotestsrc; - - GST_DEBUG ("setup_audiotestsrc"); - audiotestsrc = gst_check_setup_element ("audiotestsrc"); - mysinkpad = gst_check_setup_sink_pad (audiotestsrc, &sinktemplate, NULL); - gst_pad_set_active (mysinkpad, TRUE); - - return audiotestsrc; -} - -void -cleanup_audiotestsrc (GstElement * audiotestsrc) -{ - GST_DEBUG ("cleanup_audiotestsrc"); - - g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); - g_list_free (buffers); - buffers = NULL; - - gst_check_teardown_sink_pad (audiotestsrc); - gst_check_teardown_element (audiotestsrc); -} - -GST_START_TEST (test_all_waves) -{ - GstElement *audiotestsrc; - GObjectClass *oclass; - GParamSpec *property; - GEnumValue *values; - guint j = 0; - - audiotestsrc = setup_audiotestsrc (); - oclass = G_OBJECT_GET_CLASS (audiotestsrc); - property = g_object_class_find_property (oclass, "wave"); - fail_unless (G_IS_PARAM_SPEC_ENUM (property)); - values = G_ENUM_CLASS (g_type_class_ref (property->value_type))->values; - - - while (values[j].value_name) { - GST_DEBUG_OBJECT (audiotestsrc, "testing wave %s", values[j].value_name); - - fail_unless (gst_element_set_state (audiotestsrc, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - while (g_list_length (buffers) < 10); - - gst_element_set_state (audiotestsrc, GST_STATE_READY); - - g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); - g_list_free (buffers); - buffers = NULL; - ++j; - } - - /* cleanup */ - cleanup_audiotestsrc (audiotestsrc); -} - -GST_END_TEST; - -Suite * -audiotestsrc_suite (void) -{ - Suite *s = suite_create ("audiotestsrc"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_all_waves); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = audiotestsrc_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/videotestsrc.c b/check/elements/videotestsrc.c deleted file mode 100644 index 0dff8cf..0000000 --- a/check/elements/videotestsrc.c +++ /dev/null @@ -1,143 +0,0 @@ -/* GStreamer - * - * unit test for videotestsrc - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; -gboolean have_eos = FALSE; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysinkpad; - - -#define CAPS_TEMPLATE_STRING \ - "video/x-raw-yuv, " \ - "format = (fourcc) Y422, " \ - "width = (int) [ 1, MAX ], " \ - "height = (int) [ 1, MAX ], " \ - "framerate = (fraction) [ 0/1, MAX ]" - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (CAPS_TEMPLATE_STRING) - ); - -GstElement * -setup_videotestsrc () -{ - GstElement *videotestsrc; - - GST_DEBUG ("setup_videotestsrc"); - videotestsrc = gst_check_setup_element ("videotestsrc"); - mysinkpad = gst_check_setup_sink_pad (videotestsrc, &sinktemplate, NULL); - gst_pad_set_active (mysinkpad, TRUE); - - return videotestsrc; -} - -void -cleanup_videotestsrc (GstElement * videotestsrc) -{ - GST_DEBUG ("cleanup_videotestsrc"); - - g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); - g_list_free (buffers); - buffers = NULL; - - gst_check_teardown_sink_pad (videotestsrc); - gst_check_teardown_element (videotestsrc); -} - -GST_START_TEST (test_all_patterns) -{ - GstElement *videotestsrc; - GObjectClass *oclass; - GParamSpec *property; - GEnumValue *values; - guint j = 0; - - videotestsrc = setup_videotestsrc (); - oclass = G_OBJECT_GET_CLASS (videotestsrc); - property = g_object_class_find_property (oclass, "pattern"); - fail_unless (G_IS_PARAM_SPEC_ENUM (property)); - values = G_ENUM_CLASS (g_type_class_ref (property->value_type))->values; - - - while (values[j].value_name) { - GST_DEBUG_OBJECT (videotestsrc, "testing pattern %s", values[j].value_name); - - fail_unless (gst_element_set_state (videotestsrc, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - while (g_list_length (buffers) < 10); - - gst_element_set_state (videotestsrc, GST_STATE_READY); - - g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); - g_list_free (buffers); - buffers = NULL; - ++j; - } - - /* cleanup */ - cleanup_videotestsrc (videotestsrc); -} - -GST_END_TEST; - -/* FIXME: - * add tests for every colorspace */ - -Suite * -videotestsrc_suite (void) -{ - Suite *s = suite_create ("videotestsrc"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_all_patterns); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = videotestsrc_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/volume.c b/check/elements/volume.c deleted file mode 100644 index e8f370b..0000000 --- a/check/elements/volume.c +++ /dev/null @@ -1,302 +0,0 @@ -/* GStreamer - * - * unit test for volume - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; -gboolean have_eos = FALSE; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysrcpad, *mysinkpad; - - -#define VOLUME_CAPS_TEMPLATE_STRING \ - "audio/x-raw-int, " \ - "channels = (int) [ 1, MAX ], " \ - "rate = (int) [ 1, MAX ], " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 16, " \ - "depth = (int) 16, " \ - "signed = (bool) TRUE" - -#define VOLUME_CAPS_STRING \ - "audio/x-raw-int, " \ - "channels = (int) 1, " \ - "rate = (int) 44100, " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 16, " \ - "depth = (int) 16, " \ - "signed = (bool) TRUE" - -#define VOLUME_WRONG_CAPS_STRING \ - "audio/x-raw-int, " \ - "channels = (int) 1, " \ - "rate = (int) 44100, " \ - "endianness = (int) BYTE_ORDER, " \ - "width = (int) 16, " \ - "depth = (int) 16, " \ - "signed = (bool) FALSE" - - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (VOLUME_CAPS_TEMPLATE_STRING) - ); -static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS (VOLUME_CAPS_TEMPLATE_STRING) - ); - -GstElement * -setup_volume () -{ - GstElement *volume; - - GST_DEBUG ("setup_volume"); - volume = gst_check_setup_element ("volume"); - mysrcpad = gst_check_setup_src_pad (volume, &srctemplate, NULL); - mysinkpad = gst_check_setup_sink_pad (volume, &sinktemplate, NULL); - gst_pad_set_active (mysrcpad, TRUE); - gst_pad_set_active (mysinkpad, TRUE); - - return volume; -} - -void -cleanup_volume (GstElement * volume) -{ - GST_DEBUG ("cleanup_volume"); - - g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL); - g_list_free (buffers); - buffers = NULL; - - gst_check_teardown_src_pad (volume); - gst_check_teardown_sink_pad (volume); - gst_check_teardown_element (volume); -} - -GST_START_TEST (test_unity) -{ - GstElement *volume; - GstBuffer *inbuffer, *outbuffer; - GstCaps *caps; - gint16 in[2] = { 16384, -256 }; - - volume = setup_volume (); - fail_unless (gst_element_set_state (volume, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = gst_buffer_new_and_alloc (4); - memcpy (GST_BUFFER_DATA (inbuffer), in, 4); - caps = gst_caps_from_string (VOLUME_CAPS_STRING); - gst_buffer_set_caps (inbuffer, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being collected on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - fail_unless (inbuffer == outbuffer); - fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 4) == 0); - - /* cleanup */ - cleanup_volume (volume); -} - -GST_END_TEST; - -GST_START_TEST (test_half) -{ - GstElement *volume; - GstBuffer *inbuffer; - GstBuffer *outbuffer; - GstCaps *caps; - gint16 in[2] = { 16384, -256 }; - gint16 out[2] = { 8192, -128 }; - - volume = setup_volume (); - g_object_set (G_OBJECT (volume), "volume", 0.5, NULL); - fail_unless (gst_element_set_state (volume, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = gst_buffer_new_and_alloc (4); - memcpy (GST_BUFFER_DATA (inbuffer), in, 4); - fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 4) == 0); - caps = gst_caps_from_string (VOLUME_CAPS_STRING); - gst_buffer_set_caps (inbuffer, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - /* FIXME: reffing the inbuffer should make the transformation not be - * inplace - gst_buffer_ref (inbuffer); - */ - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being modified inplace and - * collected on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - fail_unless (inbuffer == outbuffer); - fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, 4) == 0); - - /* cleanup */ - cleanup_volume (volume); -} - -GST_END_TEST; - -GST_START_TEST (test_double) -{ - GstElement *volume; - GstBuffer *inbuffer; - GstBuffer *outbuffer; - GstCaps *caps; - gint16 in[2] = { 16384, -256 }; - gint16 out[2] = { 32767, -512 }; /* notice the clamped sample */ - - volume = setup_volume (); - g_object_set (G_OBJECT (volume), "volume", 2.0, NULL); - fail_unless (gst_element_set_state (volume, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = gst_buffer_new_and_alloc (4); - memcpy (GST_BUFFER_DATA (inbuffer), in, 4); - fail_unless (memcmp (GST_BUFFER_DATA (inbuffer), in, 4) == 0); - caps = gst_caps_from_string (VOLUME_CAPS_STRING); - gst_buffer_set_caps (inbuffer, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - /* FIXME: reffing the inbuffer should make the transformation not be - * inplace - gst_buffer_ref (inbuffer); - */ - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... but it ends up being modified inplace and - * collected on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - fail_unless_equals_int (g_list_length (buffers), 1); - fail_if ((outbuffer = (GstBuffer *) buffers->data) == NULL); - fail_unless (inbuffer == outbuffer); - fail_unless (memcmp (GST_BUFFER_DATA (outbuffer), out, 4) == 0); - - /* cleanup */ - cleanup_volume (volume); -} - -GST_END_TEST; - -GST_START_TEST (test_wrong_caps) -{ - GstElement *volume; - GstBuffer *inbuffer, *outbuffer; - gint16 in[2] = { 16384, -256 }; - GstBus *bus; - GstMessage *message; - GstCaps *caps; - - volume = setup_volume (); - bus = gst_bus_new (); - - fail_unless (gst_element_set_state (volume, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = gst_buffer_new_and_alloc (4); - memcpy (GST_BUFFER_DATA (inbuffer), in, 4); - caps = gst_caps_from_string (VOLUME_WRONG_CAPS_STRING); - gst_buffer_set_caps (inbuffer, caps); - gst_caps_unref (caps); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_ref (inbuffer); - - /* set a bus here so we avoid getting state change messages */ - gst_element_set_bus (volume, bus); - - /* pushing gives an error because it can't negotiate with wrong caps */ - fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), - GST_FLOW_NOT_NEGOTIATED); - /* ... and the buffer would have been lost if we didn't ref it ourselves */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_unref (inbuffer); - fail_unless_equals_int (g_list_length (buffers), 0); - - /* volume_set_caps should not have been called since basetransform caught - * the negotiation problem */ - fail_if ((message = gst_bus_pop (bus)) != NULL); - - /* cleanup */ - gst_element_set_bus (volume, NULL); - gst_object_unref (GST_OBJECT (bus)); - cleanup_volume (volume); -} - -GST_END_TEST; - - -Suite * -volume_suite (void) -{ - Suite *s = suite_create ("volume"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_unity); - tcase_add_test (tc_chain, test_half); - tcase_add_test (tc_chain, test_double); - tcase_add_test (tc_chain, test_wrong_caps); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = volume_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/elements/vorbisdec.c b/check/elements/vorbisdec.c deleted file mode 100644 index d704d79..0000000 --- a/check/elements/vorbisdec.c +++ /dev/null @@ -1,260 +0,0 @@ -/* GStreamer - * - * unit test for vorbisdec - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include - -#include - -GList *buffers = NULL; - -/* For ease of programming we use globals to keep refs for our floating - * src and sink pads we create; otherwise we always have to do get_pad, - * get_peer, and then remove references in every test function */ -GstPad *mysrcpad, *mysinkpad; - -/* a valid first header packet */ -guchar identification_header[30] = { - 1, /* packet_type */ - 'v', 'o', 'r', 'b', 'i', 's', - 0, 0, 0, 0, /* vorbis_version */ - 2, /* audio_channels */ - 0x44, 0xac, 0, 0, /* sample_rate */ - 0xff, 0xff, 0xff, 0xff, /* bitrate_maximum */ - 0x00, 0xee, 0x02, 0x00, /* bitrate_nominal */ - 0xff, 0xff, 0xff, 0xff, /* bitrate_minimum */ - 0xb8, /* blocksize_0, blocksize_1 */ - 0x01, /* framing_flag */ -}; - -guchar comment_header[] = { - 3, /* packet_type */ - 'v', 'o', 'r', 'b', 'i', 's', - 2, 0, 0, 0, /* vendor_length */ - 'm', 'e', - 1, 0, 0, 0, /* user_comment_list_length */ - 9, 0, 0, 0, /* length comment[0] */ - 'A', 'R', 'T', 'I', 'S', 'T', '=', 'm', 'e', - 0x01, /* framing bit */ -}; - -static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS_ANY); -static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS_ANY); - -GstElement * -setup_vorbisdec () -{ - GstElement *vorbisdec; - - GST_DEBUG ("setup_vorbisdec"); - vorbisdec = gst_check_setup_element ("vorbisdec"); - mysrcpad = gst_check_setup_src_pad (vorbisdec, &srctemplate, NULL); - mysinkpad = gst_check_setup_sink_pad (vorbisdec, &sinktemplate, NULL); - - return vorbisdec; -} - -void -cleanup_vorbisdec (GstElement * vorbisdec) -{ - GST_DEBUG ("cleanup_vorbisdec"); - gst_element_set_state (vorbisdec, GST_STATE_NULL); - - gst_check_teardown_src_pad (vorbisdec); - gst_check_teardown_sink_pad (vorbisdec); - gst_check_teardown_element (vorbisdec); -} - -GST_START_TEST (test_wrong_channels_identification_header) -{ - GstElement *vorbisdec; - GstBuffer *inbuffer, *outbuffer; - GstBus *bus; - GstMessage *message; - - vorbisdec = setup_vorbisdec (); - fail_unless (gst_element_set_state (vorbisdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - bus = gst_bus_new (); - - inbuffer = gst_buffer_new_and_alloc (30); - memcpy (GST_BUFFER_DATA (inbuffer), identification_header, 30); - /* set the channel count to 7, which is not supported */ - GST_BUFFER_DATA (inbuffer)[11] = 7; - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_ref (inbuffer); - - gst_element_set_bus (vorbisdec, bus); - /* pushing gives away my reference ... */ - fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_ERROR); - /* ... and nothing ends up on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_unref (inbuffer); - fail_unless_equals_int (g_list_length (buffers), 0); - - fail_if ((message = gst_bus_pop (bus)) == NULL); - fail_unless_message_error (message, STREAM, NOT_IMPLEMENTED); - gst_message_unref (message); - gst_element_set_bus (vorbisdec, NULL); - - /* cleanup */ - gst_object_unref (GST_OBJECT (bus)); - cleanup_vorbisdec (vorbisdec); -} - -GST_END_TEST; - - -GST_START_TEST (test_empty_identification_header) -{ - GstElement *vorbisdec; - GstBuffer *inbuffer, *outbuffer; - GstBus *bus; - GstMessage *message; - - vorbisdec = setup_vorbisdec (); - bus = gst_bus_new (); - - fail_unless (gst_element_set_state (vorbisdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - - inbuffer = gst_buffer_new_and_alloc (0); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - - /* set a bus here so we avoid getting state change messages */ - gst_element_set_bus (vorbisdec, bus); - - fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_ERROR); - /* ... but it ends up being collected on the global buffer list */ - fail_unless_equals_int (g_list_length (buffers), 0); - - fail_if ((message = gst_bus_pop (bus)) == NULL); - fail_unless_message_error (message, STREAM, DECODE); - gst_message_unref (message); - gst_element_set_bus (vorbisdec, NULL); - - /* cleanup */ - gst_object_unref (GST_OBJECT (bus)); - cleanup_vorbisdec (vorbisdec); -} - -GST_END_TEST; - -/* FIXME: also tests comment header */ -GST_START_TEST (test_identification_header) -{ - GstElement *vorbisdec; - GstBuffer *inbuffer, *outbuffer; - GstBus *bus; - GstMessage *message; - GstTagList *tag_list; - gchar *artist; - - vorbisdec = setup_vorbisdec (); - fail_unless (gst_element_set_state (vorbisdec, - GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, - "could not set to playing"); - bus = gst_bus_new (); - - inbuffer = gst_buffer_new_and_alloc (30); - memcpy (GST_BUFFER_DATA (inbuffer), identification_header, 30); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_ref (inbuffer); - - gst_element_set_bus (vorbisdec, bus); - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and nothing ends up on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_unref (inbuffer); - fail_unless (g_list_length (buffers) == 0); - fail_if ((message = gst_bus_pop (bus)) != NULL); - - inbuffer = gst_buffer_new_and_alloc (sizeof (comment_header)); - memcpy (GST_BUFFER_DATA (inbuffer), comment_header, sizeof (comment_header)); - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_ref (inbuffer); - - /* pushing gives away my reference ... */ - fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK); - /* ... and nothing ends up on the global buffer list */ - ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1); - gst_buffer_unref (inbuffer); - fail_unless (g_list_length (buffers) == 0); - /* there's a tag message waiting */ - fail_if ((message = gst_bus_pop (bus)) == NULL); - gst_message_parse_tag (message, &tag_list); - fail_unless_equals_int (gst_tag_list_get_tag_size (tag_list, GST_TAG_ARTIST), - 1); - fail_unless (gst_tag_list_get_string (tag_list, GST_TAG_ARTIST, &artist)); - fail_unless_equals_string (artist, "me"); - g_free (artist); - fail_unless_equals_int (gst_tag_list_get_tag_size (tag_list, "album"), 0); - gst_tag_list_free (tag_list); - gst_message_unref (message); - - /* cleanup */ - gst_bus_set_flushing (bus, TRUE); - gst_element_set_bus (vorbisdec, NULL); - gst_object_unref (GST_OBJECT (bus)); - cleanup_vorbisdec (vorbisdec); -} - -GST_END_TEST; - -Suite * -vorbisdec_suite (void) -{ - Suite *s = suite_create ("vorbisdec"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_empty_identification_header); - tcase_add_test (tc_chain, test_wrong_channels_identification_header); - tcase_add_test (tc_chain, test_identification_header); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = vorbisdec_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/generic/.gitignore b/check/generic/.gitignore deleted file mode 100644 index b9eed5c..0000000 --- a/check/generic/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.dirstamp -states diff --git a/check/generic/states.c b/check/generic/states.c deleted file mode 100644 index 8739d5e..0000000 --- a/check/generic/states.c +++ /dev/null @@ -1,109 +0,0 @@ -/* GStreamer - * - * unit test for state changes on all elements - * - * Copyright (C) <2005> Thomas Vander Stichele - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include - -#include - -GST_START_TEST (test_state_changes) -{ - GstElement *element; - GList *features, *f; - GList *plugins, *p; - - GST_DEBUG ("testing elements from source %s", PACKAGE); - - plugins = gst_registry_get_plugin_list (gst_registry_get_default ()); - - for (p = plugins; p; p = p->next) { - GstPlugin *plugin = p->data; - - if (strcmp (gst_plugin_get_source (plugin), PACKAGE) != 0) - continue; - - features = - gst_registry_get_feature_list_by_plugin (gst_registry_get_default (), - gst_plugin_get_name (plugin)); - - for (f = features; f; f = f->next) { - GstPluginFeature *feature = f->data; - const gchar *name = gst_plugin_feature_get_name (feature); - - if (!GST_IS_ELEMENT_FACTORY (feature)) - continue; - - GST_DEBUG ("testing element %s", name); - element = gst_element_factory_make (name, name); - if (GST_IS_PIPELINE (element)) { - GST_DEBUG ("element %s is a pipeline", name); - } - - gst_element_set_state (element, GST_STATE_READY); - gst_element_set_state (element, GST_STATE_PAUSED); - gst_element_set_state (element, GST_STATE_PLAYING); - gst_element_set_state (element, GST_STATE_PAUSED); - gst_element_set_state (element, GST_STATE_READY); - gst_element_set_state (element, GST_STATE_NULL); - gst_element_set_state (element, GST_STATE_PAUSED); - gst_element_set_state (element, GST_STATE_READY); - gst_element_set_state (element, GST_STATE_PLAYING); - gst_element_set_state (element, GST_STATE_PAUSED); - gst_element_set_state (element, GST_STATE_NULL); - gst_object_unref (GST_OBJECT (element)); - } - } -} - -GST_END_TEST; - -Suite * -states_suite (void) -{ - Suite *s = suite_create ("states"); - TCase *tc_chain = tcase_create ("general"); - - suite_add_tcase (s, tc_chain); - tcase_add_test (tc_chain, test_state_changes); - - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = states_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/check/pipelines/.gitignore b/check/pipelines/.gitignore deleted file mode 100644 index 0305d7f..0000000 --- a/check/pipelines/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.dirstamp -simple_launch_lines diff --git a/check/pipelines/simple_launch_lines.c b/check/pipelines/simple_launch_lines.c deleted file mode 100644 index 9a4e36f..0000000 --- a/check/pipelines/simple_launch_lines.c +++ /dev/null @@ -1,181 +0,0 @@ -/* GStreamer - * Copyright (C) 2005 Andy Wingo - * - * simple_launch_lines.c: Unit test for simple pipelines - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - - -#include - - -static GstElement * -setup_pipeline (const gchar * pipe_descr) -{ - GstElement *pipeline; - - pipeline = gst_parse_launch (pipe_descr, NULL); - g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL); - return pipeline; -} - -/* - * run_pipeline: - * @pipe: the pipeline to run - * @desc: the description for use in messages - * @events: is a mask of expected events - * @tevent: is the expected terminal event. - * - * the poll call will time out after half a second. - */ -static void -run_pipeline (GstElement * pipe, const gchar * descr, - GstMessageType events, GstMessageType tevent) -{ - GstBus *bus; - GstMessage *message; - GstMessageType revent; - GstStateChangeReturn ret; - - g_assert (pipe); - bus = gst_element_get_bus (pipe); - g_assert (bus); - - ret = gst_element_set_state (pipe, GST_STATE_PLAYING); - ret = gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE); - if (ret != GST_STATE_CHANGE_SUCCESS) { - g_critical ("Couldn't set pipeline to PLAYING"); - goto done; - } - - while (1) { - message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 2); - - - /* always have to pop the message before getting back into poll */ - if (message) { - revent = GST_MESSAGE_TYPE (message); - gst_message_unref (message); - } else { - revent = GST_MESSAGE_UNKNOWN; - } - - if (revent == tevent) { - break; - } else if (revent == GST_MESSAGE_UNKNOWN) { - g_critical ("Unexpected timeout in gst_bus_poll, looking for %d: %s", - tevent, descr); - break; - } else if (revent & events) { - continue; - } - g_critical ("Unexpected message received of type %d, looking for %d: %s", - revent, tevent, descr); - } - -done: - gst_element_set_state (pipe, GST_STATE_NULL); - gst_object_unref (pipe); -} - -GST_START_TEST (test_element_negotiation) -{ - gchar *s; - - /* see http://bugzilla.gnome.org/show_bug.cgi?id=315126 */ - s = "fakesrc ! audio/x-raw-int,width=16,depth=16,rate=22050,channels=1 ! audioconvert ! audio/x-raw-int,width=16,depth=16,rate=22050,channels=1 ! fakesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); - -#ifdef HAVE_LIBVISUAL - s = "audiotestsrc ! tee name=t ! alsasink t. ! audioconvert ! libvisual_lv_scope ! ffmpegcolorspace ! xvimagesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); -#endif -} - -GST_END_TEST -GST_START_TEST (test_basetransform_based) -{ - /* Each of these tests is to check whether various basetransform based elements can - * select output caps when not allowed to do passthrough and going to a generic sink - * such as fakesink or filesink */ - const gchar *s; - - /* Check that videoscale can pick a height given only a width */ - s = "videotestsrc ! video/x-raw-yuv,format=(fourcc)I420,width=320,height=240 ! " "videoscale ! video/x-raw-yuv,width=640 ! fakesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); - - /* Test that ffmpegcolorspace can pick an output format that isn't - * passthrough without completely specified output caps */ - s = "videotestsrc ! " - "video/x-raw-yuv,format=(fourcc)I420,width=320,height=240 ! " - "ffmpegcolorspace ! video/x-raw-rgb ! fakesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); - - /* Check that audioresample can pick a samplerate to use from a - * range that doesn't include the input */ - s = "audiotestsrc ! audio/x-raw-int,width=16,depth=16,rate=8000 ! " - "audioresample ! audio/x-raw-int,rate=[16000,48000] ! fakesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); - - /* Check that audioconvert can pick a depth to use, given a width */ - s = "audiotestsrc ! audio/x-raw-int,width=16,depth=16 ! audioconvert ! " - "audio/x-raw-int,width=32 ! fakesink"; - run_pipeline (setup_pipeline (s), s, - GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING), - GST_MESSAGE_UNKNOWN); -} -GST_END_TEST Suite * -simple_launch_lines_suite (void) -{ - Suite *s = suite_create ("Pipelines"); - TCase *tc_chain = tcase_create ("linear"); - - /* time out after 20s, not the default 3 */ - tcase_set_timeout (tc_chain, 20); - - suite_add_tcase (s, tc_chain); -// tcase_add_test (tc_chain, test_element_negotiation); - tcase_add_test (tc_chain, test_basetransform_based); - return s; -} - -int -main (int argc, char **argv) -{ - int nf; - - Suite *s = simple_launch_lines_suite (); - SRunner *sr = srunner_create (s); - - gst_check_init (&argc, &argv); - - srunner_run_all (sr, CK_NORMAL); - nf = srunner_ntests_failed (sr); - srunner_free (sr); - - return nf; -} diff --git a/common b/common index 8db4c61..f9f5f06 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 8db4c613eb1aa57dc21d25a4b83b36e3cdedc5ca +Subproject commit f9f5f063728688cf455a1512d492b632c43963d7 diff --git a/configure.ac b/configure.ac index bae6d78..3649cf0 100644 --- a/configure.ac +++ b/configure.ac @@ -615,7 +615,8 @@ tools/Makefile pkgconfig/Makefile pkgconfig/gstreamer-plugins-base.pc pkgconfig/gstreamer-plugins-base-uninstalled.pc -check/Makefile +tests/Makefile +tests/check/Makefile docs/Makefile docs/libs/Makefile docs/plugins/Makefile diff --git a/docs/libs/tmpl/gstaudio.sgml b/docs/libs/tmpl/gstaudio.sgml index 326af51..3d7f8e6 100644 --- a/docs/libs/tmpl/gstaudio.sgml +++ b/docs/libs/tmpl/gstaudio.sgml @@ -14,9 +14,6 @@ a support library for audio elements - - - diff --git a/docs/libs/tmpl/gstcolorbalance.sgml b/docs/libs/tmpl/gstcolorbalance.sgml index ccb0ae2..2f99aa8 100644 --- a/docs/libs/tmpl/gstcolorbalance.sgml +++ b/docs/libs/tmpl/gstcolorbalance.sgml @@ -14,9 +14,6 @@ interface for adjusting color balance settings - - - diff --git a/docs/libs/tmpl/gstgconf.sgml b/docs/libs/tmpl/gstgconf.sgml index 271166a..cd6931c 100644 --- a/docs/libs/tmpl/gstgconf.sgml +++ b/docs/libs/tmpl/gstgconf.sgml @@ -14,6 +14,3 @@ gconf default elements support - - - diff --git a/docs/libs/tmpl/gstmixer.sgml b/docs/libs/tmpl/gstmixer.sgml index 807f6e8..44a46e9 100644 --- a/docs/libs/tmpl/gstmixer.sgml +++ b/docs/libs/tmpl/gstmixer.sgml @@ -14,9 +14,6 @@ interface for elements that provide mixer operations - - - @@ -47,18 +44,12 @@ interface for elements that provide mixer operations -@parent: -@values: -@_gst_reserved: -@parent: -@label: -@flags: diff --git a/docs/libs/tmpl/gstringbuffer.sgml b/docs/libs/tmpl/gstringbuffer.sgml index 5a86bdf..9dba39e 100644 --- a/docs/libs/tmpl/gstringbuffer.sgml +++ b/docs/libs/tmpl/gstringbuffer.sgml @@ -14,9 +14,6 @@ an implementation of an audio ringbuffer - - - diff --git a/docs/libs/tmpl/gsttuner.sgml b/docs/libs/tmpl/gsttuner.sgml index 19d2885..c815a5f 100644 --- a/docs/libs/tmpl/gsttuner.sgml +++ b/docs/libs/tmpl/gsttuner.sgml @@ -14,9 +14,6 @@ interface for elements that provide tuner operations - - - diff --git a/docs/libs/tmpl/gstxoverlay.sgml b/docs/libs/tmpl/gstxoverlay.sgml index af901f8..65a6531 100644 --- a/docs/libs/tmpl/gstxoverlay.sgml +++ b/docs/libs/tmpl/gstxoverlay.sgml @@ -14,9 +14,6 @@ interface for setting/getting a Window on elements supporting it. - - - diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 6dacfc6..4fac18f 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/common/check.mak -CHECK_REGISTRY = $(top_builddir)/check/test-registry.xml +CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.xml REGISTRY_ENVIRONMENT = \ GST_REGISTRY=$(CHECK_REGISTRY) @@ -33,15 +33,15 @@ check_PROGRAMS = \ elements/audiotestsrc \ elements/videotestsrc \ elements/volume \ + generic/clock-selection \ generic/states \ - pipelines/simple_launch_lines \ - clocks/selection \ + pipelines/simple-launch-lines $(check_vorbis) VALGRIND_TO_FIX = \ elements/audioresample \ generic/states \ - pipelines/simple_launch_lines + pipelines/simple-launch-lines # these tests don't even pass noinst_PROGRAMS = diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am deleted file mode 100644 index c376eaa..0000000 --- a/testsuite/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -if USE_ALSA -ALSA_DIR=alsa -else -ALSA_DIR= -endif - -# if HAVE_GTK -# EMBED_DIR=embed -# else -# EMBED_DIR= -# endif - -SUBDIRS = \ - $(ALSA_DIR) #seeking -DIST_SUBDIRS = \ - alsa - -GST_PLUGIN_PATH=$(shell cd $(top_builddir) && pwd) - -#$(TESTS): -# @echo -e '\nrunning gst-register...\n' -# $(GST_TOOLS_DIR)/gst-register --gst-plugin-path=$(GST_PLUGIN_PATH) - -#TESTS=$(GST_TOOLS_DIR)/gst-compprep - -.PHONY: $(TESTS) diff --git a/testsuite/alsa/.gitignore b/testsuite/alsa/.gitignore deleted file mode 100644 index abf7b41..0000000 --- a/testsuite/alsa/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -formats -srcstate -state diff --git a/testsuite/alsa/Makefile.am b/testsuite/alsa/Makefile.am deleted file mode 100644 index 6557bc5..0000000 --- a/testsuite/alsa/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -testprogs = formats state srcstate - -noinst_PROGRAMS = $(testprogs) - -formats_SOURCES = formats.c sinesrc.c sinesrc.h -state_SOURCES = state.c sinesrc.c sinesrc.h -srcstate_SOURCES =srcstate.c - -# we have nothing but apps here, we can do this safely -LIBS = $(GST_LIBS) -AM_CFLAGS = $(GST_CFLAGS) - -noinst_HEADERS = sinesrc.h diff --git a/testsuite/alsa/formats.c b/testsuite/alsa/formats.c deleted file mode 100644 index 0142e9d..0000000 --- a/testsuite/alsa/formats.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (C) 2003 Benjamin Otte - * - * formats.c: Tests the different formats on alsasink - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "sinesrc.h" - -GstElement *pipeline; -gint channels = 1; -gboolean sign = FALSE; -gint endianness = G_LITTLE_ENDIAN; -gint depth = 8; -gint width = 8; - -#define NUMBER_OF_INT_TESTS 28 -#define NUMBER_OF_FLOAT_TESTS 2 -#define NUMBER_OF_LAW_TESTS 2 - -gint last = 0; -gint counter = 0; - -static void create_pipeline (void); - - -static void -pre_get_func (SineSrc * src) -{ - counter++; -}; -static void -create_pipeline (void) -{ - GstElement *src; - SineSrc *sinesrc; - GstElement *alsasink; - - pipeline = gst_pipeline_new ("pipeline"); - src = sinesrc_new (); - alsasink = gst_element_factory_make ("alsasink", "alsasink"); - - gst_bin_add_many (GST_BIN (pipeline), src, alsasink, NULL); - gst_element_link (src, alsasink); - - /* prepare our sinesrc */ - sinesrc = (SineSrc *) src; - sinesrc->pre_get_func = pre_get_func; - sinesrc->newcaps = TRUE; - /* int tests */ - if (last < NUMBER_OF_INT_TESTS) { - sinesrc->type = SINE_SRC_INT; - sinesrc->sign = ((last % 2) == 0) ? TRUE : FALSE; - sinesrc->endianness = - ((last / 2) % 2 == 0) ? G_LITTLE_ENDIAN : G_BIG_ENDIAN; - switch ((last / 4) % 8) { - case 0: - sinesrc->depth = 8; - sinesrc->width = 8; - break; - case 1: - sinesrc->depth = 16; - sinesrc->width = 16; - break; - case 2: - sinesrc->depth = 24; - sinesrc->width = 32; - break; - case 3: - sinesrc->depth = 32; - sinesrc->width = 32; - break; - /* nomore tests below until i know what 24bit width means to alsa wrt endianness */ - case 4: - sinesrc->depth = 24; - sinesrc->width = 24; - break; - case 5: - sinesrc->depth = 20; - sinesrc->width = 24; - break; - case 6: - sinesrc->depth = 18; - sinesrc->width = 24; - break; - case 7: - /* not used yet */ - sinesrc->depth = 8; - sinesrc->width = 8; - break; - default: - g_assert_not_reached (); - } - - g_print ("Setting format to: format: \"int\"\n" - " sign: %s\n" - " endianness: %d\n" - " width: %d\n" - " depth: %d\n", - sinesrc->sign ? "TRUE" : "FALSE", sinesrc->endianness, - sinesrc->width, sinesrc->depth); - } else if (last < NUMBER_OF_INT_TESTS + NUMBER_OF_FLOAT_TESTS) { - gint temp = last - NUMBER_OF_INT_TESTS; - - sinesrc->type = SINE_SRC_FLOAT; - switch (temp) { - case 0: - sinesrc->width = 32; - break; - case 1: - sinesrc->width = 64; - break; - default: - g_assert_not_reached (); - } - g_print ("Setting format to float width %d\n", sinesrc->width); - } else if (last < - NUMBER_OF_INT_TESTS + NUMBER_OF_FLOAT_TESTS + NUMBER_OF_LAW_TESTS) { - gint temp = last - NUMBER_OF_INT_TESTS - NUMBER_OF_FLOAT_TESTS; - GstElement *law; - - sinesrc->type = SINE_SRC_INT; - sinesrc->sign = TRUE; - sinesrc->endianness = G_BYTE_ORDER; - sinesrc->depth = 16; - sinesrc->width = 16; - - if (temp == 0) { - law = gst_element_factory_make ("mulawenc", "mulaw"); - } else { - law = gst_element_factory_make ("alawenc", "alaw"); - } - g_assert (law); - gst_element_unlink (src, alsasink); - gst_bin_add (GST_BIN (pipeline), law); - gst_element_link_many (src, law, alsasink, NULL); - if (temp == 0) { - g_print ("Setting format to: format: \"MU law\"\n"); - } else { - g_print ("Setting format to: format: \"A law\"\n"); - } - } else { - g_print ("All formats work like a charm.\n"); - exit (0); - } - gst_element_set_state (pipeline, GST_STATE_PLAYING); -} - -gint -main (gint argc, gchar * argv[]) -{ - gst_init (&argc, &argv); - - g_print ("\n" - "This test will test the various formats ALSA and GStreamer support.\n" - "You will hear a short sine tone on your default ALSA soundcard for every\n" - "format tested. They should all sound the same (incl. volume).\n" "\n"); - create_pipeline (); - - while (pipeline) { - gst_bin_iterate (GST_BIN (pipeline)); - if ((counter / 200) > last) { - last = counter / 200; - gst_object_unref (pipeline); - create_pipeline (); - } - } - - return 0; -} diff --git a/testsuite/alsa/sinesrc.c b/testsuite/alsa/sinesrc.c deleted file mode 100644 index f0f5d86..0000000 --- a/testsuite/alsa/sinesrc.c +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (C) 2003 Benjamin Otte - * - * sinesrc.c: An elemnt emitting a sine src in lots of different formats - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "sinesrc.h" -#include -#include /* memcpy */ - -#define SAMPLES_PER_WAVE 200 - -static GstStaticPadTemplate sinesrc_src_factory = - GST_STATIC_PAD_TEMPLATE ("src", - GST_PAD_SRC, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " - "endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " - "signed = (boolean) { FALSE, TRUE }, " - "width = (int) [8, 32], " - "depth = (int) [8, 32], " - "rate = (int) [8000, 192000], " - "channels = (int) [1, 16];" - "audio/x-raw-float, " - "endianness = (int) BYTE_ORDER, " - "width = (int) {32, 64}, " - "rate = (int) [8000, 192000], " "channels = (int) [1, 16]") - ); - -static GstElementClass *parent_class = NULL; - -static void sinesrc_init (SineSrc * src); -static void sinesrc_class_init (SineSrcClass * klass); - -static GstData *sinesrc_get (GstPad * pad); -static GstStateChangeReturn sinesrc_change_state (GstElement * element, - GstStateChange transition); - - -GType -sinesrc_get_type (void) -{ - static GType sinesrc_type = 0; - - if (!sinesrc_type) { - static const GTypeInfo sinesrc_info = { - sizeof (SineSrcClass), NULL, NULL, - (GClassInitFunc) sinesrc_class_init, NULL, NULL, - sizeof (SineSrc), 0, - (GInstanceInitFunc) sinesrc_init, - }; - - sinesrc_type = g_type_register_static (GST_TYPE_ELEMENT, "SineSrc", - &sinesrc_info, 0); - } - return sinesrc_type; -} -static void -sinesrc_class_init (SineSrcClass * klass) -{ - GstElementClass *element_class = GST_ELEMENT_CLASS (klass); - - element_class->change_state = sinesrc_change_state; - - parent_class = g_type_class_ref (GST_TYPE_ELEMENT); -} - -static void -sinesrc_init (SineSrc * src) -{ - src->src = - gst_pad_new_from_template (gst_static_pad_template_get - (&sinesrc_src_factory), "src"); - gst_element_add_pad (GST_ELEMENT (src), src->src); - gst_pad_set_get_function (src->src, sinesrc_get); - - src->width = 16; - src->depth = 16; - src->sign = TRUE; - src->endianness = G_BYTE_ORDER; - src->rate = 44100; - src->channels = 1; - src->type = SINE_SRC_INT; - src->newcaps = TRUE; - - src->pre_get_func = NULL; - - GST_OBJECT (src)->name = "sinesrc"; -} - -static void -sinesrc_force_caps (SineSrc * src) -{ - GstCaps *caps; - - if (!src->newcaps) - return; - - src->newcaps = FALSE; - - switch (src->type) { - case SINE_SRC_INT: - caps = gst_caps_new_simple ("audio/x-raw-int", - "signed", G_TYPE_BOOLEAN, src->sign, - "depth", G_TYPE_INT, src->depth, NULL); - if (src->width > 8) - gst_caps_set_simple (caps, - "endianness", G_TYPE_INT, src->endianness, NULL); - break; - case SINE_SRC_FLOAT: - g_assert (src->width == 32 || src->width == 64); - caps = gst_caps_new_simple ("audio/x-raw-float", - "endianness", G_TYPE_INT, src->endianness, NULL); - break; - default: - caps = NULL; - g_assert_not_reached (); - } - gst_caps_set_simple (caps, - "width", G_TYPE_INT, src->width, - "rate", G_TYPE_INT, src->rate, - "channels", G_TYPE_INT, src->channels, NULL); - - if (gst_pad_try_set_caps (src->src, caps) != GST_PAD_LINK_OK) - g_assert_not_reached (); -} - -/* always return 1 wave - * there are 200 waves in 1 second, so the frequency is samplerate/200 - */ -static guint8 -UIDENTITY (guint8 x) -{ - return x; -}; -static gint8 -IDENTITY (gint8 x) -{ - return x; -}; - -#define POPULATE(format, be_func, le_func) G_STMT_START {\ - format val = (format) int_value;\ - format *p = data;\ - switch (src->endianness) {\ - case G_LITTLE_ENDIAN:\ - val = le_func (val);\ - break;\ - case G_BIG_ENDIAN:\ - val = be_func (val);\ - break;\ - default: \ - g_assert_not_reached ();\ - };\ - for (j = 0; j < src->channels; j++) {\ - *p = val;\ - p ++;\ - }\ - data = p;\ -} G_STMT_END - -static GstData * -sinesrc_get (GstPad * pad) -{ - GstBuffer *buf; - SineSrc *src; - - void *data; - gint i, j; - gdouble value; - - g_return_val_if_fail (pad != NULL, NULL); - src = SINESRC (gst_pad_get_parent (pad)); - - if (src->pre_get_func) - src->pre_get_func (src); - - buf = gst_buffer_new_and_alloc ((src->width / 8) * src->channels * - SAMPLES_PER_WAVE); - g_assert (buf); - data = GST_BUFFER_DATA (buf); - g_assert (data); - - for (i = 0; i < SAMPLES_PER_WAVE; i++) { - value = sin (i * 2 * M_PI / SAMPLES_PER_WAVE); - switch (src->type) { - case SINE_SRC_INT:{ - gint64 int_value = - (value + (src->sign ? 0 : 1)) * (((guint64) 1) << (src->depth - 1)); - if (int_value == - (1 + (src->sign ? 0 : 1)) * (((guint64) 1) << (src->depth - 1))) - int_value--; - switch (src->width) { - case 8: - if (src->sign) - POPULATE (gint8, IDENTITY, IDENTITY); - else - POPULATE (guint8, UIDENTITY, UIDENTITY); - break; - case 16: - if (src->sign) - POPULATE (gint16, GINT16_TO_BE, GINT16_TO_LE); - else - POPULATE (guint16, GUINT16_TO_BE, GUINT16_TO_LE); - break; - case 24: - if (src->sign) { - gpointer p; - gint32 val = (gint32) int_value; - - switch (src->endianness) { - case G_LITTLE_ENDIAN: - val = GINT32_TO_LE (val); - break; - case G_BIG_ENDIAN: - val = GINT32_TO_BE (val); - break; - default: - g_assert_not_reached (); - }; - p = &val; - if (src->endianness == G_BIG_ENDIAN) - p++; - for (j = 0; j < src->channels; j++) { - memcpy (data, p, 3); - data += 3; - } - } else { - gpointer p; - guint32 val = (guint32) int_value; - - switch (src->endianness) { - case G_LITTLE_ENDIAN: - val = GUINT32_TO_LE (val); - break; - case G_BIG_ENDIAN: - val = GUINT32_TO_BE (val); - break; - default: - g_assert_not_reached (); - }; - p = &val; - if (src->endianness == G_BIG_ENDIAN) - p++; - for (j = 0; j < src->channels; j++) { - memcpy (data, p, 3); - data += 3; - } - } - break; - case 32: - if (src->sign) - POPULATE (gint32, GINT32_TO_BE, GINT32_TO_LE); - else - POPULATE (guint32, GUINT32_TO_BE, GUINT32_TO_LE); - break; - default: - g_assert_not_reached (); - } - break; - } - case SINE_SRC_FLOAT: - if (src->width == 32) { - gfloat *p = (gfloat *) data; - gfloat fval = (gfloat) value; - - for (j = 0; j < src->channels; j++) { - *p = fval; - p++; - } - data = p; - break; - } - if (src->width == 64) { - gdouble *p = (gdouble *) data; - - for (j = 0; j < src->channels; j++) { - *p = value; - p++; - } - data = p; - break; - } - g_assert_not_reached (); - default: - g_assert_not_reached (); - } - } - - if (src->newcaps) { - sinesrc_force_caps (src); - } - return GST_DATA (buf); -} - -GstElement * -sinesrc_new (void) -{ - return GST_ELEMENT (g_object_new (TYPE_SINESRC, NULL)); -} - -void -sinesrc_set_pre_get_func (SineSrc * src, PreGetFunc func) -{ - src->pre_get_func = func; -} - -static GstStateChangeReturn -sinesrc_change_state (GstElement * element, GstStateChange transition) -{ - SineSrc *sinesrc; - - g_return_val_if_fail (element != NULL, FALSE); - sinesrc = SINESRC (element); - - switch (transition) { - case GST_STATE_CHANGE_NULL_TO_READY: - case GST_STATE_CHANGE_READY_TO_PAUSED: - case GST_STATE_CHANGE_PAUSED_TO_PLAYING: - case GST_STATE_CHANGE_PLAYING_TO_PAUSED: - break; - case GST_STATE_CHANGE_PAUSED_TO_READY: - sinesrc->newcaps = TRUE; - break; - case GST_STATE_CHANGE_READY_TO_NULL: - break; - default: - g_assert_not_reached (); - } - - if (GST_ELEMENT_CLASS (parent_class)->change_state) - return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); - - return GST_STATE_CHANGE_SUCCESS; -} diff --git a/testsuite/alsa/sinesrc.h b/testsuite/alsa/sinesrc.h deleted file mode 100644 index a5220a2..0000000 --- a/testsuite/alsa/sinesrc.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2003 Benjamin Otte - * - * sinesrc.h: Header file for sinesrc.c - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __SINESRC_H__ -#define __SINESRC_H__ - - -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define TYPE_SINESRC \ - (sinesrc_get_type()) -#define SINESRC(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),TYPE_SINESRC,SineSrc)) -#define SINESRC_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),TYPE_SINESRC,SineSrcClass)) -#define IS_SINESRC(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),TYPE_SINESRC)) -#define IS_SINESRC_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),TYPE_SINESRC)) - -typedef struct _SineSrc SineSrc; -typedef struct _SineSrcClass SineSrcClass; - -typedef void (*PreGetFunc) (SineSrc *src); - -typedef enum { - SINE_SRC_INT, - SINE_SRC_FLOAT -} SineSrcAudio; - -struct _SineSrc { - GstElement element; - - /* pads */ - GstPad *src; - - /* audio parameters */ - SineSrcAudio type; - gint width; /* int + float */ - gint depth; /* int */ - gboolean sign; /* int */ - gint endianness; /* int */ - - gint rate; - gint channels; /* interleaved */ - - gboolean newcaps; - - /* freaky stuff for testing */ - PreGetFunc pre_get_func; -}; - -struct _SineSrcClass { - GstElementClass parent_class; -}; - -GType sinesrc_get_type (void); -GstElement * sinesrc_new (void); - -void sinesrc_set_pre_get_func (SineSrc *src, PreGetFunc func); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GST_SINESRC_H__ */ diff --git a/testsuite/alsa/srcstate.c b/testsuite/alsa/srcstate.c deleted file mode 100644 index 4ae536d..0000000 --- a/testsuite/alsa/srcstate.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2003 Benjamin Otte - * - * srcstate.c: Tests alsasrc for state changes - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#include - -GstElement *pipeline; - -static void -set_state (GstState state) -{ - GstState old_state = gst_element_get_state (pipeline); - - g_print ("Setting state from %s to %s...", - gst_element_state_get_name (old_state), - gst_element_state_get_name (state)); - - if (!gst_element_set_state (pipeline, state)) { - g_print (" ERROR\n"); - exit (-1); - } - - if (state == GST_STATE_PLAYING) { - gint i; - - g_print (" DONE - iterating a bit..."); - for (i = 0; i < 5; i++) { - if (!gst_bin_iterate (GST_BIN (pipeline))) { - g_print (" ERROR in iteration %d\n", i); - exit (-2); - } - } - } - g_print (" DONE\n"); -} - -static void -create_pipeline (void) -{ - GstElement *alsasrc; - GstElement *fakesink; - - pipeline = gst_pipeline_new ("pipeline"); - alsasrc = gst_element_factory_make ("alsasrc", "alsasrc"); - fakesink = gst_element_factory_make ("fakesink", "fakesink"); - - gst_bin_add_many (GST_BIN (pipeline), alsasrc, fakesink, NULL); - gst_element_link (alsasrc, fakesink); - -} - -gint -main (gint argc, gchar * argv[]) -{ - gst_init (&argc, &argv); - - g_print ("\n" "This test will check if state changes work on the alsasrc.\n"); - create_pipeline (); - - /* simulate some state changes here */ - set_state (GST_STATE_READY); - set_state (GST_STATE_NULL); - set_state (GST_STATE_READY); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PAUSED); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_PAUSED); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_READY); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PLAYING); - - g_print ("The alsa plugin mastered another test.\n"); - - gst_object_unref (pipeline); - - return 0; -} diff --git a/testsuite/alsa/state.c b/testsuite/alsa/state.c deleted file mode 100644 index 9cbd8ac..0000000 --- a/testsuite/alsa/state.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2003 Benjamin Otte - * - * state.c: Tests alsasink for state changes - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "sinesrc.h" - -GstElement *pipeline; - -static void -set_state (GstState state) -{ - GstState old_state = gst_element_get_state (pipeline); - - g_print ("Setting state from %s to %s...", - gst_element_state_get_name (old_state), - gst_element_state_get_name (state)); - - if (!gst_element_set_state (pipeline, state)) { - g_print (" ERROR\n"); - exit (-1); - } - - if (state == GST_STATE_PLAYING) { - gint i; - - g_print (" DONE - iterating a bit..."); - for (i = 0; i < 400; i++) { - if (!gst_bin_iterate (GST_BIN (pipeline))) { - g_print (" ERROR in iteration %d\n", i); - exit (-2); - } - } - } - g_print (" DONE\n"); -} - -static void -create_pipeline (void) -{ - GstElement *src; - SineSrc *sinesrc; - GstElement *alsasink; - - pipeline = gst_pipeline_new ("pipeline"); - src = sinesrc_new (); - alsasink = gst_element_factory_make ("alsasink", "alsasink"); - - gst_bin_add_many (GST_BIN (pipeline), src, alsasink, NULL); - gst_element_link (src, alsasink); - - /* prepare our sinesrc */ - sinesrc = (SineSrc *) src; - sinesrc->newcaps = TRUE; - sinesrc->type = SINE_SRC_INT; - sinesrc->sign = TRUE; - sinesrc->endianness = G_BYTE_ORDER; - sinesrc->depth = 16; - sinesrc->width = 16; -} - -gint -main (gint argc, gchar * argv[]) -{ - gst_init (&argc, &argv); - - g_print ("\n" - "This test will check if state changes work on the alsasink.\n" - "You will hear some short sine tones on your default ALSA soundcard,\n" - "but they are not important in this test.\n" "\n"); - create_pipeline (); - - /* simulate some state changes here */ - set_state (GST_STATE_READY); - set_state (GST_STATE_NULL); - set_state (GST_STATE_READY); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PAUSED); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_PAUSED); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_READY); - set_state (GST_STATE_PLAYING); - set_state (GST_STATE_NULL); - set_state (GST_STATE_PLAYING); - - g_print ("The alsa plugin mastered another test.\n"); - - gst_object_unref (pipeline); - - return 0; -} diff --git a/testsuite/embed/Makefile.am b/testsuite/embed/Makefile.am deleted file mode 100644 index 2ffdc76..0000000 --- a/testsuite/embed/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ - -noinst_PROGRAMS = embed - -# we have nothing but apps here, we can do this safely -LIBS = $(GST_LIBS) $(GTK_LIBS) \ - $(top_builddir)/gst-libs/gst/libgstinterfaces-$(GST_MAJORMINOR).la -AM_CFLAGS = $(GST_CFLAGS) $(GTK_CFLAGS) diff --git a/testsuite/embed/embed.c b/testsuite/embed/embed.c deleted file mode 100644 index ed4a93c..0000000 --- a/testsuite/embed/embed.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Sample app for element embedding. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include - -static void -cb_expose (GtkWidget * w, GdkEventExpose * ev, GstElement * e) -{ - if (GST_IS_X_OVERLAY (e) && - !GTK_WIDGET_NO_WINDOW (w) && GTK_WIDGET_REALIZED (w)) { - gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (e), - GDK_WINDOW_XWINDOW (w->window)); - } -} - -int -main (int argc, char *argv[]) -{ - GtkWidget *window, *content; - GstElement *testsrc, *csp, *videosink, *pipeline; - - gtk_init (&argc, &argv); - gst_init (&argc, &argv); - - pipeline = gst_element_factory_make ("pipeline", NULL); - testsrc = gst_element_factory_make ("videotestsrc", NULL); - csp = gst_element_factory_make ("ffmpegcolorspace", NULL); - videosink = gst_element_factory_make (DEFAULT_VIDEOSINK, NULL); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size (GTK_WINDOW (window), 640, 480); - gtk_window_set_title (GTK_WINDOW (window), "My application"); - content = gtk_event_box_new (); - gtk_container_add (GTK_CONTAINER (window), content); - g_signal_connect (content, "expose-event", G_CALLBACK (cb_expose), videosink); - gtk_widget_show_all (window); - - gst_bin_add_many (GST_BIN (pipeline), testsrc, csp, videosink, NULL); - gst_element_link_many (testsrc, csp, videosink, NULL); - - g_idle_add ((GSourceFunc) gst_bin_iterate, pipeline); - gst_element_set_state (pipeline, GST_STATE_PLAYING); - - gtk_main (); - - return 0; -} diff --git a/testsuite/gst-lint b/testsuite/gst-lint deleted file mode 100755 index a924f05..0000000 --- a/testsuite/gst-lint +++ /dev/null @@ -1,571 +0,0 @@ -#!/usr/bin/perl -w -# vi: set ts=4: -# - -# -# GStreamer developers: please add comments on any tests you think -# are dumb or have too many false positives. -# - -# -# Future ideas: -# - spell check comments -# - check each function for at least one assertion (?) -# - check parameters that init/set/get have consistent types -# - check for gst_caps_set() without check for writeability -# - check .so files for stray symbols -# - -# -# Random "other" testing ideas -# - load each plugin individually -# - -sub check_copyright(); -sub check_license(); -sub check_buffer_alloc(); -sub check_bad_includes(); -sub check_begin_decls(); -sub check_c99_comments(); -sub check_carriage_returns(); -sub check_printf_lld(); -sub check_glibisms(); -sub check_indentation(); -sub check_no_ignore(); -sub check_deprecated(); -sub check_config_h(); -sub check_varargs_functions(); -sub check_debugging(); -sub check_old_typefind(); -sub check_bad_casts(); -sub check_old_plugin(); -sub check_signal_new(); -sub check_gnuc_const(); -sub check_caps(); -sub check_lib_deprecated(); -sub check_typo(); -sub check_explicit_caps(); -sub check_signals(); -sub check_gettext(); -sub check_padtemplate(); -sub check_parent_class(); - -sub m_check_plugindir(); -sub m_check_interfaces(); - -open FIND, "find . -name \"*.[ch]\" -print|"; - -foreach $filename () { - chomp $filename; - open FILE, "$filename"; - @lines = ; - close FILE; - - print "I: $filename\n"; - - # important stuff - check_bad_includes(); - check_printf_lld(); - check_no_ignore(); - check_deprecated(); - check_config_h(); - check_old_typefind(); - check_old_plugin(); - check_caps(); - check_lib_deprecated(); - check_typo(); - check_glibisms(); - check_explicit_caps(); - check_signals(); - check_gettext(); - check_padtemplate(); - check_parent_class(); - - # less important stuff - check_license(); - -if (0) { - check_copyright(); - - check_gnuc_const(); - check_begin_decls(); - check_buffer_alloc(); - check_c99_comments(); - check_carriage_returns(); - #check_indentation(); - check_varargs_functions(); - check_debugging(); - check_bad_casts(); - check_signal_new(); -} -} - -open FIND, "find . -name \"Makefile.am\" -print|"; - -foreach $filename () { - chomp $filename; - open FILE, "$filename"; - @lines = ; - close FILE; - - print "I: $filename\n"; - - m_check_plugindir(); - m_check_interfaces(); -} - -# -# Every source file must have a copyright block -# -sub check_copyright() -{ - if (! grep { /copyright/i; } @lines) { - print "E: no copyright block\n"; - } -} - -# -# Every source file should have a license statement -# -sub check_license() -{ - if (grep { /Lesser General Public License/; } @lines) { - print "I: license is LGPL\n"; - } elsif (grep { /Library General Public License/; } @lines) { - print "I: license is LGPL\n"; - print "W: copyright header uses \"Library\" LGPL\n"; - } elsif (grep { /General Public License/; } @lines) { - print "I: license is GPL\n"; - } else { - print "E: unknown license or no copyright block\n"; - } -} - -# -# Suggest usage of gst_buffer_new_and_alloc() -# -sub check_buffer_alloc() -{ - my $n = 0; - my $lineno = 1; - - foreach $line (@lines){ - if($line =~ /gst_buffer_new/){ - $n=5; - } - if($n>0 && $line =~ /malloc/){ - print "W: ($lineno) gst_buffer_new() followed by malloc(), suggest gst_buffer_new_and_alloc()\n"; - return; - } - $n--; - $lineno++; - } -} - -sub check_bad_includes() -{ - # - # malloc.h is non-standard (and probably not what is indended) - # - if (grep { /^#include\s+/; } @lines) { - print "E: bad header: malloc.h\n" - } -} - -sub check_begin_decls() -{ - # - # Prefer "G_BEGIN_DECLS" to 'extern "C" {' - # - if($filename =~ /\.h$/){ - if (grep { /extern\s*\"C\"\s*/; } @lines) { - print "W: extern \"C\" { should be changed to G_BEGIN_DECLS,G_END_DECLS\n"; - }elsif (!grep { /G_BEGIN_DECLS/; } @lines) { - print "E: header doesn't use G_BEGIN_DECLS\n"; - } - } -} - -# -# Prefer c89-style comments -# -sub check_c99_comments() -{ - if (grep { /\/\//; } @lines) { - print "W: //-style comments should be converted to /* */\n" - } -} - -# -# DOS end-of-line characters are just wrong -# -sub check_carriage_returns() -{ - if (grep { /\r/; } @lines) { - print "E: source has carriage returns (DOS-style files)\n" - } -} - -# -# Many uses of %lld are wrong. This could have a lot of false-positives -# -sub check_printf_lld() -{ - if (grep { /\".*\%\d*ll[du].*\"/; } @lines) { - print "W: Possible \%lld or \%llu in printf format\n" - } -} - -# -# Glib functions are preferred -# -sub check_glibisms() -{ - if (grep { /\bcalloc\s*\(/; } @lines) { - print "E: use g_malloc0() instead of calloc()\n" - } - if (grep { /\bfree\s*\(/; } @lines) { - print "E: use g_free() instead of free()\n" - } - if (grep { /\bmalloc\s*\(/; } @lines) { - print "E: use g_malloc() instead of malloc()\n" - } - if (grep { /\bprintf\s*\(/; } @lines) { - print "E: use g_print() instead of printf()\n" - } - if (grep { /\brealloc\s*\(/; } @lines) { - print "E: use g_realloc() instead of realloc()\n" - } - if (grep { /^#include\s+/; } @lines) { - print "E: ctype.h functions are not locale-independent and don't work in UTF-8 locales. Use g_ascii_is*()\n" - } -} - -# -# I don't think that indentation necessarily needs to be fixed, since -# it causes problems with patching and cvs annotate. -# -# This takes forever and isn't very useful -# -sub check_indentation() -{ - my $changed_lines; - my $percent; - - `indent -br -bad -cbi0 -cli2 -bls -l80 -ut -ce $filename -o .check_plugin.tmp`; - $changed_lines = `diff $filename .check_plugin.tmp | grep '^>' | wc -l`; - `rm -f .check_plugin.tmp`; - - $percent = int(100 * $changed_lines / $#lines); - - if($percent < 10){ - print "I: indent changed $percent % of the lines\n"; - }elsif($percent <20){ - print "W: indent changed $percent % of the lines\n"; - }else{ - print "E: indent changed $percent % of the lines\n"; - } -} - - -# -# Check (roughly) for functions whose value should not be ignored -# -sub check_no_ignore() -{ - if (grep { /^\s+gst_buffer_merge\s*\(/; } @lines) { - print "E: return value of gst_buffer_merge () possibly ignored\n"; - } - if (grep { /^\s+malloc\s*\(/; } @lines) { - print "E: return value of malloc() possibly ignored\n"; - } - if (grep { /^\s+gst_buffer_new\s*\(/; } @lines) { - print "E: return value of gst_buffer_new() possibly ignored\n"; - } -} - -# -# Check for some deprecated stuff (that _shouldn't_ be around anymore) -# -sub check_deprecated() -{ - # - # Check for old GST_DEBUG() usage - # (none found) - # - if (grep { /GST_DEBUG\s*\(\s+\d/; } @lines) { - print "E: old-style GST_DEBUG()\n"; - } - if (grep { /GST_INFO\s*\(\s+\d/; } @lines) { - print "E: old-style GST_DEBUG()\n"; - } - if (grep { /GstEventFlags/; } @lines) { - print "W: who uses GstEventFlags\n"; - } - if (grep { /g_type_class_ref/ } @lines) { - print "W: g_type_class_ref should be changed to g_type_class_peek_parent\n"; - } - -} - -# -# Every .c file should include config.h before any other headers -# No .h file should include config.h -# -sub check_config_h() -{ - if($filename =~ /\.c$/){ - # - # config.h should be wrapped - # - my @includes = grep { /^#include/; } @lines; - - if (!grep { /^#include\s+["<]config.h[">]/; } @includes) { - print "E: #include missing\n"; - }else{ - if (!($includes[0] =~ /^#include\s+["<]config.h[">]/)){ - print "E: #include is not first include\n"; - } - if(!grep { /^#ifdef HAVE_CONFIG_H/; } @lines) { - print "E: #include not surrounded by #ifdef HAVE_CONFIG_H\n"; - } - } - } - - if($filename =~ /\.h$/){ - if (grep { /^#include\s+["<]config.h[">]/; } @lines) { - print "E: headers should not #include \n"; - } - } - -} - -# -# Check for functions that take varargs to make sure they are -# named correctly -# -sub check_varargs_functions() -{ - if($filename =~ /\.h$/){ - if (grep { /varargs/; } @lines) { - print "I: has varargs\n"; - } - } -} - -# -# Debugging checks -# -sub check_debugging() -{ - if (grep { /\Wg_print\W/ || /\Wprintf\W/ && /\Wfprintf\W/; } @lines) { - print "W: friendly libraries don't print to stdio or stderr\n"; - } - - if (grep { /GST_DEBUG.*\\n"/; } @lines) { - print "W: possible newline in GST_DEBUG()\n"; - } - -} - -# -# check for plugindir= -# -sub m_check_plugindir() -{ - if (grep { /plugindir\s*=/; } @lines) { - print "E: plugindir= is no longer necessary\n"; - } -} - -# -# check for old typefinding code -# -sub check_old_typefind() -{ - if (grep { /GstTypeDefinition/ || /GstTypeFactory/ } @lines) { - print "E: old typefind interface has been removed\n"; - } -} - -# -# check for casts that we've deemed incorrect (fix the prototype) -# -sub check_bad_casts() -{ - if (grep { /GBaseInitFunc/ || /GBaseFinalizeFunc/ || - /GClassInitFunc/ || /GClassFinalizeFunc/ || - /GInstanceInitFunc/ || /GInterfaceInitFunc/ || - /GInterfaceFinalizeFunc/ } @lines) { - print "W: bad casts (fix prototype)\n"; - } - if (grep { /\(\s*Gst[A-Z][A-Za-z]*\s*\*\s*\)/ } @lines ) { - print "W: use GST_XXX() instead of (GstXxx *)\n"; - } - -} - -# -# check for old plugin code -# -sub check_old_plugin() -{ - if (grep { /plugin_init.*GModule.*GstPlugin/ } @lines) { - print "E: old plugin interface detected\n"; - } - if (grep { /GstPluginDesc.*plugin_desc/ } @lines) { - print "W: should use GST_PLUGIN_DEFINE() instead of GstPluginDesc\n"; - } -} - -# -# Check for calls to g_signal_new() with a callback type of G_TYPE_POINTER -# -sub check_signal_new() -{ - my $n = 0; - my $lineno = 1; - - foreach $line (@lines){ - if($line =~ /g_signal_new/){ - $n=5; - } - if($n>0 && $line =~ /G_TYPE_POINTER/){ - print "W: ($lineno) g_signal_new() with callback type of G_TYPE_POINTER. Register and use a boxed type instead.\n"; - return; - } - $n--; - $lineno++; - } -} - -# -# Check that libgstinterfaces is in LDADD -# -sub m_check_interfaces() -{ - if (grep { /libgstinterfaces.la/ } @lines) { - if (! grep { /libgstinterfaces_la/ } @lines) { - if (! grep { /_LDADD.*libgstinterfaces.la/ } @lines) { - print "E: libgstinterfaces.la not in LDADD\n"; - } - } - } -} - -# -# Check that get_type() functions return G_CONST_RETURN GType -# -sub check_gnuc_const() -{ - my $n = 0; - my $lineno = 1; - - foreach $line (@lines){ - if($line =~ /GType.*get_type.*/ && - !($line =~ /GType.*get_type.*G_GNUC_CONST/)) { - - print "E: get_type function does not have G_GNUC_CONST attribute\n"; - } - } -} - -# -# Check caps usage -# -sub check_caps() -{ - if (grep { /gst_pad_get_caps/ } @lines) { - print "E: elements should not call gst_pad_get_caps(), use gst_pad_get_allowed_caps()\n"; - } -} - -# -# Check for use of deprecated functions -# -sub check_lib_deprecated() -{ - if (grep { /bzero/ } @lines) { - print "E: change bzero() to memset()\n"; - } -} - -# -# Check for typos -# -sub check_typo() -{ - if (grep { /;\s*;\s*$/ } @lines) { - print "W: typo? \";;\"\n"; - } -} - -# -# set_explicit_caps() should preceed pad_add() -# -sub check_explicit_caps() -{ - my $n = 0; - my $lineno = 1; - - foreach $line (@lines){ - if($line =~ /gst_element_add_pad/){ - $n=10; - } - if($n>0 && $line =~ /gst_pad_set_explicit_caps/){ - print "W: ($lineno) explicit caps should be set before adding pad\n"; - return; - } - $n--; - $lineno++; - } -} - -# -# Check for - in signal names -# -sub check_signals() -{ - if (grep { /g_signal_new.*\".*-.*\"/; } @lines) { - print "E: g_signal_new() with a signal name with a - in it (we prefer _)\n" - } -} - -# -# Check for things that gettext gets wrong -# -sub check_gettext() -{ - if (grep { /\b_\(.*G_GU?INT64_FORMAT/ || - /\b_\(.*GST_TIME_FORMAT/ || - /\b_\(.*GST_FOURCC_FORMAT/ } @lines) { - print "E: gettext doesn't handle format strings that are defines\n" - } -} - -# -# Check that pad templates are statically scoped -# -sub check_padtemplate() -{ - foreach $line (@lines){ - if ($line =~ /GstStaticPadTemplate/ && !($line =~ /static/)) { - print "W: pad template definitions should be static\n"; - return; - } - } -} - -# -# Check that parent_class is statically scoped -# -sub check_parent_class() -{ - foreach $line (@lines){ - if ($line =~ /Gst.*\*\s*parent_class/ && !($line =~ /static/)) { - print "E: parent_class definitions should be static\n"; - return; - } - } -} - -- 2.7.4