Gst-nvdsudpsink ================ The Gst-nvdsudpsink plugin is a sink type component which can be used to transmit the RTP packets over IP network. Internally, the plugin uses `Rivermax` SDK APIs for network communications. NVIDIA Mellanox |Rivermax®| offers a unique IP-based solution for any media and data streaming use case. For more details see the `Rivermax Product Page `_. .. |Rivermax®| replace:: Rivermax\ :sup:`®` * Rivermax utilizes the kernel bypass technology and RDMA capabilities to achieve better CPU performance, low latency, and higher bandwidth. * Rivermax SDK provides two types of APIs for transmission – Media and Generic. This component has support for both the APIs. By default, it uses Generic APIs and can transmit any type of payload (Compressed, Uncompressed, audio etc.). * Rivermax media APIs are used for specific case of SMPTE 2110-20, 30, 40 streams. This component supports SMPTE 2110-20 (non-interlaced) and SMPTE 2110-30 streams with traffic shaping. * Rivermax media API mode can be enabled by setting ``sdp-file`` property of the component. For uncompressed video streams with media API, ``packets-per-line`` and ``payload-size`` properties along with ``sdp-file`` must be set. **Payload size and packets per line for some of common formats** To calculate the payload size and packets per line, use the following steps: 1. Calculate line stride as follows: :: line stride = (width * pgroup size) / pgroup coverage 2. Divide this stride into number of packets having equal bytes. This will be value of packet-per-line. 3. Add 20 bytes to size of each packet calculated in step 2 for RTP + Payload header. This will be value for payload-size. .. note:: It is assumed that there is only single Sample Row Data per RTP packet and line stride is equally divisible. Following are values for some of the common formats: :: YCbCr-4:2:2 1920x1080 8 bit: payload-size:1300, packets-per-line:3 YCbCr-4:2:2 1920x1080 10 bit: payload-size:1220, packets-per-line:4 YCbCr-4:2:0 1920x1080 8 bit: payload-size:1460, packets-per-line:2 YCbCr-4:2:0 1920x1080 10 bit: payload-size:1220, packets-per-line:3 RGB 1920x1080 8 bit: payload-size:1460, packets-per-line:4 RGB 1920x1080 10 bit: payload-size:1220, packets-per-line:6 Refer to the ``SMPTE ST 2110-20:2017`` for more information. System can also have Gstreamer provided OSS implementation of udp sink (``udpsink``) component. In that case system would have two implementations for udp sink - ``udpsink`` and ``nvdsudpsink``. ``nvdsudpsink`` component can only be used with NVIDIA Mellanox ConnectX-5 and above cards after having installed ``Rivermax`` SDK and its license. * Download and setup the ``Rivermax`` 1.9.x SDK here: https://developer.nvidia.com/networking/rivermax-getting-started. .. note:: Nvidia Mellanox OFED version 5.5 which is required by ``Rivermax`` has installation issue on Jetson platform. Please use the following command as work around to install OFED on Jetson platform: :: sudo ./mlnxofedinstall --with-vma --force-fw-update --add-kernel-support --force --without-iser-modules --without-isert-modules --without-iser-dkms --without-isert-dkms * Follow the instruction on the SDK page to obtain development license for Rivermax or purchase it here: https://store.mellanox.com/categories/ethernet/connectx-smartnics/rivermax-licenses.html. * To select ``nvdsudpsink`` out of two installations, use either ``LOCAL_IFACE_IP`` environment variable or ``local-iface-ip`` property. Use the command below to export the environment variable: :: export LOCAL_IFACE_IP= * ``nvdsudpsink`` component also requires ``CAP_NET_RAW`` capability. Either run the application that uses ``nvdsudpsink`` component with superuser privilege or set the ``CAP_NET_RAW`` capabilities using the following command. :: sudo setcap CAP_NET_RAW=ep For example: :: sudo setcap CAP_NET_RAW=ep /opt/nvidia/deepstream/deepstream/bin/deepstream-app sudo setcap CAP_NET_RAW=ep /usr/bin/gst-launch-1.0 .. image:: /content/DS_plugin_gst-nvdsudpsink.png :align: center :alt: Gst-nvdsudpsrc Inputs and Outputs ------------------- * Inputs * GstBufferList having RTP packets as buffer content. * Control parameters * LOCAL_IFACE_IP ENV flag or local-iface-ip property * host * port * chunk-size * packets-per-chunk * payload-size * sdp-file * packets-per-line * Output * None Features --------- The following table summarizes the features of the plugin. .. csv-table:: Gst-nvdsudpsink plugin features :file: ../text/tables/Gst-nvdsudpsink tables/DS_Plugin_gst-nvdsudpsink_features.csv :widths: 30, 30, 30 :header-rows: 1 Gst Properties ---------------- The following table describes the Gst-nvdsudpsink plugin’s Gst properties. .. csv-table:: Gst-nvdsudpsink plugin gst properties :file: ../text/tables/Gst-nvdsudpsink tables/DS_Plugin_gst-nvdsudpsink_gst-properties.csv :widths: 20, 20, 20, 20, 20 :header-rows: 1