pciesrc

The pciesrc GStreamer plugin is a source element that reads data from a PCIe interface. It receives data from a host system via PCIe and pushes it to downstream elements in a GStreamer pipeline. The plugin supports dynamic pad creation based on the capabilities negotiated with the downstream elements.

Properties

The following properties can be configured for the pciesrc plugin:

Property

Type

Default

Description

silent

boolean

FALSE

If TRUE, suppresses verbose output.

queue

uint

0

Data queue number to listen on.

buffer-size

int

4194304

Size of the output buffer (in bytes). If 0 and no CAPS are provided then an error will be thrown.

pool-size

int

5

Size of the output buffer pool per channel/pad.

transmit

boolean

FALSE

If TRUE, transmits KPI messages.

Usage

The pciesrc plugin can be integrated into a GStreamer pipeline like this:

gst-launch-1.0 -v -m fakesrc ! pciesrc ! fakesink silent=TRUE queue=0 buffer-size=8388608 pool-size=5

This example uses fakesrc as a placeholder upstream element and fakesink as a placeholder downstream element. Replace these with your actual source and sink elements. The silent, queue, buffer-size and pool-size properties are set accordingly. Adjust values as per your requirements.

The plugin dynamically creates source pads based on capabilities received from the host via PCIe. The plugin negotiates caps with the downstream element to determine the data format and other parameters.

Installation

To install the pciesrc plugin, copy the plugin files (located in /usr/local/simaai/plugin_zoo/gst-simaai-plugins-base/gst/) into your project’s plugins/ directory. The plugin will then be automatically loaded by GStreamer.

Pipeline Integration

The pciesrc plugin acts as a source in the GStreamer pipeline. It receives data from the PCIe interface and pushes it to the next element in the pipeline. The data flow is managed by the internal worker thread that continuously monitors for incoming data. End-of-stream (EOS) events are handled to gracefully terminate the pipeline. The plugin uses the SiMa.ai memory allocator for efficient memory management. The plugin is designed to work with SiMa.ai hardware.