OLD | NEW |
1 <?xml version="1.0" encoding="UTF-8"?> | 1 <?xml version="1.0" encoding="UTF-8"?> |
2 <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | 2 <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ |
3 <!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2119.xml'> | 3 <!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2119.xml'> |
| 4 <!ENTITY rfc3389 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3389.xml'> |
4 <!ENTITY rfc3550 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3550.xml'> | 5 <!ENTITY rfc3550 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3550.xml'> |
5 <!ENTITY rfc3711 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3711.xml'> | 6 <!ENTITY rfc3711 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3711.xml'> |
6 <!ENTITY rfc3551 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3551.xml'> | 7 <!ENTITY rfc3551 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3551.xml'> |
7 <!ENTITY rfc4288 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.4288.xml'> | 8 <!ENTITY rfc6838 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.6838.xml'> |
8 <!ENTITY rfc4855 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.4855.xml'> | 9 <!ENTITY rfc4855 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.4855.xml'> |
9 <!ENTITY rfc4566 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.4566.xml'> | 10 <!ENTITY rfc4566 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.4566.xml'> |
10 <!ENTITY rfc3264 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3264.xml'> | 11 <!ENTITY rfc3264 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3264.xml'> |
11 <!ENTITY rfc2974 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2974.xml'> | 12 <!ENTITY rfc2974 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2974.xml'> |
12 <!ENTITY rfc2326 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2326.xml'> | 13 <!ENTITY rfc2326 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.2326.xml'> |
13 <!ENTITY rfc3555 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3555.xml'> | 14 <!ENTITY rfc3555 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.3555.xml'> |
14 <!ENTITY rfc5576 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.5576.xml'> | 15 <!ENTITY rfc5576 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.5576.xml'> |
15 <!ENTITY rfc6562 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.6562.xml'> | 16 <!ENTITY rfc6562 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.6562.xml'> |
16 <!ENTITY rfc6716 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.6716.xml'> | 17 <!ENTITY rfc6716 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.
RFC.6716.xml'> |
17 <!ENTITY nbsp " "> | 18 <!ENTITY nbsp " "> |
18 ]> | 19 ]> |
19 | 20 |
20 <rfc category="std" ipr="trust200902" docName="draft-ietf-payload-rtp-opus-01"
> | 21 <rfc category="std" ipr="trust200902" docName="draft-ietf-payload-rtp-opus-07"
> |
21 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | 22 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> |
22 | 23 |
23 <?rfc strict="yes" ?> | 24 <?rfc strict="yes" ?> |
24 <?rfc toc="yes" ?> | 25 <?rfc toc="yes" ?> |
25 <?rfc tocdepth="3" ?> | 26 <?rfc tocdepth="3" ?> |
26 <?rfc tocappendix='no' ?> | 27 <?rfc tocappendix='no' ?> |
27 <?rfc tocindent='yes' ?> | 28 <?rfc tocindent='yes' ?> |
28 <?rfc symrefs="yes" ?> | 29 <?rfc symrefs="yes" ?> |
29 <?rfc sortrefs="yes" ?> | 30 <?rfc sortrefs="yes" ?> |
30 <?rfc compact="no" ?> | 31 <?rfc compact="no" ?> |
31 <?rfc subcompact="yes" ?> | 32 <?rfc subcompact="yes" ?> |
32 <?rfc iprnotified="yes" ?> | 33 <?rfc iprnotified="yes" ?> |
33 | 34 |
34 <front> | 35 <front> |
35 <title abbrev="RTP Payload Format for Opus Codec"> | 36 <title abbrev="RTP Payload Format for Opus Codec"> |
36 RTP Payload Format for Opus Speech and Audio Codec | 37 RTP Payload Format for Opus Speech and Audio Codec |
37 </title> | 38 </title> |
38 | 39 |
39 <author fullname="Julian Spittka" initials="J." surname="Spittka"> | 40 <author fullname="Julian Spittka" initials="J." surname="Spittka"> |
40 <address> | 41 <address> |
41 <email>jspittka@gmail.com</email> | 42 <email>jspittka@gmail.com</email> |
42 </address> | 43 </address> |
43 </author> | 44 </author> |
44 | 45 |
45 <author initials='K.' surname='Vos' fullname='Koen Vos'> | 46 <author initials='K.' surname='Vos' fullname='Koen Vos'> |
46 <organization>Skype Technologies S.A.</organization> | 47 <organization>vocTone</organization> |
47 <address> | 48 <address> |
48 <postal> | 49 <postal> |
49 <street>3210 Porter Drive</street> | 50 <street></street> |
50 <code>94304</code> | 51 <code></code> |
51 <city>Palo Alto</city> | 52 <city></city> |
52 <region>CA</region> | 53 <region></region> |
53 <country>USA</country> | 54 <country></country> |
54 </postal> | 55 </postal> |
55 <email>koenvos74@gmail.com</email> | 56 <email>koenvos74@gmail.com</email> |
56 </address> | 57 </address> |
57 </author> | 58 </author> |
58 | 59 |
59 <author initials="JM" surname="Valin" fullname="Jean-Marc Valin"> | 60 <author initials="JM" surname="Valin" fullname="Jean-Marc Valin"> |
60 <organization>Mozilla</organization> | 61 <organization>Mozilla</organization> |
61 <address> | 62 <address> |
62 <postal> | 63 <postal> |
63 <street>650 Castro Street</street> | 64 <street>331 E. Evelyn Avenue</street> |
64 <city>Mountain View</city> | 65 <city>Mountain View</city> |
65 <region>CA</region> | 66 <region>CA</region> |
66 <code>94041</code> | 67 <code>94041</code> |
67 <country>USA</country> | 68 <country>USA</country> |
68 </postal> | 69 </postal> |
69 <email>jmvalin@jmvalin.ca</email> | 70 <email>jmvalin@jmvalin.ca</email> |
70 </address> | 71 </address> |
71 </author> | 72 </author> |
72 | 73 |
73 <date day='2' month='August' year='2013' /> | 74 <date day='13' month='January' year='2015' /> |
74 | 75 |
75 <abstract> | 76 <abstract> |
76 <t> | 77 <t> |
77 This document defines the Real-time Transport Protocol (RTP) payload | 78 This document defines the Real-time Transport Protocol (RTP) payload |
78 format for packetization of Opus encoded | 79 format for packetization of Opus encoded |
79 speech and audio data that is essential to integrate the codec in the | 80 speech and audio data necessary to integrate the codec in the |
80 most compatible way. Further, media type registrations | 81 most compatible way. Further, it describes media type registrations |
81 are described for the RTP payload format. | 82 for the RTP payload format. |
82 </t> | 83 </t> |
83 </abstract> | 84 </abstract> |
84 </front> | 85 </front> |
85 | 86 |
86 <middle> | 87 <middle> |
87 <section title='Introduction'> | 88 <section title='Introduction'> |
88 <t> | 89 <t> |
89 The Opus codec is a speech and audio codec developed within the | 90 The Opus codec is a speech and audio codec developed within the |
90 IETF Internet Wideband Audio Codec working group (codec). The codec | 91 IETF Internet Wideband Audio Codec working group. The codec |
91 has a very low algorithmic delay and it | 92 has a very low algorithmic delay and it |
92 is highly scalable in terms of audio bandwidth, bitrate, and | 93 is highly scalable in terms of audio bandwidth, bitrate, and |
93 complexity. Further, it provides different modes to efficiently encode s
peech signals | 94 complexity. Further, it provides different modes to efficiently encode s
peech signals |
94 as well as music signals, thus, making it the codec of choice for | 95 as well as music signals, thus making it the codec of choice for |
95 various applications using the Internet or similar networks. | 96 various applications using the Internet or similar networks. |
96 </t> | 97 </t> |
97 <t> | 98 <t> |
98 This document defines the Real-time Transport Protocol (RTP) | 99 This document defines the Real-time Transport Protocol (RTP) |
99 <xref target="RFC3550"/> payload format for packetization | 100 <xref target="RFC3550"/> payload format for packetization |
100 of Opus encoded speech and audio data that is essential to | 101 of Opus encoded speech and audio data necessary to |
101 integrate the Opus codec in the | 102 integrate the Opus codec in the |
102 most compatible way. Further, media type registrations are described for | 103 most compatible way. Further, it describes media type registrations for |
103 the RTP payload format. More information on the Opus | 104 the RTP payload format. More information on the Opus |
104 codec can be obtained from <xref target="RFC6716"/>. | 105 codec can be obtained from <xref target="RFC6716"/>. |
105 </t> | 106 </t> |
106 </section> | 107 </section> |
107 | 108 |
108 <section title='Conventions, Definitions and Acronyms used in this document'
> | 109 <section title='Conventions, Definitions and Acronyms used in this document'
> |
109 <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | 110 <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
110 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | 111 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
111 document are to be interpreted as described in <xref target="RFC2119"/>.</
t> | 112 document are to be interpreted as described in <xref target="RFC2119"/>.</
t> |
112 <t> | 113 <t> |
113 <list style='hanging'> | 114 <list style='hanging'> |
| 115 <t hangText="audio bandwidth:"> The range of audio frequecies being co
ded</t> |
114 <t hangText="CBR:"> Constant bitrate</t> | 116 <t hangText="CBR:"> Constant bitrate</t> |
115 <t hangText="CPU:"> Central Processing Unit</t> | 117 <t hangText="CPU:"> Central Processing Unit</t> |
116 <t hangText="DTX:"> Discontinuous transmission</t> | 118 <t hangText="DTX:"> Discontinuous transmission</t> |
117 <t hangText="FEC:"> Forward error correction</t> | 119 <t hangText="FEC:"> Forward error correction</t> |
118 » <t hangText="IP:"> Internet Protocol</t> | 120 <t hangText="IP:"> Internet Protocol</t> |
119 » <t hangText="samples:"> Speech or audio samples (usually per chann
el)</t> | 121 <t hangText="samples:"> Speech or audio samples (per channel)</t> |
120 » <t hangText="SDP:"> Session Description Protocol</t> | 122 <t hangText="SDP:"> Session Description Protocol</t> |
121 <t hangText="VBR:"> Variable bitrate</t> | 123 <t hangText="VBR:"> Variable bitrate</t> |
122 </list> | 124 </list> |
123 </t> | 125 </t> |
124 <section title='Audio Bandwidth'> | 126 <t> |
125 » <t> | 127 Throughout this document, we refer to the following definitions: |
126 » Throughout this document, we refer to the following definitions: | 128 </t> |
127 » </t> | |
128 <texttable anchor='bandwidth_definitions'> | 129 <texttable anchor='bandwidth_definitions'> |
129 » <ttcol align='center'>Abbreviation</ttcol> | 130 <ttcol align='center'>Abbreviation</ttcol> |
130 <ttcol align='center'>Name</ttcol> | 131 <ttcol align='center'>Name</ttcol> |
131 <ttcol align='center'>Bandwidth</ttcol> | 132 <ttcol align='center'>Audio Bandwidth (Hz)</ttcol> |
132 <ttcol align='center'>Sampling</ttcol> | 133 <ttcol align='center'>Sampling Rate (Hz)</ttcol> |
133 <c>nb</c> | 134 <c>NB</c> |
134 <c>Narrowband</c> | 135 <c>Narrowband</c> |
135 <c>0 - 4000</c> | 136 <c>0 - 4000</c> |
136 <c>8000</c> | 137 <c>8000</c> |
137 | 138 |
138 <c>mb</c> | 139 <c>MB</c> |
139 <c>Mediumband</c> | 140 <c>Mediumband</c> |
140 <c>0 - 6000</c> | 141 <c>0 - 6000</c> |
141 <c>12000</c> | 142 <c>12000</c> |
142 | 143 |
143 <c>wb</c> | 144 <c>WB</c> |
144 <c>Wideband</c> | 145 <c>Wideband</c> |
145 <c>0 - 8000</c> | 146 <c>0 - 8000</c> |
146 <c>16000</c> | 147 <c>16000</c> |
147 | 148 |
148 <c>swb</c> | 149 <c>SWB</c> |
149 <c>Super-wideband</c> | 150 <c>Super-wideband</c> |
150 <c>0 - 12000</c> | 151 <c>0 - 12000</c> |
151 <c>24000</c> | 152 <c>24000</c> |
152 | 153 |
153 <c>fb</c> | 154 <c>FB</c> |
154 <c>Fullband</c> | 155 <c>Fullband</c> |
155 <c>0 - 20000</c> | 156 <c>0 - 20000</c> |
156 <c>48000</c> | 157 <c>48000</c> |
157 | 158 |
158 <postamble> | 159 <postamble> |
159 Audio bandwidth naming | 160 Audio bandwidth naming |
160 </postamble> | 161 </postamble> |
161 </texttable> | 162 </texttable> |
162 </section> | |
163 </section> | 163 </section> |
164 | 164 |
165 <section title='Opus Codec'> | 165 <section title='Opus Codec'> |
166 <t> | 166 <t> |
167 The Opus <xref target="RFC6716"/> speech and audio codec has been develo
ped to encode speech | 167 The Opus <xref target="RFC6716"/> codec encodes speech |
168 signals as well as audio signals. Two different modes, a voice mode | 168 signals as well as general audio signals. Two different modes can be |
169 or an audio mode, may be chosen to allow the most efficient coding | 169 chosen, a voice mode or an audio mode, to allow the most efficient codin
g |
170 dependent on the type of input signal, the sampling frequency of the | 170 depending on the type of the input signal, the sampling frequency of the |
171 input signal, and the specific application. | 171 input signal, and the intended application. |
172 </t> | 172 </t> |
173 | 173 |
174 <t> | 174 <t> |
175 The voice mode allows efficient encoding of voice signals at lower bit | 175 The voice mode allows efficient encoding of voice signals at lower bit |
176 rates while the audio mode is optimized for audio signals at medium and | 176 rates while the audio mode is optimized for general audio signals at med
ium and |
177 higher bitrates. | 177 higher bitrates. |
178 </t> | 178 </t> |
179 | 179 |
180 <t> | 180 <t> |
181 The Opus speech and audio codec is highly scalable in terms of audio | 181 The Opus speech and audio codec is highly scalable in terms of audio |
182 bandwidth, bitrate, and complexity. Further, Opus allows | 182 bandwidth, bitrate, and complexity. Further, Opus allows |
183 transmitting stereo signals. | 183 transmitting stereo signals. |
184 </t> | 184 </t> |
185 | 185 |
186 <section title='Network Bandwidth'> | 186 <section title='Network Bandwidth'> |
187 <t> | 187 <t> |
188 » Opus supports all bitrates from 6 kb/s to 510 kb/s. | 188 Opus supports bitrates from 6 kb/s to 510 kb/s. |
189 » The bitrate can be changed dynamically within that range. | 189 The bitrate can be changed dynamically within that range. |
190 » All | 190 All |
191 » other parameters being | 191 other parameters being |
192 » equal, higher bitrate results in higher quality. | 192 equal, higher bitrates result in higher quality. |
193 » </t> | 193 </t> |
194 » <section title='Recommended Bitrate' anchor='bitrate_by_bandwidth'> | 194 <section title='Recommended Bitrate' anchor='bitrate_by_bandwidth'> |
195 » <t> | 195 <t> |
196 » For a frame size of | 196 For a frame size of |
197 » 20 ms, these | 197 20 ms, these |
198 » are the bitrate "sweet spots" for Opus in various configurations: | 198 are the bitrate "sweet spots" for Opus in various configurations: |
199 | 199 |
200 <list style="symbols"> | 200 <list style="symbols"> |
201 » <t>8-12 kb/s for NB speech,</t> | 201 <t>8-12 kb/s for NB speech,</t> |
202 » <t>16-20 kb/s for WB speech,</t> | 202 <t>16-20 kb/s for WB speech,</t> |
203 » <t>28-40 kb/s for FB speech,</t> | 203 <t>28-40 kb/s for FB speech,</t> |
204 » <t>48-64 kb/s for FB mono music, and</t> | 204 <t>48-64 kb/s for FB mono music, and</t> |
205 » <t>64-128 kb/s for FB stereo music.</t> | 205 <t>64-128 kb/s for FB stereo music.</t> |
206 » </list> | 206 </list> |
207 » </t> | 207 </t> |
208 </section> | 208 </section> |
209 <section title='Variable versus Constant Bit Rate' anchor='variable-vs-
constant-bitrate'> | 209 <section title='Variable versus Constant Bitrate' anchor='variable-vs-c
onstant-bitrate'> |
210 <t> | 210 <t> |
211 » For the same average bitrate, variable bitrate (VBR) can achieve hig
her quality | 211 For the same average bitrate, variable bitrate (VBR) can achieve hig
her quality |
212 » than constant bitrate (CBR). For the majority of voice transmission
application, VBR | 212 than constant bitrate (CBR). For the majority of voice transmission
applications, VBR |
213 » is the best choice. One potential reason for choosing CBR is the pot
ential | 213 is the best choice. One reason for choosing CBR is the potential |
214 » information leak that <spanx style='emph'>may</spanx> occur when enc
rypting the | 214 information leak that <spanx style='emph'>might</spanx> occur when e
ncrypting the |
215 » compressed stream. See <xref target="RFC6562"/> for guidelines on wh
en VBR is | 215 compressed stream. See <xref target="RFC6562"/> for guidelines on wh
en VBR is |
216 » appropriate for encrypted audio communications. In the case where an
existing | 216 appropriate for encrypted audio communications. In the case where an
existing |
217 » VBR stream needs to be converted to CBR for security reasons, then t
he Opus padding | 217 VBR stream needs to be converted to CBR for security reasons, then t
he Opus padding |
218 » mechanism described in <xref target="RFC6716"/> is the RECOMMENDED w
ay to achieve padding | 218 mechanism described in <xref target="RFC6716"/> is the RECOMMENDED w
ay to achieve padding |
219 » because the RTP padding bit is unencrypted.</t> | 219 because the RTP padding bit is unencrypted.</t> |
220 | 220 |
221 » <t> | 221 <t> |
222 The bitrate can be adjusted at any point in time. To avoid congestio
n, | 222 The bitrate can be adjusted at any point in time. To avoid congestio
n, |
223 the average bitrate SHOULD be adjusted to the available | 223 the average bitrate SHOULD NOT exceed the available |
224 network capacity. If no target bitrate is specified, the bitrates sp
ecified in | 224 network bandwidth. If no target bitrate is specified, the bitrates s
pecified in |
225 <xref target='bitrate_by_bandwidth'/> are RECOMMENDED. | 225 <xref target='bitrate_by_bandwidth'/> are RECOMMENDED. |
226 </t> | 226 </t> |
227 | 227 |
228 </section> | 228 </section> |
229 | 229 |
230 <section title='Discontinuous Transmission (DTX)'> | 230 <section title='Discontinuous Transmission (DTX)'> |
231 | 231 |
232 <t> | 232 <t> |
233 The Opus codec may, as described in <xref target='variable-vs-consta
nt-bitrate'/>, | 233 The Opus codec can, as described in <xref target='variable-vs-consta
nt-bitrate'/>, |
234 be operated with an adaptive bitrate. In that case, the bitrate | 234 be operated with a variable bitrate. In that case, the encoder will |
235 will automatically be reduced for certain input signals like periods | 235 automatically reduce the bitrate for certain input signals, like per
iods |
236 of silence. During continuous transmission the bitrate will be | 236 of silence. When using continuous transmission, it will reduce the |
237 reduced, when the input signal allows to do so, but the transmission | 237 bitrate when the characteristics of the input signal permit, but |
238 to the receiver itself will never be interrupted. Therefore, the | 238 will never interrupt the transmission to the receiver. Therefore, th
e |
239 received signal will maintain the same high level of quality over th
e | 239 received signal will maintain the same high level of quality over th
e |
240 full duration of a transmission while minimizing the average bit | 240 full duration of a transmission while minimizing the average bit |
241 rate over time. | 241 rate over time. |
242 </t> | 242 </t> |
243 | 243 |
244 <t> | 244 <t> |
245 In cases where the bitrate of Opus needs to be reduced even | 245 In cases where the bitrate of Opus needs to be reduced even |
246 further or in cases where only constant bitrate is available, | 246 further or in cases where only constant bitrate is available, |
247 the Opus encoder may be set to use discontinuous | 247 the Opus encoder can use discontinuous |
248 transmission (DTX), where parts of the encoded signal that | 248 transmission (DTX), where parts of the encoded signal that |
249 correspond to periods of silence in the input speech or audio signal | 249 correspond to periods of silence in the input speech or audio signal |
250 are not transmitted to the receiver. | 250 are not transmitted to the receiver. A receiver can distinguish |
| 251 between DTX and packet loss by looking for gaps in the sequence |
| 252 number, as described by Section 4.1 |
| 253 of <xref target="RFC3551"/>. |
251 </t> | 254 </t> |
252 | 255 |
253 <t> | 256 <t> |
254 On the receiving side, the non-transmitted parts will be handled by
a | 257 On the receiving side, the non-transmitted parts will be handled by
a |
255 frame loss concealment unit in the Opus decoder which generates a | 258 frame loss concealment unit in the Opus decoder which generates a |
256 comfort noise signal to replace the non transmitted parts of the | 259 comfort noise signal to replace the non transmitted parts of the |
257 speech or audio signal. | 260 speech or audio signal. Use of <xref target="RFC3389"/> Comfort |
| 261 Noise (CN) with Opus is discouraged. |
| 262 The transmitter MUST drop whole frames only, |
| 263 based on the size of the last transmitted frame, |
| 264 to ensure successive RTP timestamps differ by a multiple of 120 and |
| 265 to allow the receiver to use whole frames for concealment. |
258 </t> | 266 </t> |
259 | 267 |
260 <t> | 268 <t> |
261 The DTX mode of Opus will have a slightly lower speech or audio | 269 DTX can be used with both variable and constant bitrate. |
262 quality than the continuous mode. Therefore, it is RECOMMENDED to | 270 It will have a slightly lower speech or audio |
263 use Opus in the continuous mode unless restraints on network | 271 quality than continuous transmission. Therefore, using continuous |
264 capacity are severe. The DTX mode can be engaged for operation | 272 transmission is RECOMMENDED unless restraints on available network b
andwidth |
265 in both adaptive or constant bitrate. | 273 are severe. |
266 </t> | 274 </t> |
267 | 275 |
268 </section> | 276 </section> |
269 | 277 |
270 </section> | 278 </section> |
271 | 279 |
272 <section title='Complexity'> | 280 <section title='Complexity'> |
273 | 281 |
274 <t> | 282 <t> |
275 Complexity can be scaled to optimize for CPU resources in real-time, m
ostly as | 283 Complexity of the encoder can be scaled to optimize for CPU resources
in real-time, mostly as |
276 a trade-off between audio quality and bitrate. Also, different modes o
f Opus have different complexity. | 284 a trade-off between audio quality and bitrate. Also, different modes o
f Opus have different complexity. |
277 </t> | 285 </t> |
278 | 286 |
279 </section> | 287 </section> |
280 | 288 |
281 <section title="Forward Error Correction (FEC)"> | 289 <section title="Forward Error Correction (FEC)"> |
282 | 290 |
283 <t> | 291 <t> |
284 The voice mode of Opus allows for "in-band" forward error correction (
FEC) | 292 The voice mode of Opus allows for embedding "in-band" forward error co
rrection (FEC) |
285 data to be embedded into the bit stream of Opus. This FEC scheme adds | 293 data into the Opus bit stream. This FEC scheme adds |
286 redundant information about the previous packet (n-1) to the current | 294 redundant information about the previous packet (N-1) to the current |
287 output packet n. For | 295 output packet N. For |
288 each frame, the encoder decides whether to use FEC based on (1) an | 296 each frame, the encoder decides whether to use FEC based on (1) an |
289 externally-provided estimate of the channel's packet loss rate; (2) an | 297 externally-provided estimate of the channel's packet loss rate; (2) an |
290 externally-provided estimate of the channel's capacity; (3) the | 298 externally-provided estimate of the channel's capacity; (3) the |
291 sensitivity of the audio or speech signal to packet loss; (4) whether | 299 sensitivity of the audio or speech signal to packet loss; (4) whether |
292 the receiving decoder has indicated it can take advantage of "in-band" | 300 the receiving decoder has indicated it can take advantage of "in-band" |
293 FEC information. The decision to send "in-band" FEC information is | 301 FEC information. The decision to send "in-band" FEC information is |
294 entirely controlled by the encoder and therefore no special precaution
s | 302 entirely controlled by the encoder and therefore no special precaution
s |
295 for the payload have to be taken. | 303 for the payload have to be taken. |
296 </t> | 304 </t> |
297 | 305 |
298 <t> | 306 <t> |
299 On the receiving side, the decoder can take advantage of this | 307 On the receiving side, the decoder can take advantage of this |
300 additional information when, in case of a packet loss, the next packet | 308 additional information when it loses a packet and the next packet |
301 is available. In order to use the FEC data, the jitter buffer needs | 309 is available. In order to use the FEC data, the jitter buffer needs |
302 to provide access to payloads with the FEC data. The decoder API func
tion | 310 to provide access to payloads with the FEC data. |
303 has a flag to indicate that a FEC frame rather than a regular frame sh
ould | 311 Instead of performing loss concealment for a missing packet, the |
304 be decoded. If no FEC data is available for the current frame, the de
coder | 312 receiver can then configure its decoder to decode the FEC data from th
e next packet. |
305 will consider the frame lost and invokes the frame loss concealment. | |
306 </t> | 313 </t> |
307 | 314 |
308 <t> | 315 <t> |
309 If the FEC scheme is not implemented on the receiving side, FEC | 316 Any compliant Opus decoder is capable of ignoring |
| 317 FEC information when it is not needed, so encoding with FEC cannot cau
se |
| 318 interoperability problems. |
| 319 However, if FEC cannot be used on the receiving side, then FEC |
310 SHOULD NOT be used, as it leads to an inefficient usage of network | 320 SHOULD NOT be used, as it leads to an inefficient usage of network |
311 resources. Decoder support for FEC SHOULD be indicated at the time a | 321 resources. Decoder support for FEC SHOULD be indicated at the time a |
312 session is set up. | 322 session is set up. |
313 </t> | 323 </t> |
314 | 324 |
315 </section> | 325 </section> |
316 | 326 |
317 <section title='Stereo Operation'> | 327 <section title='Stereo Operation'> |
318 | 328 |
319 <t> | 329 <t> |
320 Opus allows for transmission of stereo audio signals. This operation | 330 Opus allows for transmission of stereo audio signals. This operation |
321 is signaled in-band in the Opus payload and no special arrangement | 331 is signaled in-band in the Opus payload and no special arrangement |
322 is required in the payload format. Any implementation of the Opus | 332 is needed in the payload format. An |
323 decoder MUST be capable of receiving stereo signals, although it MAY | 333 Opus decoder is capable of handling a stereo encoding, but an |
324 » decode those signals as mono. | 334 application might only be capable of consuming a single audio |
| 335 channel. |
325 </t> | 336 </t> |
326 <t> | 337 <t> |
327 If a decoder can not take advantage of the benefits of a stereo signal | 338 If a decoder cannot take advantage of the benefits of a stereo signal |
328 this SHOULD be indicated at the time a session is set up. In that case | 339 this SHOULD be indicated at the time a session is set up. In that case |
329 the sending side SHOULD NOT send stereo signals as it leads to an | 340 the sending side SHOULD NOT send stereo signals as it leads to an |
330 inefficient usage of the network. | 341 inefficient usage of network resources. |
331 </t> | 342 </t> |
332 | 343 |
333 </section> | 344 </section> |
334 | 345 |
335 </section> | 346 </section> |
336 | 347 |
337 <section title='Opus RTP Payload Format' anchor='opus-rtp-payload-format'> | 348 <section title='Opus RTP Payload Format' anchor='opus-rtp-payload-format'> |
338 <t>The payload format for Opus consists of the RTP header and Opus payload | 349 <t>The payload format for Opus consists of the RTP header and Opus payload |
339 data.</t> | 350 data.</t> |
340 <section title='RTP Header Usage'> | 351 <section title='RTP Header Usage'> |
341 <t>The format of the RTP header is specified in <xref target="RFC3550"/>
. The Opus | 352 <t>The format of the RTP header is specified in <xref target="RFC3550"/>
. |
342 payload format uses the fields of the RTP header consistent with this | 353 The use of the fields of the RTP header by the Opus payload format is |
343 specification.</t> | 354 consistent with that specification.</t> |
344 | 355 |
345 <t>The payload length of Opus is a multiple number of octets and | 356 <t>The payload length of Opus is an integer number of octets and |
346 therefore no padding is required. The payload MAY be padded by an | 357 therefore no padding is necessary. The payload MAY be padded by an |
347 integer number of octets according to <xref target="RFC3550"/>.</t> | 358 integer number of octets according to <xref target="RFC3550"/>, |
| 359 although the Opus internal padding is preferred.</t> |
348 | 360 |
349 <t>The marker bit (M) of the RTP header is used in accordance with | 361 <t>The timestamp, sequence number, and marker bit (M) of the RTP header |
350 » Section 4.1 of <xref target="RFC3551"/>.</t> | 362 are used in accordance with Section 4.1 |
| 363 of <xref target="RFC3551"/>.</t> |
351 | 364 |
352 <t>The RTP payload type for Opus has not been assigned statically and is | 365 <t>The RTP payload type for Opus is to be assigned dynamically.</t> |
353 expected to be assigned dynamically.</t> | |
354 | 366 |
355 <t>The receiving side MUST be prepared to receive duplicates of RTP | 367 <t>The receiving side MUST be prepared to receive duplicate RTP |
356 packets. Only one of those payloads MUST be provided to the Opus decoder | 368 packets. The receiver MUST provide at most one of those payloads to the |
357 for decoding and others MUST be discarded.</t> | 369 Opus decoder for decoding, and MUST discard the others.</t> |
358 | 370 |
359 <t>Opus supports 5 different audio bandwidths which may be adjusted duri
ng | 371 <t>Opus supports 5 different audio bandwidths, which can be adjusted dur
ing |
360 the duration of a call. The RTP timestamp clock frequency is defined as | 372 a call. |
361 the highest supported sampling frequency of Opus, i.e. 48000 Hz, for all | 373 The RTP timestamp is incremented with a 48000 Hz clock rate |
362 modes and sampling rates of Opus. The unit | 374 for all modes of Opus and all sampling rates. |
| 375 The unit |
363 for the timestamp is samples per single (mono) channel. The RTP timestam
p corresponds to the | 376 for the timestamp is samples per single (mono) channel. The RTP timestam
p corresponds to the |
364 sample time of the first encoded sample in the encoded frame. For sampli
ng | 377 sample time of the first encoded sample in the encoded frame. |
365 rates lower than 48000 Hz the number of samples has to be multiplied wit
h | 378 For data encoded with sampling rates other than 48000 Hz, |
366 a multiplier according to <xref target="fs-upsample-factors"/> to determ
ine | 379 » the sampling rate has to be adjusted to 48000 Hz.</t> |
367 the RTP timestamp.</t> | |
368 | 380 |
369 <texttable anchor='fs-upsample-factors' title="Timestamp multiplier"> | |
370 <ttcol align='center'>fs (Hz)</ttcol> | |
371 <ttcol align='center'>Multiplier</ttcol> | |
372 <c>8000</c> | |
373 <c>6</c> | |
374 <c>12000</c> | |
375 <c>4</c> | |
376 <c>16000</c> | |
377 <c>3</c> | |
378 <c>24000</c> | |
379 <c>2</c> | |
380 <c>48000</c> | |
381 <c>1</c> | |
382 </texttable> | |
383 </section> | 381 </section> |
384 | 382 |
385 <section title='Payload Structure'> | 383 <section title='Payload Structure'> |
386 <t> | 384 <t> |
387 The Opus encoder can be set to output encoded frames representing 2.5,
5, 10, 20, | 385 The Opus encoder can output encoded frames representing 2.5, 5, 10, 20
, |
388 40, or 60 ms of speech or audio data. Further, an arbitrary number of
frames can be | 386 40, or 60 ms of speech or audio data. Further, an arbitrary numbe
r of frames can be |
389 combined into a packet. The maximum packet length is limited to the am
ount of encoded | 387 combined into a packet, up to a maximum packet duration representing |
390 data representing 120 ms of speech or audio data. The packetization of
encoded data | 388 120 ms of speech or audio data. The grouping of one or more Opus |
391 is purely done by the Opus encoder and therefore only one packet outpu
t from the Opus | 389 frames into a single Opus packet is defined in Section 3 of |
392 encoder MUST be used as a payload. | 390 <xref target="RFC6716"/>. An RTP payload MUST contain exactly one |
| 391 Opus packet as defined by that document. |
393 </t> | 392 </t> |
394 | 393 |
395 <t><xref target='payload-structure'/> shows the structure combined with
the RTP header.</t> | 394 <t><xref target='payload-structure'/> shows the structure combined with
the RTP header.</t> |
396 | 395 |
397 <figure anchor="payload-structure" | 396 <figure anchor="payload-structure" |
398 title="Payload Structure with RTP header"> | 397 title="Packet structure with RTP header"> |
399 <artwork> | 398 <artwork align="center"> |
400 <![CDATA[ | 399 <![CDATA[ |
401 +----------+--------------+ | 400 +----------+--------------+ |
402 |RTP Header| Opus Payload | | 401 |RTP Header| Opus Payload | |
403 +----------+--------------+ | 402 +----------+--------------+ |
404 ]]> | 403 ]]> |
405 </artwork> | 404 </artwork> |
406 </figure> | 405 </figure> |
407 | 406 |
408 <t> | 407 <t> |
409 <xref target='opus-packetization'/> shows supported frame sizes in | 408 <xref target='opus-packetization'/> shows supported frame sizes in |
410 milliseconds of encoded speech or audio data for speech and audio mode
| 409 milliseconds of encoded speech or audio data for the speech and audio
modes |
411 (Mode) and sampling rates (fs) of Opus and how the timestamp needs to | 410 (Mode) and sampling rates (fs) of Opus and shows how the timestamp is |
412 be incremented for packetization (ts incr). If the Opus encoder | 411 incremented for packetization (ts incr). If the Opus encoder |
413 outputs multiple encoded frames into a single packet the timestamps | 412 outputs multiple encoded frames into a single packet, the timestamp |
414 have to be added up according to the combined frames. | 413 increment is the sum of the increments for the individual frames. |
415 </t> | 414 </t> |
416 | 415 |
417 <texttable anchor='opus-packetization' title="Supported Opus frame | 416 <texttable anchor='opus-packetization' title="Supported Opus frame |
418 sizes and timestamp increments"> | 417 sizes and timestamp increments marked with an o. Unsupported marked wit
h an x."> |
419 <ttcol align='center'>Mode</ttcol> | 418 <ttcol align='center'>Mode</ttcol> |
420 <ttcol align='center'>fs</ttcol> | 419 <ttcol align='center'>fs</ttcol> |
421 <ttcol align='center'>2.5</ttcol> | 420 <ttcol align='center'>2.5</ttcol> |
422 <ttcol align='center'>5</ttcol> | 421 <ttcol align='center'>5</ttcol> |
423 <ttcol align='center'>10</ttcol> | 422 <ttcol align='center'>10</ttcol> |
424 <ttcol align='center'>20</ttcol> | 423 <ttcol align='center'>20</ttcol> |
425 <ttcol align='center'>40</ttcol> | 424 <ttcol align='center'>40</ttcol> |
426 <ttcol align='center'>60</ttcol> | 425 <ttcol align='center'>60</ttcol> |
427 <c>ts incr</c> | 426 <c>ts incr</c> |
428 <c>all</c> | 427 <c>all</c> |
429 <c>120</c> | 428 <c>120</c> |
430 <c>240</c> | 429 <c>240</c> |
431 <c>480</c> | 430 <c>480</c> |
432 <c>960</c> | 431 <c>960</c> |
433 <c>1920</c> | 432 <c>1920</c> |
434 <c>2880</c> | 433 <c>2880</c> |
435 <c>voice</c> | 434 <c>voice</c> |
436 <c>nb/mb/wb/swb/fb</c> | 435 <c>NB/MB/WB/SWB/FB</c> |
437 <c></c> | |
438 <c></c> | |
439 <c>x</c> | 436 <c>x</c> |
440 <c>x</c> | 437 <c>x</c> |
| 438 <c>o</c> |
| 439 <c>o</c> |
| 440 <c>o</c> |
| 441 <c>o</c> |
| 442 <c>audio</c> |
| 443 <c>NB/WB/SWB/FB</c> |
| 444 <c>o</c> |
| 445 <c>o</c> |
| 446 <c>o</c> |
| 447 <c>o</c> |
441 <c>x</c> | 448 <c>x</c> |
442 <c>x</c> | 449 <c>x</c> |
443 <c>audio</c> | |
444 <c>nb/wb/swb/fb</c> | |
445 <c>x</c> | |
446 <c>x</c> | |
447 <c>x</c> | |
448 <c>x</c> | |
449 <c></c> | |
450 <c></c> | |
451 </texttable> | 450 </texttable> |
452 | 451 |
453 </section> | 452 </section> |
454 | 453 |
455 </section> | 454 </section> |
456 | 455 |
457 <section title='Congestion Control'> | 456 <section title='Congestion Control'> |
458 | 457 |
459 <t>The adaptive nature of the Opus codec allows for an efficient | 458 <t>The target bitrate of Opus can be adjusted at any point in time, thus |
460 congestion control.</t> | 459 allowing efficient congestion control. Furthermore, the amount |
| 460 of encoded speech or audio data encoded in a |
| 461 single packet can be used for congestion control, since the transmission |
| 462 rate is inversely proportional to the packet duration. A lower packet |
| 463 transmission rate reduces the amount of header overhead, but at the same |
| 464 time increases latency and loss sensitivity, so it ought to be used with |
| 465 care.</t> |
461 | 466 |
462 <t>The target bitrate of Opus can be adjusted at any point in time and | 467 <t>It is RECOMMENDED that senders of Opus encoded data apply congestion |
463 thus allowing for an efficient congestion control. Furthermore, the amount | 468 control.</t> |
464 of encoded speech or audio data encoded in a | |
465 single packet can be used for congestion control since the transmission | |
466 rate is inversely proportional to these frame sizes. A lower packet | |
467 transmission rate reduces the amount of header overhead but at the same | |
468 time increases latency and error sensitivity and should be done with care.
</t> | |
469 | |
470 <t>It is RECOMMENDED that congestion control is applied during the | |
471 transmission of Opus encoded data.</t> | |
472 </section> | 469 </section> |
473 | 470 |
474 <section title='IANA Considerations'> | 471 <section title='IANA Considerations'> |
475 <t>One media subtype (audio/opus) has been defined and registered as | 472 <t>One media subtype (audio/opus) has been defined and registered as |
476 described in the following section.</t> | 473 described in the following section.</t> |
477 | 474 |
478 <section title='Opus Media Type Registration'> | 475 <section title='Opus Media Type Registration'> |
479 <t>Media type registration is done according to <xref | 476 <t>Media type registration is done according to <xref |
480 target="RFC4288"/> and <xref target="RFC4855"/>.<vspace | 477 target="RFC6838"/> and <xref target="RFC4855"/>.<vspace |
481 blankLines='1'/></t> | 478 blankLines='1'/></t> |
482 | 479 |
483 <t>Type name: audio<vspace blankLines='1'/></t> | 480 <t>Type name: audio<vspace blankLines='1'/></t> |
484 <t>Subtype name: opus<vspace blankLines='1'/></t> | 481 <t>Subtype name: opus<vspace blankLines='1'/></t> |
485 | 482 |
486 <t>Required parameters:</t> | 483 <t>Required parameters:</t> |
487 <t><list style="hanging"> | 484 <t><list style="hanging"> |
488 <t hangText="rate:"> RTP timestamp clock rate is incremented with | 485 <t hangText="rate:"> the RTP timestamp is incremented with a |
489 48000 Hz clock rate for all modes of Opus and all sampling | 486 48000 Hz clock rate for all modes of Opus and all sampling |
490 frequencies. For audio sampling rates other than 48000 Hz the rate | 487 rates. For data encoded with sampling rates other than 48000 Hz, |
491 has to be adjusted to 48000 Hz according to <xref target="fs-upsampl
e-factors"/>. | 488 the sampling rate has to be adjusted to 48000 Hz. |
492 </t> | 489 </t> |
493 </list></t> | 490 </list></t> |
494 | 491 |
495 <t>Optional parameters:</t> | 492 <t>Optional parameters:</t> |
496 | 493 |
497 <t><list style="hanging"> | 494 <t><list style="hanging"> |
498 <t hangText="maxplaybackrate:"> | 495 <t hangText="maxplaybackrate:"> |
499 a hint about the maximum output sampling rate that the receiver is | 496 a hint about the maximum output sampling rate that the receiver is |
500 capable of rendering in Hz. | 497 capable of rendering in Hz. |
501 The decoder MUST be capable of decoding | 498 The decoder MUST be capable of decoding |
502 any audio bandwidth but due to hardware limitations only signals | 499 any audio bandwidth but due to hardware limitations only signals |
503 up to the specified sampling rate can be played back. Sending sign
als | 500 up to the specified sampling rate can be played back. Sending sign
als |
504 with higher audio bandwidth results in higher than necessary netwo
rk | 501 with higher audio bandwidth results in higher than necessary netwo
rk |
505 usage and encoding complexity, so an encoder SHOULD NOT encode | 502 usage and encoding complexity, so an encoder SHOULD NOT encode |
506 frequencies above the audio bandwidth specified by maxplaybackrate
. | 503 frequencies above the audio bandwidth specified by maxplaybackrate
. |
507 This parameter can take any value between 8000 and 48000, although | 504 This parameter can take any value between 8000 and 48000, although |
508 commonly the value will match one of the Opus bandwidths | 505 commonly the value will match one of the Opus bandwidths |
509 (<xref target="bandwidth_definitions"/>). | 506 (<xref target="bandwidth_definitions"/>). |
510 By default, the receiver is assumed to have no limitations, i.e. 4
8000. | 507 By default, the receiver is assumed to have no limitations, i.e. 4
8000. |
511 <vspace blankLines='1'/> | 508 <vspace blankLines='1'/> |
512 </t> | 509 </t> |
513 | 510 |
514 <t hangText="sprop-maxcapturerate:"> | 511 <t hangText="sprop-maxcapturerate:"> |
515 a hint about the maximum input sampling rate that the sender is li
kely to produce. | 512 a hint about the maximum input sampling rate that the sender is li
kely to produce. |
516 This is not a guarantee that the sender will never send any higher
bandwidth | 513 This is not a guarantee that the sender will never send any higher
bandwidth |
517 (e.g. it could send a pre-recorded prompt that uses a higher bandw
idth), but it | 514 (e.g. it could send a pre-recorded prompt that uses a higher bandw
idth), but it |
518 indicates to the receiver that frequencies above this maximum can
safely be discarded. | 515 indicates to the receiver that frequencies above this maximum can
safely be discarded. |
519 This parameter is useful to avoid wasting receiver resources by op
erating the audio | 516 This parameter is useful to avoid wasting receiver resources by op
erating the audio |
520 processing pipeline (e.g. echo cancellation) at a higher rate than
necessary. | 517 processing pipeline (e.g. echo cancellation) at a higher rate than
necessary. |
521 This parameter can take any value between 8000 and 48000, although | 518 This parameter can take any value between 8000 and 48000, although |
522 commonly the value will match one of the Opus bandwidths | 519 commonly the value will match one of the Opus bandwidths |
523 (<xref target="bandwidth_definitions"/>). | 520 (<xref target="bandwidth_definitions"/>). |
524 By default, the sender is assumed to have no limitations, i.e. 480
00. | 521 By default, the sender is assumed to have no limitations, i.e. 480
00. |
525 <vspace blankLines='1'/> | 522 <vspace blankLines='1'/> |
526 </t> | 523 </t> |
527 | 524 |
528 <t hangText="maxptime:"> the decoder's maximum length of time in | 525 <t hangText="maxptime:"> the maximum duration of media represented |
529 milliseconds rounded up to the next full integer value represented | 526 by a packet (according to Section 6 of |
530 by the media in a packet that can be | 527 <xref target="RFC4566"/>) that a decoder wants to receive, in |
531 encapsulated in a received packet according to Section 6 of | 528 milliseconds rounded up to the next full integer value. |
532 <xref target="RFC4566"/>. Possible values are 3, 5, 10, 20, 40, | 529 Possible values are 3, 5, 10, 20, 40, 60, or an arbitrary |
533 and 60 or an arbitrary multiple of Opus frame sizes rounded up to | 530 multiple of an Opus frame size rounded up to the next full integer |
534 the next full integer value up to a maximum value of 120 as | 531 value, up to a maximum value of 120, as |
535 defined in <xref target='opus-rtp-payload-format'/>. If no value is | 532 defined in <xref target='opus-rtp-payload-format'/>. If no value is |
536 specified, 120 is assumed as default. This value is a recommendati
on | 533 specified, the default is 120. |
537 by the decoding side to ensure the best | |
538 performance for the decoder. The decoder MUST be | |
539 capable of accepting any allowed packet sizes to | |
540 ensure maximum compatibility. | |
541 <vspace blankLines='1'/></t> | 534 <vspace blankLines='1'/></t> |
542 | 535 |
543 <t hangText="ptime:"> the decoder's recommended length of time in | 536 <t hangText="ptime:"> the preferred duration of media represented |
544 milliseconds rounded up to the next full integer value represented | 537 by a packet (according to Section 6 of |
545 by the media in a packet according to | 538 <xref target="RFC4566"/>) that a decoder wants to receive, in |
546 Section 6 of <xref target="RFC4566"/>. Possible values are | 539 milliseconds rounded up to the next full integer value. |
547 3, 5, 10, 20, 40, or 60 or an arbitrary multiple of Opus frame sizes | 540 Possible values are 3, 5, 10, 20, 40, 60, or an arbitrary |
548 rounded up to the next full integer value up to a maximum | 541 multiple of an Opus frame size rounded up to the next full integer |
549 value of 120 as defined in <xref | 542 value, up to a maximum value of 120, as defined in <xref |
550 target='opus-rtp-payload-format'/>. If no value is | 543 target='opus-rtp-payload-format'/>. If no value is |
551 specified, 20 is assumed as default. If ptime is greater than | 544 specified, the default is 20. |
552 maxptime, ptime MUST be ignored. This parameter MAY be changed | |
553 during a session. This value is a recommendation by the decoding | |
554 side to ensure the best | |
555 performance for the decoder. The decoder MUST be | |
556 capable of accepting any allowed packet sizes to | |
557 ensure maximum compatibility. | |
558 <vspace blankLines='1'/></t> | |
559 | |
560 <t hangText="minptime:"> the decoder's minimum length of time in | |
561 milliseconds rounded up to the next full integer value represented | |
562 by the media in a packet that SHOULD | |
563 be encapsulated in a received packet according to Section 6 of <xref | |
564 target="RFC4566"/>. Possible values are 3, 5, 10, 20, 40, and 60 | |
565 or an arbitrary multiple of Opus frame sizes rounded up to the next | |
566 full integer value up to a maximum value of 120 | |
567 as defined in <xref target='opus-rtp-payload-format'/>. If no value
is | |
568 specified, 3 is assumed as default. This value is a recommendation | |
569 by the decoding side to ensure the best | |
570 performance for the decoder. The decoder MUST be | |
571 capable to accept any allowed packet sizes to | |
572 ensure maximum compatibility. | |
573 <vspace blankLines='1'/></t> | 545 <vspace blankLines='1'/></t> |
574 | 546 |
575 <t hangText="maxaveragebitrate:"> specifies the maximum average | 547 <t hangText="maxaveragebitrate:"> specifies the maximum average |
576 » receive bitrate of a session in bits per second (b/s). The actual | 548 receive bitrate of a session in bits per second (b/s). The actual |
577 value of the bitrate may vary as it is dependent on the | 549 value of the bitrate can vary, as it is dependent on the |
578 characteristics of the media in a packet. Note that the maximum | 550 characteristics of the media in a packet. Note that the maximum |
579 average bitrate MAY be modified dynamically during a session. Any | 551 average bitrate MAY be modified dynamically during a session. Any |
580 positive integer is allowed but values outside the range between | 552 positive integer is allowed, but values outside the range |
581 6000 and 510000 SHOULD be ignored. If no value is specified, the | 553 6000 to 510000 SHOULD be ignored. If no value is specified, the |
582 maximum value specified in <xref target='bitrate_by_bandwidth'/> | 554 maximum value specified in <xref target='bitrate_by_bandwidth'/> |
583 for the corresponding mode of Opus and corresponding maxplaybackrate
: | 555 for the corresponding mode of Opus and corresponding maxplaybackrate |
584 will be the default.<vspace blankLines='1'/></t> | 556 is the default.<vspace blankLines='1'/></t> |
585 | 557 |
586 <t hangText="stereo:"> | 558 <t hangText="stereo:"> |
587 specifies whether the decoder prefers receiving stereo or mono sig
nals. | 559 specifies whether the decoder prefers receiving stereo or mono sig
nals. |
588 Possible values are 1 and 0 where 1 specifies that stereo signals
are preferred | 560 Possible values are 1 and 0 where 1 specifies that stereo signals
are preferred, |
589 and 0 specifies that only mono signals are preferred. | 561 and 0 specifies that only mono signals are preferred. |
590 Independent of the stereo parameter every receiver MUST be able to
receive and | 562 Independent of the stereo parameter every receiver MUST be able to
receive and |
591 decode stereo signals but sending stereo signals to a receiver tha
t signaled a | 563 decode stereo signals but sending stereo signals to a receiver tha
t signaled a |
592 preference for mono signals may result in higher than necessary ne
twork | 564 preference for mono signals may result in higher than necessary ne
twork |
593 utilisation and encoding complexity. If no value is specified, mon
o | 565 utilization and encoding complexity. If no value is specified, |
594 is assumed (stereo=0).<vspace blankLines='1'/> | 566 the default is 0 (mono).<vspace blankLines='1'/> |
595 </t> | 567 </t> |
596 | 568 |
597 <t hangText="sprop-stereo:"> | 569 <t hangText="sprop-stereo:"> |
598 specifies whether the sender is likely to produce stereo audio. | 570 specifies whether the sender is likely to produce stereo audio. |
599 Possible values are 1 and 0 where 1 specifies that stereo signals
are likely to | 571 Possible values are 1 and 0, where 1 specifies that stereo signals
are likely to |
600 » be sent, and 0 speficies that the sender will likely only send mon
o. | 572 be sent, and 0 specifies that the sender will likely only send mon
o. |
601 » This is not a guarantee that the sender will never send stereo aud
io | 573 This is not a guarantee that the sender will never send stereo aud
io |
602 » (e.g. it could send a pre-recorded prompt that uses stereo), but i
t | 574 (e.g. it could send a pre-recorded prompt that uses stereo), but i
t |
603 » indicates to the receiver that the received signal can be safely d
ownmixed to mono. | 575 indicates to the receiver that the received signal can be safely d
ownmixed to mono. |
604 » This parameter is useful to avoid wasting receiver resources by op
erating the audio | 576 This parameter is useful to avoid wasting receiver resources by op
erating the audio |
605 » processing pipeline (e.g. echo cancellation) in stereo when not ne
cessary. | 577 processing pipeline (e.g. echo cancellation) in stereo when not ne
cessary. |
606 If no value is specified, mono | 578 If no value is specified, the default is 0 |
607 is assumed (sprop-stereo=0).<vspace blankLines='1'/> | 579 (mono).<vspace blankLines='1'/> |
608 </t> | 580 </t> |
609 | 581 |
610 <t hangText="cbr:"> | 582 <t hangText="cbr:"> |
611 specifies if the decoder prefers the use of a constant bitrate ver
sus | 583 specifies if the decoder prefers the use of a constant bitrate ver
sus |
612 variable bitrate. Possible values are 1 and 0 where 1 specifies co
nstant | 584 variable bitrate. Possible values are 1 and 0, where 1 specifies c
onstant |
613 bitrate and 0 specifies variable bitrate. If no value is specified
, cbr | 585 bitrate and 0 specifies variable bitrate. If no value is specified
, |
614 is assumed to be 0. Note that the maximum average bitrate may stil
l be | 586 the default is 0 (vbr). When cbr is 1, the maximum average bitrate
can still |
615 changed, e.g. to adapt to changing network conditions.<vspace blan
kLines='1'/> | 587 change, e.g. to adapt to changing network conditions.<vspace blank
Lines='1'/> |
616 </t> | 588 </t> |
617 | 589 |
618 <t hangText="useinbandfec:"> specifies that the decoder has the capa
bility to | 590 <t hangText="useinbandfec:"> specifies that the decoder has the capa
bility to |
619 take advantage of the Opus in-band FEC. Possible values are 1 and 0.
It is RECOMMENDED to provide | 591 take advantage of the Opus in-band FEC. Possible values are 1 and 0. |
620 0 in case FEC cannot be utilized on the receiving side. If no | 592 Providing 0 when FEC cannot be used on the receiving side is |
| 593 RECOMMENDED. If no |
621 value is specified, useinbandfec is assumed to be 0. | 594 value is specified, useinbandfec is assumed to be 0. |
622 This parameter is only a preference and the receiver MUST be able to
process | 595 This parameter is only a preference and the receiver MUST be able to
process |
623 packets that include FEC information, even if it means the FEC part
is discarded. | 596 packets that include FEC information, even if it means the FEC part
is discarded. |
624 <vspace blankLines='1'/></t> | 597 <vspace blankLines='1'/></t> |
625 | 598 |
626 <t hangText="usedtx:"> specifies if the decoder prefers the use of | 599 <t hangText="usedtx:"> specifies if the decoder prefers the use of |
627 DTX. Possible values are 1 and 0. If no value is specified, usedtx | 600 DTX. Possible values are 1 and 0. If no value is specified, the |
628 is assumed to be 0.<vspace blankLines='1'/></t> | 601 default is 0.<vspace blankLines='1'/></t> |
629 </list></t> | 602 </list></t> |
630 | 603 |
631 <t>Encoding considerations:<vspace blankLines='1'/></t> | 604 <t>Encoding considerations:<vspace blankLines='1'/></t> |
632 <t><list style="hanging"> | 605 <t><list style="hanging"> |
633 <t>Opus media type is framed and consists of binary data according | 606 <t>The Opus media type is framed and consists of binary data accordi
ng |
634 to Section 4.8 in <xref target="RFC4288"/>.</t> | 607 to Section 4.8 in <xref target="RFC6838"/>.</t> |
635 </list></t> | 608 </list></t> |
636 | 609 |
637 <t>Security considerations: </t> | 610 <t>Security considerations: </t> |
638 <t><list style="hanging"> | 611 <t><list style="hanging"> |
639 <t>See <xref target='security-considerations'/> of this document.</t
> | 612 <t>See <xref target='security-considerations'/> of this document.</t
> |
640 </list></t> | 613 </list></t> |
641 | 614 |
642 <t>Interoperability considerations: none<vspace blankLines='1'/></t> | 615 <t>Interoperability considerations: none<vspace blankLines='1'/></t> |
643 <t>Published specification: none<vspace blankLines='1'/></t> | 616 » <t>Published specification: RFC [XXXX]</t> |
| 617 » <t>Note to the RFC Editor: Replace [XXXX] with the number of the publi
shed |
| 618 RFC.<vspace blankLines='1'/></t> |
644 | 619 |
645 <t>Applications that use this media type: </t> | 620 <t>Applications that use this media type: </t> |
646 <t><list style="hanging"> | 621 <t><list style="hanging"> |
647 <t>Any application that requires the transport of | 622 <t>Any application that requires the transport of |
648 speech or audio data may use this media type. Some examples are, | 623 speech or audio data can use this media type. Some examples are, |
649 but not limited to, audio and video conferencing, Voice over IP, | 624 but not limited to, audio and video conferencing, Voice over IP, |
650 media streaming.</t> | 625 media streaming.</t> |
651 </list></t> | 626 </list></t> |
652 | 627 |
| 628 <t>Fragment identifier considerations: N/A<vspace blankLines='1'/></t> |
| 629 |
653 <t>Person & email address to contact for further information:</t> | 630 <t>Person & email address to contact for further information:</t> |
654 <t><list style="hanging"> | 631 <t><list style="hanging"> |
655 <t>SILK Support silksupport@skype.net</t> | 632 <t>SILK Support silksupport@skype.net</t> |
656 <t>Jean-Marc Valin jmvalin@jmvalin.ca</t> | 633 <t>Jean-Marc Valin jmvalin@jmvalin.ca</t> |
657 </list></t> | 634 </list></t> |
658 | 635 |
659 <t>Intended usage: COMMON<vspace blankLines='1'/></t> | 636 <t>Intended usage: COMMON<vspace blankLines='1'/></t> |
660 | 637 |
661 <t>Restrictions on usage:<vspace blankLines='1'/></t> | 638 <t>Restrictions on usage:<vspace blankLines='1'/></t> |
662 | 639 |
663 <t><list style="hanging"> | 640 <t><list style="hanging"> |
664 <t>For transfer over RTP, the RTP payload format (<xref | 641 <t>For transfer over RTP, the RTP payload format (<xref |
665 target='opus-rtp-payload-format'/> of this document) SHALL be | 642 target='opus-rtp-payload-format'/> of this document) SHALL be |
666 used.</t> | 643 used.</t> |
667 </list></t> | 644 </list></t> |
668 | 645 |
669 <t>Author:</t> | 646 <t>Author:</t> |
670 <t><list style="hanging"> | 647 <t><list style="hanging"> |
671 <t>Julian Spittka jspittka@gmail.com<vspace blankLines='1'/></t> | 648 <t>Julian Spittka jspittka@gmail.com<vspace blankLines='1'/></t> |
672 <t>Koen Vos koenvos74@gmail.com<vspace blankLines='1'/></t> | 649 <t>Koen Vos koenvos74@gmail.com<vspace blankLines='1'/></t> |
673 <t>Jean-Marc Valin jmvalin@jmvalin.ca<vspace blankLines='1'/></t> | 650 <t>Jean-Marc Valin jmvalin@jmvalin.ca<vspace blankLines='1'/></t> |
674 </list></t> | 651 </list></t> |
675 | 652 |
676 <t> Change controller: TBD</t> | 653 <t> Change controller: IETF Payload Working Group delegated from the I
ESG</t> |
677 </section> | 654 </section> |
678 | 655 |
679 <section title='Mapping to SDP Parameters'> | 656 <section title='Mapping to SDP Parameters'> |
680 <t>The information described in the media type specification has a | 657 <t>The information described in the media type specification has a |
681 specific mapping to fields in the Session Description Protocol (SDP) | 658 specific mapping to fields in the Session Description Protocol (SDP) |
682 <xref target="RFC4566"/>, which is commonly used to describe RTP | 659 <xref target="RFC4566"/>, which is commonly used to describe RTP |
683 sessions. When SDP is used to specify sessions employing the Opus codec, | 660 sessions. When SDP is used to specify sessions employing the Opus codec, |
684 the mapping is as follows:</t> | 661 the mapping is as follows:</t> |
685 | 662 |
686 <t> | 663 <t> |
687 <list style="symbols"> | 664 <list style="symbols"> |
688 <t>The media type ("audio") goes in SDP "m=" as the media name.</t> | 665 <t>The media type ("audio") goes in SDP "m=" as the media name.</t> |
689 | 666 |
690 <t>The media subtype ("opus") goes in SDP "a=rtpmap" as the encoding | 667 <t>The media subtype ("opus") goes in SDP "a=rtpmap" as the encoding |
691 name. The RTP clock rate in "a=rtpmap" MUST be 48000 and the number
of | 668 name. The RTP clock rate in "a=rtpmap" MUST be 48000 and the number
of |
692 » channels MUST be 2.</t> | 669 channels MUST be 2.</t> |
693 | 670 |
694 <t>The OPTIONAL media type parameters "ptime" and "maxptime" are | 671 <t>The OPTIONAL media type parameters "ptime" and "maxptime" are |
695 mapped to "a=ptime" and "a=maxptime" attributes, respectively, in th
e | 672 mapped to "a=ptime" and "a=maxptime" attributes, respectively, in th
e |
696 SDP.</t> | 673 SDP.</t> |
697 | 674 |
698 <t>The OPTIONAL media type parameters "maxaveragebitrate", | 675 <t>The OPTIONAL media type parameters "maxaveragebitrate", |
699 "maxplaybackrate", "minptime", "stereo", "cbr", "useinbandfec", and | 676 "maxplaybackrate", "stereo", "cbr", "useinbandfec", and |
700 "usedtx", when present, MUST be included in the "a=fmtp" attribute | 677 "usedtx", when present, MUST be included in the "a=fmtp" attribute |
701 in the SDP, expressed as a media type string in the form of a | 678 in the SDP, expressed as a media type string in the form of a |
702 semicolon-separated list of parameter=value pairs (e.g., | 679 semicolon-separated list of parameter=value pairs (e.g., |
703 maxaveragebitrate=20000). They MUST NOT be specified in an | 680 maxplaybackrate=48000). They MUST NOT be specified in an |
704 SSRC-specific "fmtp" source-level attribute (as defined in | 681 SSRC-specific "fmtp" source-level attribute (as defined in |
705 Section 6.3 of <xref target="RFC5576"/>).</t> | 682 Section 6.3 of <xref target="RFC5576"/>).</t> |
706 | 683 |
707 <t>The OPTIONAL media type parameters "sprop-maxcapturerate", | 684 <t>The OPTIONAL media type parameters "sprop-maxcapturerate", |
708 and "sprop-stereo" MAY be mapped to the "a=fmtp" SDP attribute by | 685 and "sprop-stereo" MAY be mapped to the "a=fmtp" SDP attribute by |
709 copying them directly from the media type parameter string as part | 686 copying them directly from the media type parameter string as part |
710 of the semicolon-separated list of parameter=value pairs (e.g., | 687 of the semicolon-separated list of parameter=value pairs (e.g., |
711 sprop-stereo=1). These same OPTIONAL media type parameters MAY also | 688 sprop-stereo=1). These same OPTIONAL media type parameters MAY also |
712 be specified using an SSRC-specific "fmtp" source-level attribute | 689 be specified using an SSRC-specific "fmtp" source-level attribute |
713 as described in Section 6.3 of <xref target="RFC5576"/>. | 690 as described in Section 6.3 of <xref target="RFC5576"/>. |
(...skipping 14 matching lines...) Expand all Loading... |
728 <![CDATA[ | 705 <![CDATA[ |
729 m=audio 54312 RTP/AVP 101 | 706 m=audio 54312 RTP/AVP 101 |
730 a=rtpmap:101 opus/48000/2 | 707 a=rtpmap:101 opus/48000/2 |
731 ]]> | 708 ]]> |
732 </artwork> | 709 </artwork> |
733 </figure> | 710 </figure> |
734 | 711 |
735 | 712 |
736 <t>Example 2: 16000 Hz clock rate, maximum packet size of 40 ms, | 713 <t>Example 2: 16000 Hz clock rate, maximum packet size of 40 ms, |
737 recommended packet size of 40 ms, maximum average bitrate of 20000 bps, | 714 recommended packet size of 40 ms, maximum average bitrate of 20000 bps, |
738 prefers to receive stereo but only plans to send mono, FEC is allowed, | 715 prefers to receive stereo but only plans to send mono, FEC is desired, |
739 DTX is not allowed</t> | 716 DTX is not desired</t> |
740 | 717 |
741 <figure> | 718 <figure> |
742 <artwork> | 719 <artwork> |
743 <![CDATA[ | 720 <![CDATA[ |
744 m=audio 54312 RTP/AVP 101 | 721 m=audio 54312 RTP/AVP 101 |
745 a=rtpmap:101 opus/48000/2 | 722 a=rtpmap:101 opus/48000/2 |
746 a=fmtp:101 maxplaybackrate=16000; sprop-maxcapturerate=16000; | 723 a=fmtp:101 maxplaybackrate=16000; sprop-maxcapturerate=16000; |
747 maxaveragebitrate=20000; stereo=1; useinbandfec=1; usedtx=0 | 724 maxaveragebitrate=20000; stereo=1; useinbandfec=1; usedtx=0 |
748 a=ptime:40 | 725 a=ptime:40 |
749 a=maxptime:40 | 726 a=maxptime:40 |
(...skipping 18 matching lines...) Expand all Loading... |
768 | 745 |
769 <t>When using the offer-answer procedure described in <xref | 746 <t>When using the offer-answer procedure described in <xref |
770 target="RFC3264"/> to negotiate the use of Opus, the following | 747 target="RFC3264"/> to negotiate the use of Opus, the following |
771 considerations apply:</t> | 748 considerations apply:</t> |
772 | 749 |
773 <t><list style="symbols"> | 750 <t><list style="symbols"> |
774 | 751 |
775 <t>Opus supports several clock rates. For signaling purposes only | 752 <t>Opus supports several clock rates. For signaling purposes only |
776 the highest, i.e. 48000, is used. The actual clock rate of the | 753 the highest, i.e. 48000, is used. The actual clock rate of the |
777 corresponding media is signaled inside the payload and is not | 754 corresponding media is signaled inside the payload and is not |
778 subject to this payload format description. The decoder MUST be | 755 restricted by this payload format description. The decoder MUST be |
779 capable to decode every received clock rate. An example | 756 capable of decoding every received clock rate. An example |
780 is shown below: | 757 is shown below: |
781 | 758 |
782 <figure> | 759 <figure> |
783 <artwork> | 760 <artwork> |
784 <![CDATA[ | 761 <![CDATA[ |
785 m=audio 54312 RTP/AVP 100 | 762 m=audio 54312 RTP/AVP 100 |
786 a=rtpmap:100 opus/48000/2 | 763 a=rtpmap:100 opus/48000/2 |
787 ]]> | 764 ]]> |
788 </artwork> | 765 </artwork> |
789 </figure> | 766 </figure> |
790 </t> | 767 </t> |
791 | 768 |
792 <t>The "ptime" and "maxptime" parameters are unidirectional | 769 <t>The "ptime" and "maxptime" parameters are unidirectional |
793 receive-only parameters and typically will not compromise | 770 receive-only parameters and typically will not compromise |
794 interoperability; however, dependent on the set values of the | 771 interoperability; however, some values might cause application |
795 parameters the performance of the application may suffer. <xref | 772 performance to suffer. <xref |
796 target="RFC3264"/> defines the SDP offer-answer handling of the | 773 target="RFC3264"/> defines the SDP offer-answer handling of the |
797 "ptime" parameter. The "maxptime" parameter MUST be handled in the | 774 "ptime" parameter. The "maxptime" parameter MUST be handled in the |
798 same way.</t> | 775 same way.</t> |
799 | 776 |
800 <t> | 777 <t> |
801 The "minptime" parameter is a unidirectional | |
802 receive-only parameters and typically will not compromise | |
803 interoperability; however, dependent on the set values of the | |
804 parameter the performance of the application may suffer and should
be | |
805 set with care. | |
806 </t> | |
807 | |
808 <t> | |
809 The "maxplaybackrate" parameter is a unidirectional receive-only | 778 The "maxplaybackrate" parameter is a unidirectional receive-only |
810 parameter that reflects limitations of the local receiver. The sen
der | 779 parameter that reflects limitations of the local receiver. When |
811 of the other side SHOULD NOT send with an audio bandwidth higher t
han | 780 sending to a single destination, a sender MUST NOT use an audio |
812 "maxplaybackrate" as this would lead to inefficient use of network
resources. | 781 bandwidth higher than necessary to make full use of audio sampled
at |
| 782 a sampling rate of "maxplaybackrate". Gateways or senders that |
| 783 are sending the same encoded audio to multiple destinations |
| 784 SHOULD NOT use an audio bandwidth higher than necessary to |
| 785 represent audio sampled at "maxplaybackrate", as this would lead |
| 786 to inefficient use of network resources. |
813 The "maxplaybackrate" parameter does not | 787 The "maxplaybackrate" parameter does not |
814 » affect interoperability. Also, this parameter SHOULD NOT be used | 788 affect interoperability. Also, this parameter SHOULD NOT be used |
815 » to adjust the audio bandwidth as a function of the bitrates, as th
is | 789 to adjust the audio bandwidth as a function of the bitrate, as thi
s |
816 » is the responsibility of the Opus encoder implementation. | 790 is the responsibility of the Opus encoder implementation. |
817 </t> | 791 </t> |
818 | 792 |
819 <t>The "maxaveragebitrate" parameter is a unidirectional receive-onl
y | 793 <t>The "maxaveragebitrate" parameter is a unidirectional receive-onl
y |
820 parameter that reflects limitations of the local receiver. The sende
r | 794 parameter that reflects limitations of the local receiver. The sende
r |
821 of the other side MUST NOT send with an average bitrate higher than | 795 of the other side MUST NOT send with an average bitrate higher than |
822 "maxaveragebitrate" as it might overload the network and/or | 796 "maxaveragebitrate" as it might overload the network and/or |
823 receiver. The "maxaveragebitrate" parameter typically will not | 797 receiver. The "maxaveragebitrate" parameter typically will not |
824 compromise interoperability; however, dependent on the set value of | 798 compromise interoperability; however, some values might cause |
825 the parameter the performance of the application may suffer and shou
ld | 799 application performance to suffer, and ought to be set with |
826 be set with care.</t> | 800 care.</t> |
827 | 801 |
828 <t>The "sprop-maxcapturerate" and "sprop-stereo" parameters are | 802 <t>The "sprop-maxcapturerate" and "sprop-stereo" parameters are |
829 unidirectional sender-only parameters that reflect limitations of | 803 unidirectional sender-only parameters that reflect limitations of |
830 the sender side. | 804 the sender side. |
831 They allow the receiver to set up a reduced-complexity audio | 805 They allow the receiver to set up a reduced-complexity audio |
832 processing pipeline if the sender is not planning to use the full | 806 processing pipeline if the sender is not planning to use the full |
833 range of Opus's capabilities. | 807 range of Opus's capabilities. |
834 Neither "sprop-maxcapturerate" nor "sprop-stereo" affect | 808 Neither "sprop-maxcapturerate" nor "sprop-stereo" affect |
835 interoperability and the receiver MUST be capable of receiving any s
ignal. | 809 interoperability and the receiver MUST be capable of receiving any s
ignal. |
836 </t> | 810 </t> |
837 | 811 |
838 <t> | 812 <t> |
839 The "stereo" parameter is a unidirectional receive-only | 813 The "stereo" parameter is a unidirectional receive-only |
840 parameter. | 814 parameter. When sending to a single destination, a sender MUST |
| 815 NOT use stereo when "stereo" is 0. Gateways or senders that are |
| 816 sending the same encoded audio to multiple destinations SHOULD |
| 817 NOT use stereo when "stereo" is 0, as this would lead to |
| 818 inefficient use of network resources. The "stereo" parameter does |
| 819 not affect interoperability. |
841 </t> | 820 </t> |
842 | 821 |
843 <t> | 822 <t> |
844 The "cbr" parameter is a unidirectional receive-only | 823 The "cbr" parameter is a unidirectional receive-only |
845 parameter. | 824 parameter. |
846 </t> | 825 </t> |
847 | 826 |
848 <t>The "useinbandfec" parameter is a unidirectional receive-only | 827 <t>The "useinbandfec" parameter is a unidirectional receive-only |
849 parameter.</t> | 828 parameter.</t> |
850 | 829 |
851 <t>The "usedtx" parameter is a unidirectional receive-only | 830 <t>The "usedtx" parameter is a unidirectional receive-only |
852 parameter.</t> | 831 parameter.</t> |
853 | 832 |
854 <t>Any unknown parameter in an offer MUST be ignored by the receiver | 833 <t>Any unknown parameter in an offer MUST be ignored by the receiver |
855 and MUST be removed from the answer.</t> | 834 and MUST be removed from the answer.</t> |
856 | 835 |
857 </list></t> | 836 </list></t> |
858 </section> | 837 </section> |
859 | 838 |
860 <section title='Declarative SDP Considerations for Opus'> | 839 <section title='Declarative SDP Considerations for Opus'> |
861 | 840 |
862 <t>For declarative use of SDP such as in Session Announcement Protocol | 841 <t>For declarative use of SDP such as in Session Announcement Protocol |
863 (SAP), <xref target="RFC2974"/>, and RTSP, <xref target="RFC2326"/>, for | 842 (SAP), <xref target="RFC2974"/>, and RTSP, <xref target="RFC2326"/>, for |
864 Opus, the following needs to be considered:</t> | 843 Opus, the following needs to be considered:</t> |
865 | 844 |
866 <t><list style="symbols"> | 845 <t><list style="symbols"> |
867 | 846 |
868 <t>The values for "maxptime", "ptime", "minptime", "maxplaybackrate",
and | 847 <t>The values for "maxptime", "ptime", "maxplaybackrate", and |
869 "maxaveragebitrate" should be selected carefully to ensure that a | 848 "maxaveragebitrate" ought to be selected carefully to ensure that a |
870 reasonable performance can be achieved for the participants of a sessi
on.</t> | 849 reasonable performance can be achieved for the participants of a sessi
on.</t> |
871 | 850 |
872 <t> | 851 <t> |
873 The values for "maxptime", "ptime", and "minptime" of the payload | 852 The values for "maxptime", "ptime", and of the payload |
874 format configuration are recommendations by the decoding side to ens
ure | 853 format configuration are recommendations by the decoding side to ens
ure |
875 the best performance for the decoder. The decoder MUST be | 854 the best performance for the decoder. |
876 capable to accept any allowed packet sizes to | |
877 ensure maximum compatibility. | |
878 </t> | 855 </t> |
879 | 856 |
880 <t>All other parameters of the payload format configuration are declar
ative | 857 <t>All other parameters of the payload format configuration are declar
ative |
881 and a participant MUST use the configurations that are provided for | 858 and a participant MUST use the configurations that are provided for |
882 the session. More than one configuration may be provided if necessary | 859 the session. More than one configuration can be provided if necessary |
883 by declaring multiple RTP payload types; however, the number of types | 860 by declaring multiple RTP payload types; however, the number of types |
884 should be kept small.</t> | 861 ought to be kept small.</t> |
885 </list></t> | 862 </list></t> |
886 </section> | 863 </section> |
887 </section> | 864 </section> |
888 </section> | 865 </section> |
889 | 866 |
890 <section title='Security Considerations' anchor='security-considerations'> | 867 <section title='Security Considerations' anchor='security-considerations'> |
891 | 868 |
892 <t>All RTP packets using the payload format defined in this specification | 869 <t>All RTP packets using the payload format defined in this specification |
893 are subject to the general security considerations discussed in the RTP | 870 are subject to the general security considerations discussed in the RTP |
894 specification <xref target="RFC3550"/> and any profile from | 871 specification <xref target="RFC3550"/> and any profile from, |
895 e.g. <xref target="RFC3711"/> or <xref target="RFC3551"/>.</t> | 872 e.g., <xref target="RFC3711"/> or <xref target="RFC3551"/>.</t> |
896 | 873 |
897 <t>This payload format transports Opus encoded speech or audio data, | 874 <t>This payload format transports Opus encoded speech or audio data. |
898 hence, security issues include confidentiality, integrity protection, and | 875 Hence, security issues include confidentiality, integrity protection, and |
899 authentication of the speech or audio itself. The Opus payload format does | 876 authentication of the speech or audio itself. Opus does not provide |
900 not have any built-in security mechanisms. Any suitable external | 877 any confidentiality or integrity protection. Any suitable external |
901 mechanisms, such as SRTP <xref target="RFC3711"/>, MAY be used.</t> | 878 mechanisms, such as SRTP <xref target="RFC3711"/>, MAY be used.</t> |
902 | 879 |
903 <t>This payload format and the Opus encoding do not exhibit any | 880 <t>This payload format and the Opus encoding do not exhibit any |
904 significant non-uniformity in the receiver-end computational load and thus | 881 significant non-uniformity in the receiver-end computational load and thus |
905 are unlikely to pose a denial-of-service threat due to the receipt of | 882 are unlikely to pose a denial-of-service threat due to the receipt of |
906 pathological datagrams.</t> | 883 pathological datagrams.</t> |
907 </section> | 884 </section> |
908 | 885 |
909 <section title='Acknowledgements'> | 886 <section title='Acknowledgements'> |
910 <t>TBD</t> | 887 <t>Many people have made useful comments and suggestions contributing to thi
s document. |
| 888 In particular, we would like to thank |
| 889 Tina le Grand, Cullen Jennings, Jonathan Lennox, Gregory Maxwell, Colin Pe
rkins, Jan Skoglund, |
| 890 Timothy B. Terriberry, Martin Thompson, Justin Uberti, Magnus Westerlund,
and Mo Zanaty.</t> |
911 </section> | 891 </section> |
912 </middle> | 892 </middle> |
913 | 893 |
914 <back> | 894 <back> |
915 <references title="Normative References"> | 895 <references title="Normative References"> |
916 &rfc2119; | 896 &rfc2119; |
| 897 &rfc3389; |
917 &rfc3550; | 898 &rfc3550; |
918 &rfc3711; | 899 &rfc3711; |
919 &rfc3551; | 900 &rfc3551; |
920 &rfc4288; | 901 &rfc6838; |
921 &rfc4855; | 902 &rfc4855; |
922 &rfc4566; | 903 &rfc4566; |
923 &rfc3264; | 904 &rfc3264; |
924 &rfc2974; | |
925 &rfc2326; | 905 &rfc2326; |
926 &rfc5576; | 906 &rfc5576; |
927 &rfc6562; | 907 &rfc6562; |
928 &rfc6716; | 908 &rfc6716; |
929 </references> | 909 </references> |
930 | 910 |
| 911 <references title="Informative References"> |
| 912 &rfc2974; |
| 913 </references> |
| 914 |
931 </back> | 915 </back> |
932 </rfc> | 916 </rfc> |
OLD | NEW |