nmossrc

nmossrc is an NMOS Receiver. It creates an IS-04 Receiver on an NMOS Node hosted by nvnmosd and, once the Receiver is activated, produces the received video, audio or ST 2038 ANC essence on its source pad as ordinary GStreamer buffers.

Properties are listed alphabetically below. The Configuration Guide groups them by task and explains the common configuration choices.

Examples

These pipelines assume nvnmosd is listening on unix:/tmp/nvnmosd.sock. With the default auto-activate=false the Receiver appears on IS-04/IS-05 and an IS-05 controller PATCHes it to supply the subscription identity and start media.

Caps-driven MXL receiver (scripts/example-pipelines/minimal-prop-receiver-mxl.sh):

 gst-launch-1.0 -e \
   nmossrc \
     transport=mxl \
     node-seed=example-minimal-consumer \
     receiver-name=video1 \
     mxl-domain-id=92c696c2-66f9-4d86-8a87-13135d847189 \
     mxl-domain-path=/dev/shm/gst-nmos-rs-examples \
     caps="video/x-raw,format=v210,width=1920,height=1080,framerate=25/1,interlace-mode=progressive" \
     label="minimal 1080p25 v210 receiver" ! \
   queue leaky=downstream max-size-buffers=2 max-size-bytes=0 max-size-time=0 ! \
   videoconvert ! autovideosink sync=false

Caps-driven RTP/UDP receiver (scripts/example-pipelines/minimal-prop-receiver-udp.sh):

 gst-launch-1.0 -e \
   nmossrc \
     transport=udp \
     node-seed=example-minimal-consumer \
     receiver-name=video1 \
     interface-ip=192.0.2.10 \
     caps="video/x-raw,format=UYVP,width=1920,height=1080,framerate=25/1,interlace-mode=progressive" \
     label="minimal 1080p25 UYVP receiver" ! \
   queue leaky=downstream max-size-buffers=2 max-size-bytes=0 max-size-time=0 ! \
   videoconvert ! autovideosink sync=false

Replace interface-ip with the IP address of the local NIC that should join the multicast group.

Transport-file variant: write an MXL flow_def or SDP to disk and pass transport-file-path=/path/to/file instead of caps and the identity properties above (scripts/example-pipelines/minimal-file-receiver-mxl.sh, minimal-file-receiver-udp.sh).

Daemon connection

This element is a front end for the nvnmosd NMOS daemon and holds no NMOS state of its own. At NULL→READY it opens a gRPC session to the daemon (daemon-uri) and closes it again at READY→NULL, so nvnmosd must already be running when the pipeline starts. The daemon serves the AMWA IS-04, IS-05 and IS-08 HTTP APIs; the element only drives the session and its inner GStreamer data path.

Node properties

Sessions that share a node-seed contribute to the same NMOS Node, so one host can present many Senders, Receivers and channel maps under a single Node simply by reusing the seed. The Node identity properties — host-name, node-properties, domain, registration-url, system-url and http-port — are taken from whichever session first creates the Node and ignored by later sessions that attach to it. node-properties groups the Node and Device label, description, and BCP-002-02 asset information.

Transport

transport selects the inner data path — mxl (MXL shared memory), udp or udp2 (ST 2110 over RTP/UDP), or nvdsudp (ST 2110 via DeepStream and Rivermax). The element builds and manages the matching inner elements for you, so you never add mxlsrc, udpsrc and the RTP depayloaders to the pipeline yourself. MXL additionally needs mxl-domain-path; the RTP transports use the IS-05 endpoint properties.

Inner elements are created when the data path starts and must already be registered: mxl uses mxlsrc from the gst-mxl-rs plugin (and libmxl.so on the dynamic loader path); udp uses udpsrc plus an essence-specific rtp*depay from gst-plugins-good; udp2 prefers udpsrc2 and matching *depay2 elements from gst-plugins-rs where available, falling back to gst-plugins-good per element; nvdsudp uses nvdsudpsrc from the DeepStream plugin (built-in depayloading). The exact RTP depayloader is chosen from the configuring transport file and caps. See the transport property for the full family list; plugin loading and GST_PLUGIN_PATH setup are in the Usage Guide.

Configuring the Receiver

