vvas_xfunnel¶
vvas_xfunnel gstreamer plug-in serializes data on its sink pads, it iterates all the sink pads in round robin order, if sink pad has buffer available; it sends it on the source pad, else the plug-in will wait for preset (user configurable) time, by that time also if data is not available the plug-in will skip that sink pad and it will probe next sink pad.
Whenever new sink pad is added to or removed from this plug-in, it sends custom events to notify vvas_xdefunnel
to create or destroy source pads.
Metadata on each buffer is attached to enable vvas_xdefunnel
plug-in to decide the source pad to which that buffer has to be sent.
At max vvas_xfunnel
can have 256 number of sink pads connected to it.
vvas_xfunnel
supports all caps.
Refer vvas_xdefunnel
plug-in which de-serializes these serialized data and pushes them to the output pads.
For vvas_xfunnel
implementation details, refer to vvas_xfunnel source code
This plug-in supports:
Multiple sink pads, single source pad.
Sink pads are request pads and they can be added or removed dynamically.
Serialization of parallel data using round robin algorithm.
Important
Caps of all the sink pads must be same, this is to avoid caps renegotiation always when sending buffer from the sink pad which has different caps.
Important
There are several custom events sent from this plugin for vvas_xdefunnel
plug-in, intermediate plug-ins must pass these events.
Control Parameters and Plug-in Properties¶
The following table lists the GStreamer plug-in properties supported by the vvas_xfunnel plug-in.
Table 10: vvas_xfunnel Plug-in Properties
Property Name |
Type |
Range |
Default |
Description |
---|---|---|---|---|
queue-size |
unsigned integer |
1 - 100 |
2 |
Buffer queue size for each sink pad |
sink-wait-timeout |
unsigned integer |
1 - 100 |
33 |
Time to wait before switching to next sink pad in mili seconds, default will be calculated as 1/FPS |
Example Pipelines¶
gst-launch-1.0 -v \
videotestsrc num-buffers=50 pattern=0 ! video/x-raw,format=NV12,width=640,height=480 ! funnel.sink_0 \
videotestsrc num-buffers=80 pattern=19 ! video/x-raw,format=NV12,width=640,height=480 ! funnel.sink_1 \
vvas_xfunnel name=funnel ! identity ! vvas_xdefunnel name=defunnel \
defunnel.src_0 ! queue ! filesink location=sink_0.yuv \
defunnel.src_1 ! queue ! filesink location=sink_1.yuv