vvas_xfunnel

The vvas_xfunnel VVAS Gstreamer plug-in serializes data on its sink pads by iterating through all of them in a round-robin fashion. If a sink pad has a buffer available, it sends the data on the source pad. If a sink pad does not have data available, the plug-in will wait for a user-configurable amount of time before moving on to the next sink pad.

When a new sink pad is added or removed from the vvas_xfunnel plug-in, it sends custom events to notify the vvas_xdefunnel plug-in to create or destroy source pads. Each buffer includes metadata that enables the vvas_xdefunnel plug-in to determine which source pad the buffer should be sent to.

The vvas_xfunnel plug-in can support a maximum of 256 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 1: 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 - 4294967

4294967

Time to wait before switching to next sink pad in milli seconds, When pipeline is running in live mode, sink-wait-timeout will be calculated as 1/FPS, otherwise it would be 4294967 ms, user can overwrite sink-wait-timeout value in both the cases

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