Networked Media Open Specifications

Controller to Registry (IS-04) and Node Interactions (IS-05, IS-08)

←Controller to Authorization Server Interactions · Index↑ · Event and Tally Interactions (IS-07)→

Creating an IS-05 Connection

To create a connection between an NMOS Sender and Receiver the Controller first queries the NMOS Registry to obtain all registered NMOS Node resources.

Then it can create a connection between Senders and Receivers using the IS-05 Connection API.

Querying the NMOS Registry

The Controller uses the IS-04 Query API to obtain a list of all registered NMOS Node resources from the NMOS Registry. This API call includes a valid Access Token in the HTTP header.

Controller to Registry Interactions

Example query request including the Access Token (Authorization: Bearer) in the HTTP header:

GET /x-nmos/query/v1.3/nodes HTTP/1.1
Host: registry.example.com
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...

Example query response:

HTTP/1.1 200 OK
Content-Type: application/json
[
  {
    "api": {
      "endpoints": [
        {
          "authorization": true,
          "host": "node.example.com",
          "port": 443,
          "protocol": "https"
        }
      ],
      "versions": [
        ... etc. ...
      ]
    },
    "caps": {
      ... etc. ...
    },
    "clocks": [
      ... etc. ...
    ],
    "description": "...",
    "hostname": "node.example.com",
    "href": "https://node.example.com/",
    "id": "...",
    "interfaces": [
      ... etc. ...
    ],
    "label": "My Example Node",
    "services": [
      ... etc. ...
    ],
    "tags": {
      ... etc. ...
    },
    "version": "..."
  }
]

Connection Management

Once the Controller has obtained the NMOS resource list, it can use the IS-05 Connection API to request the Sender’s SDP and make connections between Receivers and Senders.

SDP Request

Controller to Node Interactions

Example Sender SDP request including the Access Token (Authorization: Bearer) in the HTTP header:

GET /x-nmos/connection/v1.1/single/senders/{senderId}/transportfile HTTP/1.1
Host: node.example.com
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...

Example Sender SDP response:

HTTP/1.1 200 OK
Content-Type: application/sdp
v=0
o=- 3821785015 3821785015 IN IP4 10.1.0.29
s=My Example Node/sender/v0
t=0 0
a=group:DUP PRIMARY SECONDARY
m=video 5004 RTP/AVP 96
c=IN IP4 239.255.255.0/32
a=ts-refclk:localmac=5E-21-51-E3-62-D0
a=mediaclk:direct=0
a=source-filter: incl IN IP4 239.255.255.0 10.1.0.29
a=rtpmap:96 raw/90000
a=fmtp:96 width=1920; height=1080; exactframerate=25; interlace; sampling=YCbCr-4:2:2; depth=10; colorimetry=BT709; TCS=SDR; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=mid:PRIMARY
m=video 5004 RTP/AVP 96
c=IN IP4 239.255.255.1/32
a=ts-refclk:localmac=0A-00-27-00-00-0F
a=mediaclk:direct=0
a=source-filter: incl IN IP4 239.255.255.1 169.254.66.179
a=rtpmap:96 raw/90000
a=fmtp:96 width=1920; height=1080; exactframerate=25; interlace; sampling=YCbCr-4:2:2; depth=10; colorimetry=BT709; TCS=SDR; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN;
a=mid:SECONDARY

Connection Request

Example connection request including the Access Token (Authorization: Bearer) in the HTTP header:

PATCH /x-nmos/connection/v1.1/single/receivers/{receiverId}/staged HTTP/1.1
Host: node.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
{
  "activation": {
    "mode": "activate_immediate"
  },
  "master_enable": true,
  "sender_id": "8d26d68a-93f2-55ff-9495-acbb576897fd",
  "transport_file": {
    ... etc. ...
  }
}

Example connection response:

HTTP/1.1 200 OK
Content-Type: application/json
{
  "activation": {
    "activation_time": "1612804428:810443300",
    "mode": "activate_immediate",
    "requested_time": null
  },
  "master_enable": true,
  "sender_id": "8d26d68a-93f2-55ff-9495-acbb576897fd",
  "transport_file": {
    ... etc. ...
  },
  "transport_params": [
    ... etc. ...
  ]
}

Mapping Audio Channels (IS-08)

The purpose of using the IS-08 Channel Mapping API is to allow mapping of one or more audio Inputs to one or more audio Outputs.

Example mapping request including the Access Token (Authorization: Bearer) in the HTTP header:

POST /x-nmos/channelmapping/v1.0/map/activations HTTP/1.1
Host: client.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzUxMiIsInR5cCIgOiAiSl...
{
  "activation": {
    "mode": "activate_immediate"
  },
  "action" : {
    ... etc. ...
  }
}

Example response:

HTTP/1.1 200 OK
Content-Type: application/json
{
  "activation" : {
    "activation_time": "1612804428:810443300",
    "mode": "activate_immediate",
    "requested_time": null
  },
  "action" : {
    ... etc. ...
  }
}

←Controller to Authorization Server Interactions · Index↑ · Event and Tally Interactions (IS-07)→