Before it can be added to the Node the Receiver needs a configuring transport file — an SDP for the RTP transports or an MXL flow_def — which also determines whether IS-04 advertises BCP-004-01 Receiver Caps. Provide it in one of two ways:

  • From caps. Set caps to the essence you want to receive and the element synthesises the file; receiver-caps-mode chooses whether the Receiver is advertised as constrained (these specific caps) or unconstrained (accepts any compatible stream).
  • From a transport file. Set transport-file-path (or, for programmatic callers, transport-file) to a ready-made SDP or flow_def.

With neither set the Receiver is added without a format and waits for an IS-05 activation to supply one. receiver-name names the Receiver on the Node; label and description are optional and override the file.

Activation

Appearing on the Node (visible to IS-04/IS-05 controllers) is separate from the data path going live. By default (auto-activate=false) the Receiver is created but stays idle until an IS-05 controller activates it with a PATCH. Set auto-activate=true to bring the data path up immediately from the configuring transport file and have the daemon reflect that in the IS-05 API — a convenient shortcut for development and controller-less setups.

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstBin
                    ╰──nmossrc

Implemented interfaces

GstChildProxy

Factory details

Authors: – NVIDIA Corporation

Classification:Source/Network/NMOS

Rank – none

Plugin – nmos

Package – gst-nmos-rs

Pad Templates

src

ANY

Presencealways

Directionsrc

Object type – GstPad


Properties

active

“active” gboolean

Whether the data plane is currently active (real inner transport chain). Orthogonal to GStreamer pipeline state: the pipeline may be PLAYING while this property is false when waiting for activation.

Flags : Read

Default value : false


auto-activate

“auto-activate” gboolean

Activate the configured data plane without waiting for an IS-05 controller. This property does not change the GStreamer pipeline state. Default: false.

Flags : Read / Write

Default value : false


caps

“caps” GstCaps*

Unpacketized media caps used to configure and constrain this Receiver. Required when neither transport-file nor transport-file-path is set. When transport-file* is also set, it must agree with these caps.

Flags : Read / Write


daemon-uri

“daemon-uri” gchararray

Address of nvnmosd used to expose this element through NMOS. Only Unix socket URIs are supported. Default: unix:/tmp/nvnmosd.sock.

Flags : Read / Write

Default value : unix:/tmp/nvnmosd.sock


depay-properties

“depay-properties” GstStructure*

Additional properties for the RTP depayloader. Applied the next time the Receiver data plane is built. Used only with RTP/UDP.

Flags : Read / Write


description

“description” gchararray

Description for this Receiver shown to controllers as IS-04 description. When set, overrides the matching value from transport-file*.

Flags : Read / Write


destination-port

“destination-port” guint

Local listen port for RTP/UDP reception. 0 uses transport-file*, otherwise 5004. Corresponds to IS-05 Receiver transport_params.destination_port. Used only with RTP/UDP.

Flags : Read / Write

Default value : 0


domain

“domain” gchararray

DNS domain used to discover NMOS services. Use local for mDNS. Empty selects automatic discovery. Only the first element to create the Node controls this value.

Flags : Read / Write


format-bit-rate

“format-bit-rate” guint64

Coded media bit rate in kilobits per second for JPEG XS. 0 is unset. When only one bit-rate property is set, the other is derived. Used only with RTP/UDP.

Flags : Read / Write

Default value : 0


group-hint

“group-hint” gchararray

NMOS group hint for the Receiver, for example Camera:Video. When set, overrides the matching value from transport-file*.

Flags : Read / Write


host-name

“host-name” gchararray

Host name advertised by the NMOS Node. Empty autodetects it. Only the first element to create the Node controls this value.

Flags : Read / Write


http-port

“http-port” guint

Port for the Node's NMOS HTTP APIs. 0 allocates a port automatically. Only the first element to create the Node controls this value.

Flags : Read / Write

Default value : 0


interface-ip

“interface-ip” gchararray

Local interface address for RTP/UDP reception and multicast joins. Empty selects it automatically. Corresponds to IS-05 Receiver transport_params.interface_ip. Used only with RTP/UDP.

Flags : Read / Write


label

“label” gchararray

Label for this Receiver shown to controllers as IS-04 label. When set, overrides the matching value from transport-file*.

Flags : Read / Write


multicast-ip

