summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2002-02-19 18:28:05 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2002-02-19 18:28:05 +0000
commitaf45d10bbb624f19749482cbded590ec953ff205 (patch)
treebbb8b6d3f23d57bc9a91dae43f89d212ab56c343
parenta7d1c9e38b1cb314a871aa94c456f087e7c5e932 (diff)
adding a test for lame stuff
Original commit message from CVS: adding a test for lame stuff
-rw-r--r--ext/lame/Makefile.am7
-rw-r--r--ext/lame/test-lame.c93
2 files changed, 100 insertions, 0 deletions
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 <gst/gst.h>
+
+
+/*
+ * 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;
+}