pipeline failure when going from cmdline to app.
Nathanael D. Noblet
nathanael at gnat.ca
Thu Mar 10 22:55:33 PST 2011
On 03/10/2011 11:15 PM, Ashwini Sharma wrote:
> Hi All,
>
> I am trying to play a mp4 file. When I play from command line using the
> pipe:
> "gst-launch filesrc location=/home/ashwini/streams/output.ts !
> mpegtsparse ! mpegtsdemux ! decodebin ! ffmpegcolorspace ! ximagesink"
>
> The video is displayed well.
> But when i try to achieve the same pipe thru the application, It fails.
>
> The code snippet of pipelie creation is as follows:
>
> pipeline = gst_pipeline_new ("gst-player");
> //gst_debug_set_default_threshold(GST_LEVEL_DEBUG);
> gst_debug_set_threshold_for_name("mpegtsparse",GST_LEVEL_DEBUG);
> src = gst_element_factory_make ("filesrc", NULL);
> g_assert (src);
> g_print("URI = %s\n",uri);
> g_object_set (G_OBJECT (src), "location", uri, NULL);
> parse = gst_element_factory_make ("mpegtsparse", NULL);
> g_assert (parse);
> demux = gst_element_factory_make ("mpegtsdemux", NULL);
> g_assert (demux);
> dec = gst_element_factory_make ("decodebin", NULL);
> g_assert (dec);
> csp = gst_element_factory_make ("ffmpegcolorspace", NULL);
> g_assert (csp);
> videosink = gst_element_factory_make ("ximagesink", NULL);
> g_assert (videosink);
>
> /* Adding elements to the pipeline */
> gst_bin_add_many (GST_BIN (pipeline), src, parse, demux, dec, csp,
> videosink, NULL);
> // gst_bin_add_many (GST_BIN (pipeline), src, videosink, NULL);
> // g_assert (gst_element_link_many (src, parse, demux, dec, csp,
> videosink, NULL));
> g_assert (gst_element_link (src, parse));
> g_assert (gst_element_link (parse, demux));
> gst_element_link (demux, dec);
> (gst_element_link (dec, csp));
> (gst_element_link (csp, videosink));
> if (GST_IS_X_OVERLAY (videosink))
> {
> gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (videosink),
> GPOINTER_TO_INT (window));
> }
>
> gst_element_set_state (pipeline, GST_STATE_PLAYING);
>
> What could be causing it to fail. (In the above snippet described, I
> have used the gst-player code and modified the pipe to current state)
>
> Any help is appreciated.
You need to listen for 'pad-added' signal from the decoder and check the
gst_element_link() calls for success.
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-helloworld.html
--
Nathanael d. Noblet
t 403.875.4613
More information about the gstreamer-devel
mailing list