X-Git-Url: http://git.maemo.org/git/?p=mafwsubrenderer;a=blobdiff_plain;f=gst-plugins-base-subtitles0.10%2Ftests%2Fold%2Ftestsuite%2Falsa%2Fformats.c;fp=gst-plugins-base-subtitles0.10%2Ftests%2Fold%2Ftestsuite%2Falsa%2Fformats.c;h=e6ca8f11c133fca48576975828155d520d2bf939;hp=0000000000000000000000000000000000000000;hb=57ba96e291a055f69dbfd4ae9f1ae2390e36986e;hpb=be2c98fb83895d10ac44af7b9a9c3e00ca54bf49 diff --git a/gst-plugins-base-subtitles0.10/tests/old/testsuite/alsa/formats.c b/gst-plugins-base-subtitles0.10/tests/old/testsuite/alsa/formats.c new file mode 100644 index 0000000..e6ca8f1 --- /dev/null +++ b/gst-plugins-base-subtitles0.10/tests/old/testsuite/alsa/formats.c @@ -0,0 +1,184 @@ +/* + * 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; +}