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:

Presencerequest

Directionsink

Object type – GstNmosAudioChannelMapSinkPad


src_%u

audio/x-raw:

Presencerequest

Directionsrc

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