gst-launch works but application does not

Stefan Sauer ensonic at hora-obscura.de
Mon Feb 6 06:26:13 PST 2012


On 02/04/2012 04:23 AM, art vanderhoff wrote:
> Hello,
>
> Can you please give me some advice on why the below launch pipeline works
> but the application does not.
>
> In the application the first filesrc starts to play but the output file does
> not rcv anything. the decoder callback indicates the pad is set so input
> looks ok.
>
> Thanks
> Art.
>
>
> gst-launch-0.10 version 0.10.35
> GStreamer 0.10.35
> Debian squeeze amd64
> ---------------
> gst-launch \
> -v filesrc location=/home/fifo/mpegpipe1.yuv ! \

if you want to just re-scale and/or re-layout raw data, use videoparse
instead of decodebin2.

Stefan
> decodebin2 ! \
> ffmpegcolorspace ! \
> videoscale ! \
> capsfilter 
> caps="video/x-raw-yuv,format=(fourcc)I420,width=384,height=216,framerate=(fraction)25/1" 
> ! \
> filesink  location=/home/fifo/mpegpipe2.yuv
> ------------
>
>
> ------------
> #include <gst/gst.h>
> #include <glib.h>
>
> static void
> on_pad_added (GstElement *element,
>               GstPad     *pad,
>               gpointer    data)
> {
>   GstPad *sinkpad;
>   GstElement *decoder = (GstElement *) data;
>
>  g_print ("Dynamic pad created, linking out/in \n");
>
>  sinkpad = gst_element_get_static_pad (decoder, "sink");
>
>   gst_pad_link (pad, sinkpad);
>
>   gst_object_unref (sinkpad);
> }
>
> int
> main (int   argc,
>       char *argv[])
> {
>   GMainLoop *loop;
>   gboolean link_ok;
>
>   GstElement *pipeline, *source, *decoder, *ffcs, *vidsc, *capsfout, *sink;
>   GstBus *bus;
>   GstCaps *filtercaps;
>
>
>   /* Initialisation */
>   gst_init (&argc, &argv);
>
>   loop = g_main_loop_new (NULL, FALSE);
>
>   /* Create gstreamer elements */
>   pipeline = gst_pipeline_new ("video-player");
>   source   = gst_element_factory_make ("filesrc",       	"source");
>   decoder  = gst_element_factory_make ("decodebin2",    	"decoder");
>   ffcs     = gst_element_factory_make ("ffmpegcolorspace", 	"ffcs");
>   vidsc    = gst_element_factory_make ("videoscale", 		"vidsc");
>   capsfout = gst_element_factory_make ("capsfilter", 		"capsfout");
>   sink     = gst_element_factory_make ("filesink", 			"sink");
>
>   if (!pipeline || !source || !decoder || !ffcs || !vidsc || !capsfout ||
> !sink) {
>     g_printerr ("One element could not be created. Exiting.\n");
>     return -1;
>   }
>
>
>   g_object_set (G_OBJECT (source), "location", argv[1], NULL);
>   g_object_set (G_OBJECT (sink), "location", argv[2], NULL);
>
>   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>
>   gst_bin_add_many (GST_BIN (pipeline),
>                     source, decoder, ffcs, vidsc, capsfout, sink, NULL);
>
>   gst_element_link_many ( source, decoder, ffcs, vidsc, capsfout, sink, 
> NULL);
>
>   g_signal_connect (decoder, "pad-added", G_CALLBACK (on_pad_added),
> decoder);
>
>  filtercaps = gst_caps_new_simple("video/x-raw-yuv",
> 	      	  	  	  "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('I', '4', '2',
> '0'),
> 	       	  	  	  "width", G_TYPE_INT, 384,
> 		    	      "height", G_TYPE_INT, 216,
> 		    	      "framerate", GST_TYPE_FRACTION, 25, 1,
> 		    	      NULL);
>
>   g_object_set (G_OBJECT (capsfout), "caps", filtercaps, NULL);
>         gst_caps_unref (filtercaps);
>
>
>   /* Set the pipeline to "playing" state*/
>   g_print ("Now playing: %s\n", argv[1]);
>   gst_element_set_state (pipeline, GST_STATE_PLAYING);
>
>
>   /* Iterate */
>   g_print ("Running...\n");
>   g_main_loop_run (loop);
>
>
>   /* Out of the main loop, clean up nicely */
>   g_print ("Returned, stopping playback\n");
>   gst_element_set_state (pipeline, GST_STATE_NULL);
>
>   g_print ("Deleting pipeline\n");
>   gst_object_unref (GST_OBJECT (pipeline));
>
>   return 0;
> }
>
> ------------------
> compiled with 
> gcc -Wall helloWorld.c -o helloWorld $(pkg-config --cflags --libs
> gstreamer-0.10)
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gst-launch-works-but-application-does-not-tp4356468p4356468.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



More information about the gstreamer-devel mailing list