diff -r bd3829c2e9c9 -r 051875c9e136 gst-plugins-mythtv/mythtvsrc-test.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gst-plugins-mythtv/mythtvsrc-test.c Thu Sep 21 00:33:03 2006 +0100 @@ -0,0 +1,85 @@ +#include + +static gboolean +bus_call (GstBus *bus, + GstMessage *msg, + gpointer data) +{ + GMainLoop *loop = data; + + switch (GST_MESSAGE_TYPE (msg)) { + case GST_MESSAGE_EOS: + g_print ("End-of-stream\n"); + g_main_loop_quit (loop); + break; + case GST_MESSAGE_ERROR: { + gchar *debug; + GError *err; + + gst_message_parse_error (msg, &err, &debug); + g_free (debug); + + g_print ("Error: %s\n", err->message); + g_error_free (err); + + g_main_loop_quit (loop); + break; + } + default: + break; + } + + return TRUE; +} + +gint +main (gint argc, + gchar *argv[]) +{ + GstElement *pipeline, *filesrc, *decoder, *filter, *sink; + GMainLoop *loop; + + /* initialization */ + gst_init (&argc, &argv); + loop = g_main_loop_new (NULL, FALSE); + if (argc != 2) { + g_print ("Usage: %s \n", argv[0]); + return 01; + } + + /* create elements */ + pipeline = gst_pipeline_new ("mythtvsrc_pipeline"); + gst_bus_add_watch (gst_pipeline_get_bus (GST_PIPELINE (pipeline)), + bus_call, loop); + + filesrc = gst_element_factory_make ("mythtvsrc", "mythtvsrc"); + decoder = gst_element_factory_make ("mad", "my_decoder"); + filter = gst_element_factory_make ("my_filter", "my_filter"); + sink = gst_element_factory_make ("osssink", "audiosink"); + if (!sink || !decoder) { + g_print ("Decoder or output could not be found - check your install\n"); + return -1; + } else if (!filter) { + g_print ("Your self-written filter could not be found. Make sure it " + "is installed correctly in $(libdir)/gstreamer-0.9/ and that " + "you've ran gst-register-0.9 to register it. Check availability " + "of the plugin afterwards using \"gst-inspect-0.9 my_filter\""); + return -1; + } + + g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL); + + /* link everything together */ + gst_element_link_many (filesrc, decoder, filter, sink, NULL); + gst_bin_add_many (GST_BIN (pipeline), filesrc, decoder, filter, sink, NULL); + + /* run */ + gst_element_set_state (pipeline, GST_STATE_PLAYING); + g_main_loop_run (loop); + + /* clean up */ + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (GST_OBJECT (pipeline)); + + return 0; +}