first thing, thanks for this greate multimedia framework. :) I have a problem: I can't play a URL (URI). I use playbin and decodebin. The technical description: I initialize first the gstreamer with gst_init( &argc, &argv ). It works fine. After this i create a new pipeline with function gstt_pipeline_new( "name" ); All ok. Now i create an output binary with convert, resample, volume and sink elements. Thats fine. So i add bin, link and add pad to this. GstElement *outputConvert = gst_element_factory_make ("audioconvert", "audioconvert" ); GstElement *outputResample = gst_element_factory_make ("audioresample", "audioresample" ); GstElement *outputVolume = gst_element_factory_make ("volume", "volume" ); GstElement *outputSink = PSGstHelper::audioSink(); // gives me the correct audio from systemx gst_bin_add_many( GST_BIN( m_gstBinary[ OUTPUT ] ), outputConvert, outputResample, outputVolume, outputSink, NULL ); gst_element_link_many( outputConvert, outputResample, outputVolume, outputSink, NULL ); GstPad *outputPad = gst_element_get_static_pad( outputConvert, "sink" ); gst_element_add_pad( m_gstBinary[ OUTPUT ], gst_ghost_pad_new( "sink", outputPad ) ); gst_object_unref( outputPad ); gst_object_ref( m_gstBinary[ OUTPUT ] ); After creating this binary, i create a new binary for "filesrc" GstElement *fileSource = gst_element_factory_make( "filesrc", "filesrc" ); GstElement *fileDecoder = gst_element_factory_make( "decodebin", "decodebin" ); GstElement *fileIdentity = gst_element_factory_make( "identity", "identity" ); if( fileSource && fileDecoder && fileIdentity) { gst_bin_add_many( GST_BIN( m_gstBinary[ FILE ] ), fileSource, fileDecoder, fileIdentity, NULL ); gst_element_link_many( fileSource, fileDecoder, NULL ); g_signal_connect( G_OBJECT(fileDecoder), "new-decoded-pad", G_CALLBACK(gstPadLink), fileIdentity ); GstPad * pad = gst_element_get_static_pad (fileIdentity, "src"); gst_element_add_pad( m_gstBinary[ FILE ], gst_ghost_pad_new("src", pad) ); gst_object_unref(pad); gst_object_ref( m_gstBinary[ FILE ] ); //g_timeout_add( 200, (GSourceFunc)gstQueryTimePosition, fileSource ); } After creating this binary, i create a new binary for "playbin" GstElement *httpSource = gst_element_factory_make( "playbin", "playbin" ); GstElement *httpDecoder = gst_element_factory_make( "decodebin", "decodebin" ); GstElement *httpIdentity = gst_element_factory_make( "identity", "identity" ); if( httpSource && httpDecoder && httpIdentity ) { gst_bin_add_many( GST_BIN( m_gstBinary[ HTTP ] ), httpSource, httpDecoder, httpIdentity, NULL ); gst_element_link_many( httpSource, httpDecoder, httpIdentity, NULL ); g_signal_connect( G_OBJECT(httpDecoder), "new-decoded-pad", G_CALLBACK(gstPadLink), httpIdentity ); GstPad *httpPad = gst_element_get_static_pad( httpIdentity, "src" ); gst_element_add_pad( m_gstBinary[ HTTP ], gst_ghost_pad_new( "src", httpPad ) ); gst_object_unref( httpPad ); gst_object_ref( m_gstBinary[ HTTP ] ); g_timeout_add( 200, (GSourceFunc)gstQueryTimePosition, httpSource ); } At end i set the state to ready: gst_element_set_state( m_gstPipeline, GST_STATE_READY ); gst_element_get_state( m_gstPipeline, NULL, NULL, GST_CLOCK_TIME_NONE ); Everything fine, but my problem, if i play with m_gstBinary[ FILE ] works ok, but if i play with m_gstBinary[ HTTP ] is not working. My play function sets the state to GST_STATE_PLAYING on m_gstPipeline but i get GST_STATE_CHANGE_ASYNC every time. Before I play a source I change the m_gstPipeline to the correct m_gstBinary but if it is playing I set the state to GST_STATE_NULL: m_gstPlayElement = m_gstBinary[ _binaries ]; gst_bin_add_many( GST_BIN(m_gstPipeline), m_gstPlayElement, m_gstBinary[ OUTPUT ], NULL); gst_element_link_many( m_gstPlayElement, m_gstBinary[ OUTPUT ], NULL); GstStateChangeReturn ret = gst_element_set_state( m_gstPipeline, GST_STATE_READY ); ret = gst_element_get_state( m_gstPipeline, NULL, NULL, GST_CLOCK_TIME_NONE ); Of course I catch the events from m_gstPipeline such as GST_MESSAGE_BUFFERING ... GST_MESSAGE_BUFFERING and so on. But I can't play the stream! Regards ChMaster -- GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT! Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |