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
capsto the essence you want to receive and the element synthesises the file;receiver-caps-modechooses 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 orflow_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
Presence – always
Direction – src
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