nmossink
nmossink is an NMOS Sender. It creates an IS-04 Sender on an NMOS Node
hosted by nvnmosd and transmits the video, audio or ST 2038 ANC essence
arriving on its sink pad over the configured transport.
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 Sender appears on IS-04/IS-05 and
an IS-05 controller PATCHes it to start media.
Caps-driven MXL sender (scripts/example-pipelines/minimal-prop-sender-mxl.sh):
gst-launch-1.0 -e \
videotestsrc pattern=smpte is-live=true ! \
video/x-raw,format=v210,width=1920,height=1080,framerate=25/1,interlace-mode=progressive ! \
nmossink \
transport=mxl \
node-seed=example-minimal-producer \
sender-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 sender"
Caps-driven RTP/UDP sender (scripts/example-pipelines/minimal-prop-sender-udp.sh):
gst-launch-1.0 -e \
videotestsrc pattern=smpte is-live=true ! \
video/x-raw,format=UYVP,width=1920,height=1080,framerate=25/1,interlace-mode=progressive ! \
nmossink \
transport=udp \
node-seed=example-minimal-producer \
sender-name=video1 \
source-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 sender"
Replace source-ip with the IP address of the local NIC to transmit from.
Deferred sender: omit caps and the element synthesises the configuring
transport file from upstream caps at pre-roll — often videotestsrc ! nmossink
with only transport, node-seed, and sender-name is enough.
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-sender-mxl.sh,
minimal-file-sender-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 mxlsink, udpsink and the RTP payloaders 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 mxlsink from the gst-mxl-rs plugin (and libmxl.so
on the dynamic loader path); udp uses udpsink plus an essence-specific
rtp*pay from gst-plugins-good; udp2 prefers matching *pay2 elements
from gst-plugins-rs where available, falling back to gst-plugins-good per
element (udpsink is always from gst-plugins-good); nvdsudp uses
nvdsudpsink from the DeepStream plugin (built-in payloading). The exact RTP
payloader 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 Sender
Before it can be added to the Node the Sender needs a configuring transport
file — an SDP for the RTP transports or an MXL flow_def. Provide it in one
of two ways:
-
From caps. Set
capsto the essence you are sending and the element synthesises the file, together with the transport identity properties (mxl-flow-idon MXL; the IS-05 endpoint properties such asdestination-ipon RTP/UDP). -
From a transport file. Set
transport-file-path(or, for programmatic callers,transport-file) to a ready-made SDP orflow_def.
If neither is set the Sender is configured lazily: the element reads the
upstream caps as the pipeline pre-rolls and synthesises the file from those,
so a plain … ! nmossink often works with no caps property at all.
sender-name names the Sender 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 Sender 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 configured 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
╰──nmossink
Implemented interfaces
GstChildProxy
Factory details
Authors: – NVIDIA Corporation
Classification: – Sink/Network/NMOS
Rank – none
Plugin – nmos
Package – gst-nmos-rs
Pad Templates
sink
ANY
Presence – always
Direction – sink
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 advertise this Sender. 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
description
“description” gchararray
Description for this Sender shown to controllers as IS-04 description. When set, overrides the matching value from transport-file*.
Flags : Read / Write
destination-ip
“destination-ip” gchararray
Remote unicast address or multicast group for RTP/UDP transmission. Empty uses transport-file* or a controller-supplied value. Corresponds to IS-05 Sender transport_params.destination_ip. Used only with RTP/UDP.
Flags : Read / Write
destination-port
“destination-port” guint
Remote destination port for RTP/UDP transmission. 0 uses transport-file*, otherwise 5004. Corresponds to IS-05 Sender 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 Sender, 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
label
“label” gchararray
Label for this Sender shown to controllers as IS-04 label. When set, overrides the matching value from transport-file*.
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 produced by this Sender. 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
pay-properties
“pay-properties” GstStructure*
Additional properties for the RTP payloader, for example properties,mtu=(uint)1220. Applied the next time the Sender data plane is built. Used only with RTP/UDP.
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
sender-name
“sender-name” gchararray
Caller-chosen name for this Sender. It must be unique among Senders on the Node. Together with node-seed, it determines stable NMOS resource IDs. It is required unless supplied by transport-file*.
Flags : Read / Write
source-ip
“source-ip” gchararray
Local source address for RTP/UDP transmission. Empty selects it automatically. Corresponds to IS-05 Sender transport_params.source_ip. Used only with RTP/UDP.
Flags : Read / Write
source-port
“source-port” guint
Local source port for RTP/UDP transmission. 0 lets the operating system choose. Corresponds to IS-05 Sender transport_params.source_port. Used only with RTP/UDP.
Flags : Read / Write
Default value : 0
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 or negotiated upstream caps, plus 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