

# About SDP files
SMPTE 2110 SDP files

The guide has been updated to clarify that the source filter lines in SDP files are optional.

The SMPTE 2110 specification relies on SDP files to describe the contents of the SMPTE 2110 streams. There is one file for each type of stream. The file for each stream contains the following information:
+ The source IP address for the file. This is an address that the sender controls.
+ The unicast or multicast address that the receiver can connect to, in order to obtain the content.
+ Descriptions of the media in the stream.

**SDP files for content into Elemental Live**

For SMPTE 2110 inputs, Elemental Live is the receiver and the upstream system is the sender.
+ Typically, the sender (the upstream system) is responsible for creating the *source SDP file*. 

  If the sender hasn't created the file, or if your organization is the originator of the stream and the file wasn't created by an automated system, then you can create the file. For more information, see [About SDP files](#2110-sdp-about).
+ If the source SMPTE 2110 streams aren't managed by NMOS, the source SDP files must be stored on a server that Elemental Live can access using HTTP. You and the sender should agree on a suitable location.
+ If the source SMPTE 2110 streams are being managed by NMOS, you should have already set up the stream in the NMOS registry.

**SDP files for output from Elemental Live**

For SMPTE 2110 outputs, Elemental Live is the sender and the downstream system is the receiver.
+ Elemental Live always generates the applicable *output SDP files* and places them on a directory on the appliance.
+ If the SMPTE 2110 output group doesn't use NMOS, you must make the output SDP files available to the receiver. The files must be on an HTTP server that the receiver can access. For information about obtaining the SDP files, see [Step 4: Download and post the SDP file](locate-sdp.md).
+ If the SMPTE 2110 output group does use NMOS, Elemental Live handles delivery of the output SDP files available to the NMOS registry. There is nothing you need to do with the files.

The following topics describe the format of each type of SDP file, using examples.

**Note**  
You are responsible for understanding the SMPTE 2110 specification. We provide the examples below only as a courtesy. Refer to the specification for complete information about the SDP file.

**Topics**
+ [

# Format of an SDP file for video
](2120-sdp-video.md)
+ [

# Format of an SDP file for audio
](2120-sdp-audio.md)
+ [

# Format of an SDP file for ancillary data
](2120-sdp-ancillary.md)
+ [

# SDP file with 2022-7 information
](2120-sdp-2022-7.md)

# Format of an SDP file for video


```
v=0
o=- 3826217993 3826217993 IN IP4 10.xx.xxx.198
s=AWS Elemental SMPTE 2110 Output: [LiveEvent: 13] [OutputGroup: smpte_2110] 
   [EssenceType_ID: 2110-20_video_198]
t=0 0
m=video 50000 RTP/AVP 96
c=IN IP4 239.x.x.x/64
b=AS:2568807
a=source-filter: incl IN IP4 239.x.x.x 10.xx.xxx.2
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; 
   exactframerate=60; depth=10; TCS=SDR; colorimetry=BT709; 
   interlaced; PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN; PAR=1:1;
a=mediaclk:direct=0
a=ts-refclk:localmac=1c-34-da-5a-be-34
```

Following is information about the data in this example:
+ `o=` This line identifies the source IP for the stream
+ `m=video`. This identifies the file as a video description. `50000` is the port of the stream. This line must occur before the `b` and `a` lines.. 
+ `c=` identifies the destination IP address. This is a unicast or multicast address.
+ `b=AS:2568807` is the bandwidth in kilobytes, and applies only for JPEG XS.
+ `a=source-filter` identifies a filter. This line is optional. 

  In a file for an input to Elemental Live: 
  + If the line is included, Elemental Live will listen only to the source IP (10.xx.xxx.2) for packets. 
  + If the line isn't included, Elemental Live will listen to any packets on the destination IP address (239.x.x.x).

  In a file for an output: Elemental Live always includes this line in any SDP file that it creates.
+ `Width` and `height` together specify the resolution. 
+ `Exactframerate` specifies the frames per second (fps). 
+ `Raw` is the video compression—`raw` for uncompressed video, `jxsv` for JPEG XS. 
+ `90000` is the frequency.

# Format of an SDP file for audio


```
v=0
o=- 1443716955 1443716955 IN IP4 10.xx.xxx.236
s=st2110 0-1-0
t=0 0
m=audio 20000 RTP/AVP 97
c=IN IP4 239.x.x.x/64
a=source-filter: incl IN IP4 239.x.x.x 10.xx.xxx.236
a=rtpmap:97 L24/48000/2
a=mediaclk:direct=0 rate=48000
a=framecount:48
a=ptime:1
a=ts-refclk:ptp=IEEE1588-2008:04-5c-6c-ff-fe-0a-53-70:127
```

Following is information about the data in this example:
+ `o=` This line identifies the source IP for the stream
+ `m=audio`. This identifies the file as an audio description. `20000` is the port of the stream. This line must occur before the `a` lines.
+ `c=` identifies the destination IP address. This is a unicast or multicast address.
+ `a=source-filter` identifies a filter. This line is optional. 

  In a file for an input to Elemental Live: 
  + If the line is included, Elemental Live will listen only to the source IP (10.xx.xxx.236) for packets. 
  + If the line isn't included, Elemental Live will listen to any packets on the destination IP address (239.x.x.x).

  In a file for an output: Elemental Live always includes this line in any SDP file that it creates.
+ **a=rtpmap** provides information about the audio format:
  + An example for PCM: 

    `a=rtpmap:97 L24/48000/2`

    `L24` is the number of bits per PCM audio sample. `48000` is the sample rate. `2` is the number of channels, in this example, a single stereo track.
  + An example for a Dolby Digital codec:

    `a=rtpmap:96 AM824/48000/5 a=fmtp:96 channel-order=SMPTE2110.(AES3,AES3)`

    `48000` is the sample rate. `6` is the number of AM824 subframe pairs, and must be an even number.

# Format of an SDP file for ancillary data


```
v=0
o=- 1443716955 1443716955 IN IP4 10.xx.xxx.236
s=st2110 0-9-0
t=0 0
m=video 20000 RTP/AVP 100
c=IN IP4 239.x.x.xx/64
a=source-filter: incl IN IP4 239.x.x.xx 10.xx.xxx.236
a=rtpmap:100 smpte291/90000
a=fmtp:100 VPID_Code=133;
a=mediaclk:direct=0 rate=90000
a=ts-refclk:ptp=IEEE1588-2008:04-5c-6c-ff-fe-0a-53-70:127
```

Following is information about the data in this example:
+ `o=` This line identifies the source IP for the stream
+ `m=` The combination of `m=video` and `smpte291` (in the `a=rtpmap:` line) identifies this file as an ancillary data file. `20000` is the port of the stream. This line must occur before the `a` lines.
+ `c=` identifies the destination IP address. This is a unicast or multicast address.
+ `a=source-filter` identifies a filter. This line is optional. 

  In a file for an input to Elemental Live: 
  + If the line is included, Elemental Live will listen only to the source IP (10.xx.xxx.236) for packets. 
  + If the line isn't included, Elemental Live will listen to any packets on the destination IP address (239.x.x.x).

  In a file for an output: Elemental Live always includes this line in any SDP file that it creates.

# SDP file with 2022-7 information


If the source implements [seamless protection switching](2110-options.md) (SMPTE 2022-7), it includes extra data in each applicable file, to provide information about the primary and secondary streams. 

Keep in mind that it's possible that only some of the streams implement seamless protection switching, and some don't implement it.

Following is an example for the tags that identify video, as indicated by the line `m=video`. The information for the audio and ancillary streams follow the same pattern.

```
v=0
o=- 456221445 0 IN IP4 203.x.xxx.252
s=AJA Lily10G2-SDI 2110
t=0 0
a=group:DUP 1 2
m=video 20000 RTP/AVP 96
c=IN IP4 10.24.34.0/24
a=source-filter:incl IN IP4 192.x.x.1 198.xx.xxx.252
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; 
   exactframerate=30000/1001; depth=10; TCS=SDR; colorimetry=BT709; 
   PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN; interlace=1;
a=ts-refclk:ptp=IEEE1588-2008:00-90-56-FF-FE-08-0F-45
a=mediaclk:direct=0
a=mid:1
m=video 20000 RTP/AVP 96
c=IN 10.24.34.0/24
a=source-filter:incl IN IP4 192.x.x.3 1198.xx.xxx.253
a=rtpmap:96 raw/90000
a=fmtp:96 sampling=YCbCr-4:2:2; width=1920; height=1080; 
   exactframerate=30000/1001; depth=10; TCS=SDR; colorimetry=BT709; 
   PM=2110GPM; SSN=ST2110-20:2017; TP=2110TPN; interlace=1;
a=ts-refclk:ptp=IEEE1588-2008:00-90-56-FF-FE-08-0F-45
a=mediaclk:direct=0
a=mid:2
```

Portions marked in bold are unique to SMPTE 2022-7.
+ `a=group:DUP 1 2` indicates that seamless protection is being used, and identify which streams are the primary (1) and secondary (2). 
+ `a=mid:1` indicates that the lines that follow apply to the primary stream. The name value (1, in this example) must be identical to the first entry in the `a=group` tag.
+ `a=mid:2` indicates that the lines that follow apply to the secondary stream. 