“multicast-ip” gchararray

Multicast group to join for RTP/UDP reception. Empty selects unicast reception. Corresponds to IS-05 Receiver transport_params.multicast_ip. Used only with RTP/UDP.

Flags : Read / Write


mxl-domain-id

“mxl-domain-id” gchararray

UUID advertised for the MXL Domain. Empty lets domain_def.json supply it. Without either value, the domain remains application-resolved. It must match domain_def.json when both are present. Used only with MXL.

Flags : Read / Write


mxl-domain-path

“mxl-domain-path” gchararray

Local path to the MXL Domain used by the data plane. A domain_def.json in this directory can supply or verify mxl-domain-id. Used only with MXL.

Flags : Read / Write


mxl-flow-id

“mxl-flow-id” gchararray

UUID of the MXL flow consumed by this Receiver. Set it with auto-activate=true for a fixed pipeline. When set, overrides the matching value from transport-file*. Used only with MXL.

Flags : Read / Write


node-properties

“node-properties” GstStructure*

Node and Device metadata. Supported fields are label, description, manufacturer, product, instance-id, and functions; the asset fields must be supplied together. For example properties,label=Studio-A,manufacturer=Acme,product=(string)"Widget Pro",instance-id=XYZ123-456789,functions=(string)<Encoder,Decoder>. Only the first element to create the Node controls this value.

Flags : Read / Write


node-seed

“node-seed” gchararray

Caller-chosen seed for the NMOS Node. Elements using the same seed with one daemon join the same Node. Use a globally unique seed for each Node. It determines stable NMOS resource IDs. It is required.

Flags : Read / Write


receiver-caps-mode

“receiver-caps-mode” GstNmosCapsMode*

How the Receiver advertises media constraints to NMOS controllers. constrained publishes constraints. unconstrained publishes none. auto preserves the choice from transport-file*. When neither transport-file nor transport-file-path is set, auto publishes constraints. Default: auto.

Flags : Read / Write

Default value : auto (0)


receiver-name

“receiver-name” gchararray

Caller-chosen name for this Receiver. It must be unique among Receivers on the Node. Together with node-seed, it determines a stable NMOS Receiver ID. It is required unless supplied by transport-file*.

Flags : Read / Write


registration-url

“registration-url” gchararray

Fixed IS-04 Registration API URL. Empty uses DNS-SD discovery. Only the first element to create the Node controls this value.

Flags : Read / Write


source-ip

“source-ip” gchararray

Optional remote source filter for RTP/UDP multicast. Empty accepts any source. Corresponds to IS-05 Receiver transport_params.source_ip. Used only with RTP/UDP.

Flags : Read / Write


system-url

“system-url” gchararray

Fixed IS-09 System API URL. Used only when registration-url is also set. Only the first element to create the Node controls this value.

Flags : Read / Write


transport

“transport” GstNmosTransport*

Data-plane implementation. udp uses gst-plugins-good RTP/UDP. udp2 uses gst-plugins-rs RTP/UDP where available. mxl uses MXL shared memory. nvdsudp uses DeepStream/Rivermax ST 2110. Default: udp.

Flags : Read / Write

Default value : udp (1)


transport-bit-rate

“transport-bit-rate” guint64

Total RTP/UDP/IP bit rate in kilobits per second for JPEG XS. 0 is unset. When only one bit-rate property is set, the other is derived. Used only with RTP/UDP.

Flags : Read / Write

Default value : 0


transport-caps

“transport-caps” GstCaps*

RTP-layer settings expressed as application/x-rtp caps. Used only with RTP/UDP.

Flags : Read / Write


transport-file

“transport-file” gchararray

Configuring SDP text for RTP/UDP or MXL flow-definition JSON for MXL. Empty makes the element derive the configuration from the caps property and applicable RTP/UDP endpoint or MXL properties. Mutually exclusive with transport-file-path.

Flags : Read / Write


transport-file-path

“transport-file-path” gchararray

Path to configuring SDP or MXL flow-definition JSON, read when the element starts. Mutually exclusive with transport-file.

Flags : Read / Write


transport-properties

“transport-properties” GstStructure*

Additional properties for the selected transport source or sink, for example properties,buffer-size=26214400. Applied the next time the data plane is built.

Flags : Read / Write


The results of the search are