How to switch element exactly on force key unit event

jmz jmzheng at gmail.com
Tue Nov 21 03:34:07 UTC 2017


Hi,

My pipeline looks like "tee ! queue ! filesink" where filesink will be
dynamically switched. I want to send EOS to the current filesink and start a
new filesink with a complete reference frame (i.e., SPS, PPS, and IFrame). I
use the following steps:

 1) Push upstream force-key-unit event to tee's sink pad.
 2) Install a GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM probe on queue's src pad.
 3) Inside the probe callback, if receiving force key unit event:
    3a) remove the probe first
    3b) push EOS to filesink's sink pad (is the filesink finalized
correctly?)
    3c) remove the current filesink from pipeline and add a new filesink to
pipeline
    3d) return GST_PAD_PROBE_PASS (for passing downstream force-key-unit
event to the new filesink)
    Otherwise (i.e., not force key unit event), return GST_PAD_PROBE_PASS.

However, as I investigated the new sink file, the file starts with IFrame
instead of a complete reference frame. The SPS and PPS are shown with an
IFrame after several IDR frames and non-IDR frames.

Where do the other frames (appearing at the beginning of the new file) come
from? I block queue's src pad, switch filesink, and pass the force key unit
to the new filesink. The new file should start with the key unit.

Thanks for any help.




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list