Changing filesink location after a mux with many inputs.

Paddy pat.blanchon at gmail.com
Wed Sep 12 03:14:28 PDT 2012


More progress ...

I've recovered the 1.3sec of missing video. This is what I now do when I
want to change the filesink location on the fly:
1)  install/enable a handoff function on an identity element inserted
between the x264enc & videoQ elements which simply looks for keyframes (see
above pipeline).
2)  when a keyframe is detected block both queue src pads & disable the
handoff
3)  in the first blocked callback, unlink the mux/sink bin from both queues
& send an EOS event to the audio & video sink pads in the mux/sink bin. I
have to do this - without the EOS I never see the second callback. I can
also confirm that both EOS's find their way to the mux/sink bin - I missed
them in the yards of debug
4)  on the second callback a new mux/sink bin is created, added & synced to
the pipeline & the queues are unblocked
5)  the mux/file bin EOS handler function sets the retiring bin state to
NULL & removes it from the pipeline

Hopefully this may help others who want to try this.

Meanwhile I still have a couple of questions:

Is the missing second block callback expected behaviour or a bug ? I never
see the second callback unless I send the EOS event. 

Bug or not: is the above procedure sound ? I'm new to gstreamer & don't have
much of a grip on its architecture, design & implementation; so there's
everything chance what I'm doing is fundamentally flawed.

Cheer again



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Changing-filesink-location-after-a-mux-with-many-inputs-tp4656116p4656271.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list