Preroll with appsink (pull mode)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Preroll with appsink (pull mode)

John OCallaghan
Hi All
 
Am hoping someone out there can he me out. I’ve been trying to setup my pipeline
 
uridecode
-> audioconvert -> appsink_audio
-> videoconvert -> appsink_video
 
to be a preroll pull mode pipeline.
When I add debug to my GST event loop I can see that all the elements are moving into the GST_PLAYING state except for the appsinks (both audio and video). They are moving from NULL -> READY. But they don’t budge out of READY.
 
How I setup my pipeline:
When I init the pipeline I add all elements and then set the locked state on all elements downstream of the uridecode and set the pipeline to GST_PAUSED
When I get a pad_added event I add a GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM probe.
In the downstream block callback I unlock the elements associated with that pad (audioconvert, appsink_audio or videoconvert, appsink_video) and link the pad to the audio/video convert element.
When all the downstream block callbacks are called I send a message to my GST main loop telling it to set the pipeline state to GST_PLAYING.
 
At this point I see lots of state changes occurring across all my elements as they move into PLAYING state. All except those 2 appsinks….
 
Is there something about the appsink element that I am missing? When I turn on GST_DEBUG the last mention I see from my audio appsink is this:
gst_bin_change_state_func:<controller-pipeline> child 'appsink_audio' is changing state asynchronously to PLAYING
 
Anyone out there got any ideas on what I am doing wrong here or how I might proceed with debug?
 
Thanks in advance!
John
Loading...