nmosaudiochannelmap
nmosaudiochannelmap exposes AMWA IS-08 audio channel mapping as a
GStreamer element. Request sink_%u and src_%u audio pads and it
creates matching IS-08 Inputs and Outputs on the Node; a controller then
decides which input channels feed which output channels and the element
re-orders the audio channels accordingly.
Element and pad properties are listed alphabetically below. The Audio Channel Mapping Guide explains how channel mappings contribute to the Node's shared IS-08 API.
Example
Two-input, two-output matrix from the interactive demo
(scripts/gst-nmos-rs-demo.sh, Node 3 audio processor). Each sink_%u /
src_%u pad becomes an IS-08 Input or Output; channel counts come from the
negotiated caps on that branch. Request every pad before the element reaches
READY.
gst-launch-1.0 -e \
nmosaudiochannelmap name=map \
node-seed=demo-node3 \
channelmapping-name=demo-map \
sink_0::input-id=input0 \
sink_0::receiver-name=audio-in0 \
sink_0::channels=2 \
sink_1::input-id=input1 \
sink_1::receiver-name=audio-in1 \
sink_1::channels=8 \
src_0::output-id=output0 \
src_0::sender-name=audio-out0 \
src_0::channels=2 \
src_1::output-id=output1 \
src_1::sender-name=audio-out1 \
src_1::channels=8 \
nmossrc \
transport=mxl \
node-seed=demo-node3 \
receiver-name=audio-in0 \
mxl-domain-path=/dev/shm/gst-nmos-rs-examples \
caps="audio/x-raw,format=F32LE,rate=48000,channels=2" ! map.sink_0 \
nmossrc \
transport=mxl \
node-seed=demo-node3 \
receiver-name=audio-in1 \
receiver-caps-mode=unconstrained \
mxl-domain-path=/dev/shm/gst-nmos-rs-examples \
caps="audio/x-raw,format=F32LE,rate=48000,channels=8" ! map.sink_1 \
map.src_0 ! volume volume=0.3 ! nmossink \
transport=mxl \
node-seed=demo-node3 \
sender-name=audio-out0 \
mxl-domain-path=/dev/shm/gst-nmos-rs-examples \
caps="audio/x-raw,format=F32LE,rate=48000,channels=2" \
map.src_1 ! volume volume=0.1 ! nmossink \
transport=mxl \
node-seed=demo-node3 \
sender-name=audio-out1 \
mxl-domain-path=/dev/shm/gst-nmos-rs-examples \
caps="audio/x-raw,format=F32LE,rate=48000,channels=8"
An IS-08 controller PATCHes /map/active to re-route channels at runtime;
until then the element applies an identity map wherever the geometry allows.
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.
Inputs and outputs
Request a sink_%u pad for each audio stream coming in and a src_%u pad
for each stream going out; every pad becomes an IS-08 Input or Output whose
channel count is taken from its negotiated caps. The set of pads is frozen
when the element first reaches READY, so request every pad you need before
starting the pipeline. channelmapping-name names the Input/Output bundle on
the Node, and restrict-routable-inputs limits each Output to this element's
own Inputs.
Activation
The element starts with an identity map wherever the channel geometry allows it; an IS-08 controller then PATCHes the active map to re-route channels at runtime and the element applies the new routing to the audio passing through it.
Hierarchy
GObject
╰──GInitiallyUnowned
╰──GstObject
╰──GstElement
╰──GstBin
╰──nmosaudiochannelmap
Implemented interfaces
GstChildProxy
Factory details
Authors: – NVIDIA Corporation
Classification: – Filter/Audio/Network
Rank – none
Plugin – nmos
Package – gst-nmos-rs
Pad Templates
sink_%u
audio/x-raw:
Presence – request
Direction – sink
Object type – GstNmosAudioChannelMapSinkPad
src_%u
audio/x-raw:
Presence – request
Direction – src
Object type – GstNmosAudioChannelMapSrcPad
Properties
channelmapping-name
“channelmapping-name” gchararray
Caller-chosen name for this channel mapping. It must be unique within the Node. It is not an IS-08 Input or Output ID.
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
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
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
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
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
restrict-routable-inputs
“restrict-routable-inputs” gboolean
Limit each Output's IS-08 /caps/routable_inputs to this element's Inputs. When false, routable Inputs are unrestricted. Default: false.
Flags : Read / Write
Default value : false
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
The results of the search are