Configuration
Each element creates its NMOS Sender or Receiver from a
configuring transport file:
SDP for RTP/UDP or an MXL flow definition. The element can obtain this file
from transport-file*, synthesise it from other properties, or, for nmossink,
derive it from upstream caps.
Configuration Choices
You can choose the activation policy separately from how the element obtains the configuring transport file.
Activation Policy
| Policy | Setting | Intended use |
|---|---|---|
| Controller-managed | Leave auto-activate=false (the default) |
Production systems where an IS-05 Controller decides when the data plane becomes active |
| Self-starting | Set auto-activate=true
|
Development and fixed pipelines that should begin processing without a Controller |
How the Configuring Transport File Is Obtained
| Source | Set initially | Intended use |
|---|---|---|
| Supplied transport file | transport-file-path or transport-file
|
Use an existing SDP or MXL flow definition with NvNmos extensions |
| Synthesised from properties | caps plus the relevant RTP/UDP endpoints or MXL identifiers |
Build the configuring SDP or MXL flow definition from element configuration |
Upstream caps (nmossink only) |
Omit caps and transport-file*
|
Defer until upstream caps arrive during preroll |
transport defaults to udp. Set transport=mxl, udp2, or nvdsudp
explicitly when selecting another transport implementation.
transport-file and transport-file-path are mutually exclusive. Explicit
element properties override corresponding values in a supplied transport file;
essence caps are cross-checked rather than substituted silently. See
How Properties Are Combined
for the complete rules.
Property Groups
Use the plugin and element reference or gst-inspect-1.0 for exact property
details:
Those references list properties alphabetically. Use these groups to decide which properties matter for a task:
| Group | Properties | Purpose |
|---|---|---|
| Essential | node-seed, sender-name / receiver-name, transport, caps or transport-file*, receiver-caps-mode, auto-activate
|
Identify the Node and Sender or Receiver, choose the data plane, describe the essence and Receiver capabilities, and choose Controller-managed or self-starting activation |
| RTP/UDP | Sender: source-ip, source-port, destination-ip, destination-port; Receiver: source-ip, interface-ip, multicast-ip, destination-port; both: transport-caps, format-bit-rate, transport-bit-rate
|
Configure SDP and IS-05 endpoint values for udp, udp2, and nvdsudp; the bit-rate properties apply to JPEG XS on udp / udp2
|
| MXL | mxl-domain-path, mxl-domain-id, mxl-flow-id
|
Select the local MXL domain and flow for transport=mxl
|
| Human-readable metadata | label, description, group-hint
|
Set human-readable labels, descriptions, and grouping metadata for NMOS resources |
| Node and session | daemon-uri, http-port, host-name, node-properties, domain, registration-url, system-url
|
Connect to the daemon and configure the NMOS Node; Node properties are taken from the first session that creates a shared node-seed
|
| Inner-element overrides | transport-properties, pay-properties, depay-properties
|
Pass advanced properties to generated inner elements; payloader and depayloader overrides apply only to udp / udp2
|
The source-ip and destination-port properties follow the corresponding IS-05
transport parameter semantics, so their Sender and Receiver meanings differ.
For a Sender, source-ip is the local egress address and
destination-port is remote. For a Receiver, source-ip is an optional remote
source-specific multicast filter and destination-port is the local listen port.
Node and Device Metadata
node-properties is a GstStructure containing optional metadata for the
NMOS Node and Device. It supports these fields:
| Field | Type | Purpose |
|---|---|---|
label
|
string | IS-04 label for the Node and Device |
description
|
string | IS-04 description for the Node and Device |
manufacturer
|
string | BCP-002-02 asset manufacturer |
product
|
string | BCP-002-02 asset product name |
instance-id
|
string | BCP-002-02 asset instance identifier |
functions
|
string or string array | One or more BCP-002-02 asset functions |
The four asset fields must be supplied together and must be non-empty. When
asset information is supplied without an explicit label or description,
libnvnmos synthesises those values from the asset information.
For example:
node-properties="properties,label=Studio-A,description=Primary-encoder,\
manufacturer=Acme,product=(string)\"Widget Pro\",\
instance-id=XYZ123-456789,functions=(string)<Encoder,Decoder>"
Only the first session to create a shared node-seed controls this metadata;
later sessions attach to the existing Node without changing it.
Supported Caps Essence Shapes
When transport-file* is unset, caps drives synthesis of the configuring
transport file sent to the daemon:
-
transport=mxlproduces an MXL flow definition and also requiresmxl-flow-id. -
transport=udp,udp2, ornvdsudpproduces SDP and uses the relevant endpoint properties.
On nmossrc, receiver-caps-mode controls whether the synthesised
configuration advertises constrained BCP-004-01 Receiver Caps. With
transport=mxl, the caps media type also selects the corresponding
mxlsrc video, audio, or data flow.
| Media | Caps shape | Transports | Notes |
|---|---|---|---|
| Video (raw) | video/x-raw,format=…,width=…,height=…,framerate=…[,interlace-mode=…]
|
all | MXL: v210. RTP/UDP: RFC 4175 8-bit UYVY and 10-bit UYVP. |
| Video (JPEG XS) | image/x-jxsc,… or video/x-jxsv,…
|
udp / udp2 only |
width, height, and framerate are required. Bit rates use format-bit-rate and transport-bit-rate, not caps fields. |
| Audio | audio/x-raw,format=…,rate=…,channels=…
|
all | MXL: F32LE. RTP/UDP: ST 2110-30 S24BE (L24) and S16BE (L16). |
| Data (ANC) | meta/x-st-2038,framerate=…
|
all | framerate is required; add it with a capsfilter if necessary. |
How Properties Are Combined
When transport-file* is set alongside other properties, the element applies
these rules to construct the configuring transport file sent to the daemon:
| Group | Properties | Combination rule |
|---|---|---|
| Identity | sender-name / receiver-name, mxl-flow-id, mxl-domain-id
|
Apply property value. The element writes the property value into the configuring transport file, replacing the supplied value if present. |
| Human-readable metadata | label, description, group-hint
|
Apply property value. The element writes the property value into the configuring transport file, replacing the supplied value if present. |
| Receiver capabilities | receiver-caps-mode
|
Apply property value. The element writes the selected Receiver Caps marker into the configuring transport file, replacing the supplied marker if present. |
| Essence shape | caps
|
Cross-check. The caps must be compatible with the supplied file's essence. For MXL, the format family must agree; for RTP/UDP, the caps must intersect the SDP essence shape. Mismatch is a hard error at NULL→READY. |
| Bit rates | format-bit-rate, transport-bit-rate
|
Cross-check or apply property values. A missing bit rate is approximated separately for the SDP and property values. If the SDP and properties both specify bit rates, the resulting values must agree; if only the properties do, the property-derived values are applied. |
| RTP parameters | transport-caps
|
Cross-check or apply property values. Dynamic payload type, audio clock rate, and a-ptime / a-maxptime are applied to the configuring SDP. The remaining RTP and essence-shape fields must agree with the supplied SDP. |
| Activation policy | auto-activate
|
Not in the configuring transport file. Selects self-starting or Controller-managed activation. |
| Other configuration | daemon-uri, node-seed, http-port, host-name, node-properties, domain, registration-url, system-url, transport, mxl-domain-path, transport-properties, pay-properties, depay-properties
|
Not in the configuring transport file. Node properties configure the NMOS Node; when sessions share a node-seed, the first session to create the Node determines those settings. The remaining properties control the daemon connection or configure the local data plane and its inner GStreamer elements. |
Bit rates are in kilobits per second and correspond to NMOS Flow and Sender
bit_rate. SDP may carry the transport rate in b=AS: and either rate in the
NvNmos extension fmtp parameters x-nvnmos-format-bit-rate and
x-nvnmos-transport-bit-rate.
mxl-domain-id is in the override group for the supplied file's tag, but is
still cross-checked against <mxl-domain-path>/domain_def.json
because that file identifies the MXL domain mounted at this path; a different
ID would be a host configuration error, not a value that can be overridden.
IS-05 activation values take precedence over corresponding start-up
configuration. For a Sender, active transport_params are reflected in its
/transportfile. For a Receiver, a Controller may also supply a
transport_file. In either case, the active essence must remain compatible
with caps; for example, an nmossrc configured for v210 video rejects
an activation carrying audio.
Lifecycle, Activation, and Property Changes
| Transition or event | User-visible effect |
|---|---|
| NULL→READY | Connect to the daemon and, if the element can prepare the configuring transport file, add the NMOS Sender or Receiver |
| READY→PAUSED | For a deferred nmossink, derive the configuring transport file from upstream caps and add the Sender |
Resource addition with auto-activate=true
|
Build the real inner transport, synchronize the NMOS active state, set read-only active to true, and post a nmos-activation element message; occurs during NULL→READY or deferred nmossink READY→PAUSED |
| IS-05 activation | Build or replace the inner transport elements using the effective SDP or MXL flow definition delivered for activation; update read-only active and post a nmos-activation element message on the bus |
| READY→NULL | Remove the Sender or Receiver and close the daemon session; active becomes false |
When neither transport-file* nor caps is set, nmossink defers
configuration until it can query upstream caps at READY→PAUSED. nmossrc
has no deferred mode; set caps or transport-file* before READY.
The element separates NMOS resource visibility from an active data plane. With
the default auto-activate=false, the Sender or Receiver is visible but waits
for an IS-05 activation before starting its data plane. With
auto-activate=true, the element starts the data plane as soon as it has
prepared the configuring transport file. This property does not change the
GStreamer pipeline state.
Set configuration properties while the element is in NULL unless the element
reference marks them as changeable in READY. A property that can be set in
READY is not necessarily applied immediately: the element reads it at the next
relevant lifecycle action. In particular, mxl-domain-path,
transport-properties, pay-properties, and depay-properties apply when the
inner data plane is next built.
The results of the search are