hi,
J. Rios wrote: > Sorry If I should not email you directly but you have been of lot of > help in other problems. > Im the developer of a music player called Guayadeque and Im trying to > implement crossfade to it. > > I have a main pipeline with a continuous playing where I add or remove > playbins when are needed. My problem is when I add a paused playbin > to the pipeline. It works out 3 or 4 times of 5 but fails the others. Still, please keep the discussion on the list. What I would recommend is to listen for errors on the bus from your app. If you receive an error, call GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(bin, details, file_name). Run your app using GST_DEBUG_DUMP_DOT_DIR=$PWD, convert the generated dot file to svg or png and look at it. Most probably something is still pushing after you unliked it and that is fatal. Stefan > > The playbin is > uridecodebin ! audioconvert ! audioresample ! queue ! capsfilter ! > volume > > This is linked and unlinked to an Adder of the pipeline > > To link it I use > > if( !m_HasParent ) > { > gst_bin_add( GST_BIN( m_ParentBin ), m_PlayBin ); > m_HasParent = true; > } > > m_AdderPad = gst_element_get_request_pad( m_Adder, "sink%d" ); > if( !m_AdderPad ) > guLogError( wxT( "Could not create a new adder pad for the > fader playbin" ) ); > > gst_pad_link( m_SourcePad, m_AdderPad ); > > if( m_SourceBlocked ) > { > gst_pad_set_blocked( m_SourcePad, false ); > } > > gst_element_set_state( GST_ELEMENT( m_PlayBin ), GST_STATE_PLAYING ); > > To Unlink it I use > > m_SourceBlocked = gst_pad_set_blocked( m_SourcePad, true ); > if( !m_SourceBlocked ) > guLogMessage( wxT( "Could not block the source pad for stream > '%s'" ), GetUri().c_str() ); > > if( gst_pad_unlink( m_SourcePad, m_AdderPad ) == FALSE ) > { > guLogError( wxT( "Could not unlink the fader playbin." ) ); > } > > gst_element_release_request_pad( m_Adder, m_AdderPad ); > > if( gst_element_set_state( m_PlayBin, GST_STATE_PAUSED ) == > GST_STATE_CHANGE_FAILURE ) > guLogMessage( wxT( "Could not put the fader playbin to NULL > state" ) ); > > > I posted the output of gstreamer debug in the next url > http://pastebin.com/6LRNsAKg > > The part that gives the problem is this > > 0:00:38.625853220 8341 0x2e4feb0 INFO audioconvert > gstaudioconvert.c:383:gst_audio_convert_get_unit_size:<pb_audioconvert> > unit_size = 4 > 16:09:55: MediaCtrl::Play > 16:09:55: 0) 7 > 16:09:55: 1) 3 > 16:09:55: LinkAndStart........ > 16:09:55: Creating a new adder pad > 0:00:38.635971335 8341 0x1448cd0 INFO GST_ELEMENT_PADS > gstelement.c:727:gst_element_add_pad:<adder> adding pad 'sink5' > 16:09:55: Created a new adder pad > 16:09:55: Linking the new faderplaybin a new adder pad > 0:00:38.636024554 8341 0x1448cd0 INFO GST_PADS > gstpad.c:1874:gst_pad_link_prepare: trying to link bin4:src and > adder:sink5 > 0:00:38.637689361 8341 0x1448cd0 INFO GST_PADS > gstpad.c:2047:gst_pad_link: linked bin4:src and adder:sink5, successful > 16:09:55: Linked the new faderplaybin a new adder pad > 16:09:55: The faderbin started at position 38316431000 > 0:00:38.637831907 8341 0x189e900 INFO basesrc > gstbasesrc.c:2326:gst_base_src_loop:<source> pausing after > gst_pad_push() = not-linked > 0:00:38.637872694 8341 0x189e900 WARN basesrc > gstbasesrc.c:2378:gst_base_src_loop:<source> error: Error en el flujo > de datos interno. > 0:00:38.637881773 8341 0x189e900 WARN basesrc > gstbasesrc.c:2378:gst_base_src_loop:<source> error: streaming task > paused, reason not-linked (-1) > 0:00:38.637907335 8341 0x189e900 INFO GST_ERROR_SYSTEM > gstelement.c:1763:gst_element_message_full:<source> posting message: > Error en el flujo de datos interno. > 0:00:38.637926053 8341 0x189e900 INFO GST_ERROR_SYSTEM > gstelement.c:1786:gst_element_message_full:<source> posted error > message: Error en el flujo de datos interno. > 0:00:38.637942675 8341 0x189e900 INFO GST_PADS > gstpad.c:3337:gst_pad_event_default_dispatch:<id3demux1:sink> Sending > event 0x7f7a2001bb00 (eos) to all internally linked pads > 0:00:38.637954897 8341 0x189e900 INFO GST_PADS > gstpad.c:3337:gst_pad_event_default_dispatch:<apedemux1:sink> Sending > event 0x7f7a2001bb00 (eos) to all internally linked pads > 0:00:38.639039951 8341 0x1448cd0 INFO GST_STATES > gstelement.c:2238:gst_element_continue_state:<volume3> completed state > change to PLAYING > 0:00:38.639062161 8341 0x1448cd0 INFO GST_STATES > gstelement.c:2251:gst_element_continue_state:<volume3> posting > state-changed PAUSED to PLAYING > > I dont understand if the it says it was linked successfully then it > says '...pausing after gst_pad_push() = not-linked' > > What is my problem? what should be the way to unlink and link a > playbin to a playing playbin without affecting it ? > Should I use another aproach? > > Thanks in advance > Juan Rios > > ------------------------------------------------------------------------------ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |