(c) AMWA 2017, CC Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
The Sender /transportfile
resource should use the following HTTP header when returning the transport file:
Content-Type: application/sdp
Senders and Receiver Connection Management endpoints must support a core parameter set. In addition they may support multicast, FEC and/or RTCP parameter sets. Endpoints must support all parameters in a parameter set, or none at all.
source_ip
interface_ip
destination_port
rtp_enabled
multicast_ip
fec_enabled
fec_destination_ip
fec_mode
fec1D_destination_port
fec2D_destination_port
rtcp_enabled
rtcp_destination_ip
rtcp_destination_port
source_ip
destination_ip
source_port
destination_port
rtp_enabled
fec_enabled
fec_destination_ip
fec_type
fec_mode
fec_block_width
fec_block_height
fec1D_destination_port
fec2D_destination_port
fec1D_source_port
fec2D_source_port
rtcp_enabled
rtcp_destination_ip
rtcp_destination_port
rtcp_source_port
All Senders and Receivers should comply with RFC 4566 (Session Description Protocol) when creating and parsing SDP files. Multicast Senders and Receivers should additionally comply with RFC 4570 (SDP Source Filters). Two examples are given below, showing an SDP file and the transport parameters that would be presented at the /staged
endpoint by a Receiver that has parsed the file.
In the event that a receiver is presented with an SDP file and a set of transport parameters that contradict each other in the same PATCH request, the transport parameters take priority over the SDP file and must be the parameters used for activation. This only applies in the case where there is contradiction between the SDP file and transport parameters within a single PATCH request, in all other cases the most recently received PATCH request takes priority.
v=0
o=- 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Example
c=IN IP4 10.46.16.34/127
t=2873397496 2873404696
a=recvonly
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
transport_params:[
{
"source_ip": "10.47.16.5",
"multicast_ip": null,
"interface_ip": "10.46.16.34",
"destination_port": 51372,
"rtp_enabled": true
}
]
v=0
o=- 1497010742 1497010742 IN IP4 172.29.226.24
s=SDP Example
t=2873397496 2873404696
m=video 5000 RTP/AVP 103
c=IN IP4 232.21.21.133/32
a=source-filter:incl IN IP4 232.21.21.133 172.29.226.24
a=rtpmap:103 raw/90000
transport_params:[
{
"source_ip": "172.29.226.24",
"multicast_ip": "232.21.21.133",
"interface_ip": "auto",
"destination_port": 5000,
"rtp_enabled": true
}
]
SMPTE 2022-5 describes RTP streams with forward error correction (FEC), and is supported by the Connection Management Specification. This support take the form if the FEC transport parameter set described in Parameter Sets. Note that Senders have additional parameters used to specify the type of FEC to be used and matrix rows and columns, which are not present on the Receiver side. In SMPTE 2022-5 this information is conveyed in the FEC stream headers, and as such does not need to be conveyed separately in Connection Management.
Connection Management APIs supporting SMPTE 2022-5 must comply with RFC 6364 when creating and interpreting SDP files. Implementers may wish to consider the guidance given in VSF TR-04. An example SDP file from RFC 6364 is shown below, followed by the transport parameters that would be presented on the /staged
endpoint by a Receiver that has parsed the file.
v=0
o=ali 1122334455 1122334466 IN IP4 172.29.226.24
s=FEC Framework Examples
t=0 0
a=group:FEC-FR S1 R1
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=rtpmap:100 MP2T/90000
a=fec-source-flow: id=0
a=mid:S1
m=application 30000 UDP/FEC
c=IN IP4 233.252.0.2/127
a=fec-repair-flow: encoding-id=10; ss-fssi=n:7,k:5
a=mid:R1
transport_params:[
{
"source_ip": "172.29.226.24",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true,
"fec_enable": true,
"fec_mode": "auto",
"fec1D_destination_port": 30000,
"fec2D_destination_port": null,
"fec_destination_ip": 233.252.0.2
}
]
SMPTE 2022-7 describes redundant streams for RTP connections, and is supported by the Connection Management Specification. This manifests itself in the fact that the JSON which describes constraints and transport parameters resides within an array. Where SMPTE-2022-7 is not supported this array contains only one object. Where SMPTE-2022-7 is supported the array contains two entries. The first entry contains information pertaining to Path 1, the second information pertaining to Path 2.
Where a Receiver supports SMPTE 2022-7 but is required to Receive a non-SMPTE 2022-7 stream, only the first set of transport parameters should be used. rtp_enable
in the second set of parameters must be set to false and transport parameters in the SDP file should be mapped onto that first set of parameters in the array.
Connection Management APIs supporting SMPTE 2022-7 must comply with RFC 7104 when creating and interpreting SDP files. Implementors may also wish to consider the guidance given in VSF TR-04. The stream listed first in the SDP file should be interpreted as being Path 1, and be populated to the first transport parameter object in /staged
, with the inverse being true for Path 2.
The three examples given in RFC 7104 are shown below, followed by the transport parameters that would be presented on the /staged
endpoint by a Receiver that has parsed the file.
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=DUP Grouping Semantics
t=0 0
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1 198.51.100.2
a=rtpmap:100 MP2T/90000
a=ssrc:1000 cname:ch1@example.com
a=ssrc:1010 cname:ch1@example.com
a=ssrc-group:DUP 1000 1010
a=mid:Ch1
transport_params:[
{
"source_ip": "198.51.100.1",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
},{
"source_ip": "198.51.100.2",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
}
]
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=DUP Grouping Semantics
t=0 0
a=group:DUP S1a S1b
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1
a=rtpmap:100 MP2T/90000
a=mid:S1a
m=video 30000 RTP/AVP 101
c=IN IP4 233.252.0.2/127
a=source-filter:incl IN IP4 233.252.0.2 198.51.100.1
a=rtpmap:101 MP2T/90000
a=mid:S1b
transport_params:[
{
"source_ip": "198.51.100.1",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
},{
"source_ip": "198.51.100.1",
"multicast_ip": "233.252.0.2",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
}
]
v=0
o=ali 1122334455 1122334466 IN IP4 dup.example.com
s=Delayed Duplication
t=0 0
m=video 30000 RTP/AVP 100
c=IN IP4 233.252.0.1/127
a=source-filter:incl IN IP4 233.252.0.1 198.51.100.1
a=rtpmap:100 MP2T/90000
a=ssrc:1000 cname:ch1a@example.com
a=ssrc:1010 cname:ch1a@example.com
a=ssrc-group:DUP 1000 1010
a=duplication-delay:50
a=mid:Ch1
transport_params:[
{
"source_ip": "198.51.100.1",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
},{
"source_ip": "198.51.100.1",
"multicast_ip": "233.252.0.1",
"interface_ip": "auto",
"destination_port": 30000,
"rtp_enabled": true
}
]
RTCP provides various functions to support the operation of RTP, principally QoS reporting. RTCP is defined in Section 6 of RFC 3550, which suggests the next highest odd port after the RTP port should be used for its transmission. Where RTCP and forward error correction are both in use the RTP port should be chosen to be even, to satisfy the recommendations of both RFC 3550 and SMPTE 2022-5 without resulting in port collisions.
Senders and Receivers supporting RTCP should comply with RFC 3605 when creating and receiving SDP files. An RFC 3605 compliant SDP files are shown below, along with the transport parameters that would be presented on the /staged
endpoint by a Receiver that had just parsed that file.
v=0
o=- 1497010742 1497010742 IN IP4 172.29.226.24
s=SDP Example
t=2873397496 2873404696
m=video 5000 RTP/AVP 103
c=IN IP4 232.21.21.133/32
a=source-filter:incl IN IP4 232.21.21.133 172.29.226.24
a=rtpmap:103 raw/90000
a=rtcp:5001 IN IP4 232.21.21.133
transport_params:[
{
"source_ip": "172.29.226.24",
"multicast_ip": "232.21.21.133",
"interface_ip": "auto",
"destination_port": 5000,
"rtcp_enabled": true,
"rtcp_destination_ip": "232.21.21.133",
"rtcp_destination_port": 5001,
"rtp_enabled": true
}
]