Group hint tags

This document describes an application of the AMWA IS-04 “tags” structures to enable control systems to identify relationships between NMOS resources listed in a registry or node.

Introduction

Since AMWA IS-04 v1.0, NMOS resources contain a “tags” field that has not been used in a standard way. However when the control systems are trying to control multiple NMOS devices there is no defined way of representing related resources together.

The initial goal of the group hints definition is to have an easy way of identifying natural groups of sources and destinations. This document defines a clear way of identifying natural groups in the NMOS registry but it does not limit usage of these tags to natural grouping. The only requirement is to respect the rules for natural grouping.

Natural grouping can be defined as the default relationship between senders or receivers inside a node. This relationship SHOULD remain the same inside a similar device (hardware or software) and it is mostly to help build relationship. Natural groups are not created by users in a dynamic way, they are defined by device manufacturers.

A good example of a natural group would be a device named “camera” that produces one video and two audio streams. A natural group for this device could be named “camera” and each sender should carry the group tag “camera”. Natural grouping is by devices by default and the same group name may be used in all the camera devices. Then a role SHOULD be assigned to each sender so we can differenciate the senders within the same group.

Result will be something like this:

Video group : “Camera” role: “Primary”

Audio 1 group : “Camera” role: “Audio 1”

Audio 2 group : “Camera”role: “Audio 2”

Group hint URN

The group hint urn ‘urn:x-nmos:grouphint’ defines a set of groups to which a resource belongs to.

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "{group-name}:{role-in-group}:{optional-group-scope}"
   ]
}

Where

Parameter Description Values
group-name A string that defines the name of the group. Any string not containing “:”
role-in-group A string that defines the role of the resource in the group, MUST be unique inside the same group Any string not containing “:”
optional-group-scope Optional string that defines the scope of the group, MUST be ‘device’ or ‘node’ “device” (default) or “node”

The colon character is therefore reserved and MUST not be used in any of the parameters listed.

group-name rules

role-in-group rules

optional-group-scope rules

Natural groups

Natural groups applies only to NMOS senders and receivers

Examples

1. Playout server sender with 1 video 2 audio

JSON tags for Video 1 sender

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "Playout Master:Primary"
   ]
}

JSON tags for Audio 1 sender

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "Playout Master:Audio 1 – 2ch"
   ]
}

JSON tags for Audio 2 sender

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "Playout Master:Audio 2 – 5.1ch"
   ]
}

2. MultiviewerPIP, receiver with 1 video 4 audio

JSON tags for Video 1 receiver

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "MV PIP 1:Video"
   ]
}

JSON tags for Audio 1 receiver

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "MV PIP 1:Audio 1"
   ]
}

JSON tags for Audio 2 receiver

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "MV PIP 1:Audio 2"
   ]
}

2. Multiple groups

Multiple groups are mainly for usage outside “natural grouping”.

JSON tags for Video 1 receiver and tally

"tags": {
   "urn:x-nmos:grouphint/v1.0": [
      "MV PIP 1:Video",
      "tally:left:node"
   ]
}

This defines an extra membership to tally group valid for the entire node scope.

NMOS resource JSON samples

{
"format": "urn:x-nmos:format:video",
"caps": {},
"device_id": "8570e409-eb39-4c28-b083-fb2be5d44abe",
"transport": "urn:x-nmos:transport:rtp.mcast",
"interface_bindings": [],
"subscription": {
   "sender_id": null,
   "active": true
   },
"id": "51e6b7ef-7061-4121-b8d3-426527d3ac4f",
"version": "1525121173:668000000",
"label": "GV[KIP_AMWA] Video 1",
"description": "(KIP_AMWA@10.37.65.20) MV node receiver 1 ID VIDEO index:1",
"tags": {
    "urn:x-nmos:grouphint/v1.0": [
            "IP input 1:Video 1"
     ],
}
}
{
"format": "urn:x-nmos:format:audio",
"caps": {},
"device_id": "8570e409-eb39-4c28-b083-fb2be5d44abe",
"transport": "urn:x-nmos:transport:rtp.mcast",
"interface_bindings": [],
"subscription": {
   "sender_id": null,
   "active": true
   },
"id": "51e6b7ef-7061-4121-b8d3-426527d3ac4f",
"version": "1525121173:668000000",
"label": "GV[KIP_AMWA] Audio 1",
"description": "(KIP_AMWA@10.37.65.20) MV node receiver 1 ID AUDIO index:1",
"tags": {
    "urn:x-nmos:grouphint/v1.0": [
            "IP input 1:Audio 1"
     ]
}
}
{
"format": "urn:x-nmos:format:audio",
"caps": {},
"device_id": "8570e409-eb39-4c28-b083-fb2be5d44abe",
"transport": "urn:x-nmos:transport:rtp.mcast",
"interface_bindings": [],
"subscription": {
   "sender_id": null,
   "active": true
   },
"id": "51e6b7ef-7061-4121-b8d3-426527d3ac4f",
"version": "1525121173:668000000",
"label": "GV[KIP_AMWA] Audio 2",
"description": "(KIP_AMWA@10.37.65.20) MV node receiver 1 ID AUDIO index:2",
"tags": {
    "urn:x-nmos:grouphint/v1.0": [
            "IP input 1:Audio 2"
     ]
}
}