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