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: .. code:: bash 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.