[gst-devel] gstreamer problem

pritesh digitaldsp at excite.com
Wed Sep 26 06:04:07 CEST 2007


 

hi,i think you should try with fluendo mpegts demuxer.you can download it from fluendo site free of cost.cheers!digitaldsp --- On Tue 09/25, sangita pithadia < sangitapithadia at gmail.com > wrote:From: sangita pithadia [mailto: sangitapithadia at gmail.com]To: gstreamer-devel at lists.sourceforge.netDate: Tue, 25 Sep 2007 12:18:19 +0000Subject: [gst-devel] gstreamer problemHi,I m trying to play MPEG TS using gstreamer pipeline. This is the pipeline which i have used to playback the file. It works fine.gst-launch -v filesrc location=/root/GStremerDir/gstreamer-0.10.13/ed24p_00.ts ! ffdemux_mpegts ! ffdec_mpeg2video ! queue ! videoscale ! ffmpegcolorspace ! xvimagesink Same thing i tried to do using the code but it doesnt play.my code is like..#include#define SOURCE "filesrc"#define VSINK "xvimagesink"#define ASINK "alsasink"#include #include //#include #include #include const gchar * location = "file:///root/GStremerDir/ed24p_00.ts";static 
GList *seekable_pads = NULL;static GList *rate_pads = NULL;static GstElement *pipeline;static GList *seekable_elements = NULL;typedef struct{	const gchar *padname;	GstPad *target;	GstElement *bin;}dyn_link;static gbooleanbus_call (GstBus     *bus,	  GstMessage *msg,	  gpointer    data){  GMainLoop *loop = (GMainLoop *) 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;  }}static GstElement *gst_element_factory_make_or_warn (gchar * type, gchar * name){	GstElement *element = gst_element_factory_make (type, name);		if (!element) {	g_warning ("Failed to create element %s of type 
%s", name, type);	}		return element;}static void dynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer data){	gchar *padname;	dyn_link *connect = (dyn_link *) data;		padname = gst_pad_get_name (newpad);		if (connect->padname == NULL || !strcmp (padname, connect->padname)) {	if (connect->bin)	gst_bin_add (GST_BIN (pipeline), connect->bin);	gst_pad_link (newpad, connect->target);		seekable_pads = g_list_prepend (seekable_pads, newpad);	rate_pads = g_list_prepend (rate_pads, newpad);	}	g_free (padname);}static void setup_dynamic_link (GstElement * element, const gchar * padname,    GstPad * target, GstElement * bin){	dyn_link *connect;		connect = g_new0 (dyn_link, 1);	connect->padname = g_strdup (padname);	connect->target = target;	connect->bin = bin;		g_signal_connect (G_OBJECT (element), "pad-added", G_CALLBACK (dynamic_link),	connect);}int main(int argc,char *argv[]){	static GstElement *bin;		GstBus *bus;	GMainLoop *loop;	
GstElement *pipeline, *audio_bin, *video_bin;	GstElement *src, *demux, *a_decoder, *v_decoder, *v_filter;	GstElement *audiosink, *videosink;	GstElement *a_queue, *v_queue, *v_scale;	GstPad *seekable;	GstPad *pad;		gst_init (&argc, &argv);	loop = g_main_loop_new (NULL, FALSE);	if (argc != 2) 	{   		g_print ("Usage: %s \n", argv[0]);   		return -1;  	}	pipeline = gst_pipeline_new ("app");		src = gst_element_factory_make_or_warn (SOURCE, "src");	g_object_set (G_OBJECT (src), "location", argv[1], NULL);		//demux = gst_element_factory_make_or_warn ("mpegdemux", "demux");	demux = gst_element_factory_make_or_warn ("ffdemux_mpegts", "demux");		gst_bin_add (GST_BIN (pipeline), src);	gst_bin_add (GST_BIN (pipeline), demux);	gst_element_link (src, demux);		audio_bin = gst_bin_new ("a_decoder_bin");	a_decoder = gst_element_factory_make_or_warn ("mad", "a_dec");	a_queue = 
gst_element_factory_make_or_warn ("queue", "a_queue");	audiosink = gst_element_factory_make_or_warn (ASINK, "a_sink");	gst_bin_add (GST_BIN (audio_bin), a_decoder);	gst_bin_add (GST_BIN (audio_bin), a_queue);	gst_bin_add (GST_BIN (audio_bin), audiosink);		gst_element_link (a_decoder, a_queue);	gst_element_link (a_queue, audiosink);		gst_bin_add (GST_BIN (pipeline), audio_bin);		pad = gst_element_get_pad (a_decoder, "sink");	gst_element_add_pad (audio_bin, gst_ghost_pad_new ("sink", pad));	gst_object_unref (pad);		setup_dynamic_link (demux, "audio_c0", gst_element_get_pad (audio_bin,		"sink"), NULL);		video_bin = gst_bin_new ("v_decoder_bin");	v_decoder = gst_element_factory_make_or_warn ("mpeg2dec", "v_dec");	v_queue = gst_element_factory_make_or_warn ("queue", "v_queue");	v_scale = gst_element_factory_make_or_warn ("videoscale", 
"v_scale");	v_filter = gst_element_factory_make_or_warn ("ffmpegcolorspace", "v_filter");	videosink = gst_element_factory_make_or_warn (VSINK, "v_sink");		gst_bin_add (GST_BIN (video_bin), v_decoder);	gst_bin_add (GST_BIN (video_bin), v_queue);	gst_bin_add (GST_BIN (video_bin), v_scale);	gst_bin_add (GST_BIN (video_bin), v_filter);	gst_bin_add (GST_BIN (video_bin), videosink);		gst_element_link (v_decoder, v_queue);	gst_element_link (v_queue, v_scale);	gst_element_link (v_scale, v_filter);	gst_element_link (v_filter, videosink);		gst_bin_add (GST_BIN (pipeline), video_bin);		pad = gst_element_get_pad (v_decoder, "sink");	gst_element_add_pad (video_bin, gst_ghost_pad_new ("sink", pad));	gst_object_unref (pad);		setup_dynamic_link (demux, "video_e0", gst_element_get_pad (video_bin,		"sink"), NULL);		/*seekable = gst_element_get_pad (v_filter, "src");	seekable_pads = g_list_prepend 
(seekable_pads, seekable);	rate_pads = g_list_prepend (rate_pads, seekable);	rate_pads =	g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));*/	bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));  	gst_bus_add_watch (bus, bus_call, loop);  	 	gst_element_set_state (pipeline, GST_STATE_PLAYING);	/* now run */	g_main_loop_run (loop);	gst_element_set_state (pipeline, GST_STATE_NULL);  	gst_object_unref (GST_OBJECT (pipeline));	gst_object_unref (bus);  	exit (0);}Can anyone tell me what can be the cause of this.Thanks in advance.-------------------------------------------------------------------------This SF.net email is sponsored by: MicrosoftDefy all challenges. Microsoft(R) Visual Studio 2005.http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________gstreamer-devel mailing listgstreamer-devel at lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/gstreamer-devel

_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20070926/3803aa67/attachment.htm>


More information about the gstreamer-devel mailing list