From af45d10bbb624f19749482cbded590ec953ff205 Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Tue, 19 Feb 2002 18:28:05 +0000 Subject: adding a test for lame stuff Original commit message from CVS: adding a test for lame stuff --- ext/lame/Makefile.am | 7 ++++ ext/lame/test-lame.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 ext/lame/test-lame.c diff --git a/ext/lame/Makefile.am b/ext/lame/Makefile.am index 4d6c5b07..b685f80f 100644 --- a/ext/lame/Makefile.am +++ b/ext/lame/Makefile.am @@ -8,3 +8,10 @@ libgstlame_la_LIBADD = $(GST_LIBS) $(LAME_LIBS) libgstlame_la_LDFLAGS = @GST_PLUGIN_LDFLAGS@ noinst_HEADERS = gstlame.h + +CFLAGS = $(GST_CFLAGS) +LIBS = $(GST_LIBS) $(LAME_LIBS) +testprogs = test-lame +TESTS = $(testprogs) +check_PROGRAMS = $(testprogs) + diff --git a/ext/lame/test-lame.c b/ext/lame/test-lame.c new file mode 100644 index 00000000..0aaee6e9 --- /dev/null +++ b/ext/lame/test-lame.c @@ -0,0 +1,93 @@ +#include + + +/* + * this example uses tee, fakesrc, fakesink and lame + * + * it requests a new pad from tee and attaches lame and fakesink + * after iterating + * it requests another one + * this is to test if the encoder is initialized ok when adding to a + * pipe that has played + */ + +static void +error_callback (GObject *object, GstObject *orig, gchar *error) +{ + g_print ("ERROR: %s: %s\n", GST_OBJECT_NAME (orig), error); +} + +int +main (int argc, char *argv[]) +{ + GstElement *pipeline; + GstElement *src, *tee, *encoder1, *encoder2, *sink1, *sink2; + GstPad *teepad1, *teepad2; + GstCaps *caps; + + + gst_init (&argc, &argv); + + /* create elements */ + if (!(pipeline = gst_elementfactory_make ("pipeline", "pipeline"))) return 1; + if (!(src = gst_elementfactory_make ("fakesrc", "source"))) return 1; + if (!(tee = gst_elementfactory_make ("tee", "tee"))) return 1; + if (!(encoder1 = gst_elementfactory_make ("lame", "lame1"))) return 1; + if (!(encoder2 = gst_elementfactory_make ("lame", "lame2"))) return 1; + if (!(sink1 = gst_elementfactory_make ("fakesink", "sink1"))) return 1; + if (!(sink2 = gst_elementfactory_make ("fakesink", "sink2"))) return 1; + + pipeline = gst_pipeline_new ("pipeline"); + g_signal_connect (pipeline, "error", G_CALLBACK (error_callback), NULL); + + /* set up input */ + g_print ("setting up input\n"); + gst_bin_add (GST_BIN (pipeline), src); + gst_bin_add (GST_BIN (pipeline), tee); + gst_pad_connect (gst_element_get_pad (src, "src"), + gst_element_get_pad (tee, "sink")); + + /* set caps on fakesrc */ + caps = GST_CAPS_NEW ( + "input audio", + "audio/raw", + "format", GST_PROPS_STRING ("int"), + "rate", GST_PROPS_INT (44100) + ); + g_assert (caps != NULL); + g_print ("Setting caps on fakesrc's src pad\n"); + if (! (gst_pad_try_set_caps (gst_element_get_pad (src, "src"), caps))) + g_print ("Could not set caps !\n"); + + /* request first pad from tee and connect */ + g_print ("attaching first output pipe to tee\n"); + teepad1 = gst_element_request_pad_by_name (tee, "src%d"); + + gst_bin_add (GST_BIN (pipeline), encoder1); + gst_bin_add (GST_BIN (pipeline), sink1); + gst_pad_connect (teepad1, gst_element_get_pad (encoder1, "sink")); + gst_pad_connect (gst_element_get_pad (encoder1, "src"), + gst_element_get_pad (sink1, "sink")); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + /* iterate */ + g_print ("iterate\n"); + gst_bin_iterate (GST_BIN (pipeline)); + gst_element_set_state (pipeline, GST_STATE_PAUSED); + + /* request second pad and connect */ + g_print ("attaching second output pipe to tee\n"); + teepad2 = gst_element_request_pad_by_name (tee, "src%d"); + + gst_bin_add (GST_BIN (pipeline), encoder2); + gst_bin_add (GST_BIN (pipeline), sink2); + gst_pad_connect (teepad2, gst_element_get_pad (encoder2, "sink")); + gst_pad_connect (gst_element_get_pad (encoder2, "src"), + gst_element_get_pad (sink2, "sink")); + + gst_element_set_state (pipeline, GST_STATE_PLAYING); + g_print ("iterate\n"); + gst_bin_iterate (GST_BIN (pipeline)); + g_print ("done\n"); + return 0; +} -- cgit v1.2.3