mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
adding a test for lame stuff
Original commit message from CVS: adding a test for lame stuff
This commit is contained in:
parent
d93eb7d436
commit
1f96ea4847
2 changed files with 100 additions and 0 deletions
|
@ -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)
|
||||
|
||||
|
|
93
ext/lame/test-lame.c
Normal file
93
ext/lame/test-lame.c
Normal file
|
@ -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;
|
||||
}
|
Loading…
Reference in a new issue