OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2017 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 RtpCodecParameters dtmf_codec; | 156 RtpCodecParameters dtmf_codec; |
157 dtmf_codec.name = "telephone-event"; | 157 dtmf_codec.name = "telephone-event"; |
158 dtmf_codec.kind = cricket::MEDIA_TYPE_AUDIO; | 158 dtmf_codec.kind = cricket::MEDIA_TYPE_AUDIO; |
159 dtmf_codec.payload_type = 126; | 159 dtmf_codec.payload_type = 126; |
160 dtmf_codec.clock_rate.emplace(8000); | 160 dtmf_codec.clock_rate.emplace(8000); |
161 parameters.codecs.push_back(std::move(dtmf_codec)); | 161 parameters.codecs.push_back(std::move(dtmf_codec)); |
162 | 162 |
163 // "codec_payload_type" isn't implemented, so we need to reorder codecs to | 163 // "codec_payload_type" isn't implemented, so we need to reorder codecs to |
164 // cause one to be used. | 164 // cause one to be used. |
165 // TODO(deadbeef): Remove this when it becomes unnecessary. | 165 // TODO(deadbeef): Remove this when it becomes unnecessary. |
166 std::sort(parameters.codecs.begin(), parameters.codecs.end(), | 166 auto it = std::find_if(parameters.codecs.begin(), parameters.codecs.end(), |
167 [preferred_payload_type](const RtpCodecParameters& a, | 167 [preferred_payload_type](const RtpCodecParameters& p) { |
168 const RtpCodecParameters& b) { | 168 return p.payload_type == preferred_payload_type; |
169 return a.payload_type == preferred_payload_type; | 169 }); |
170 }); | 170 RtpCodecParameters preferred = *it; |
| 171 parameters.codecs.erase(it); |
| 172 parameters.codecs.insert(parameters.codecs.begin(), preferred); |
171 | 173 |
172 // Intentionally leave out SSRC so one's chosen automatically. | 174 // Intentionally leave out SSRC so one's chosen automatically. |
173 RtpEncodingParameters encoding; | 175 RtpEncodingParameters encoding; |
174 encoding.codec_payload_type.emplace(preferred_payload_type); | 176 encoding.codec_payload_type.emplace(preferred_payload_type); |
175 encoding.dtx.emplace(DtxStatus::ENABLED); | 177 encoding.dtx.emplace(DtxStatus::ENABLED); |
176 // 20 kbps. | 178 // 20 kbps. |
177 encoding.max_bitrate_bps.emplace(20000); | 179 encoding.max_bitrate_bps.emplace(20000); |
178 parameters.encodings.push_back(std::move(encoding)); | 180 parameters.encodings.push_back(std::move(encoding)); |
179 | 181 |
180 parameters.header_extensions.emplace_back( | 182 parameters.header_extensions.emplace_back( |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 RtpCodecParameters ulpfec_codec; | 265 RtpCodecParameters ulpfec_codec; |
264 ulpfec_codec.name = "ulpfec"; | 266 ulpfec_codec.name = "ulpfec"; |
265 ulpfec_codec.kind = cricket::MEDIA_TYPE_VIDEO; | 267 ulpfec_codec.kind = cricket::MEDIA_TYPE_VIDEO; |
266 ulpfec_codec.payload_type = 117; | 268 ulpfec_codec.payload_type = 117; |
267 ulpfec_codec.clock_rate.emplace(90000); | 269 ulpfec_codec.clock_rate.emplace(90000); |
268 parameters.codecs.push_back(std::move(ulpfec_codec)); | 270 parameters.codecs.push_back(std::move(ulpfec_codec)); |
269 | 271 |
270 // "codec_payload_type" isn't implemented, so we need to reorder codecs to | 272 // "codec_payload_type" isn't implemented, so we need to reorder codecs to |
271 // cause one to be used. | 273 // cause one to be used. |
272 // TODO(deadbeef): Remove this when it becomes unnecessary. | 274 // TODO(deadbeef): Remove this when it becomes unnecessary. |
273 std::sort(parameters.codecs.begin(), parameters.codecs.end(), | 275 auto it = std::find_if(parameters.codecs.begin(), parameters.codecs.end(), |
274 [preferred_payload_type](const RtpCodecParameters& a, | 276 [preferred_payload_type](const RtpCodecParameters& p) { |
275 const RtpCodecParameters& b) { | 277 return p.payload_type == preferred_payload_type; |
276 return a.payload_type == preferred_payload_type; | 278 }); |
277 }); | 279 RtpCodecParameters preferred = *it; |
| 280 parameters.codecs.erase(it); |
| 281 parameters.codecs.insert(parameters.codecs.begin(), preferred); |
278 | 282 |
279 // Intentionally leave out SSRC so one's chosen automatically. | 283 // Intentionally leave out SSRC so one's chosen automatically. |
280 RtpEncodingParameters encoding; | 284 RtpEncodingParameters encoding; |
281 encoding.codec_payload_type.emplace(preferred_payload_type); | 285 encoding.codec_payload_type.emplace(preferred_payload_type); |
282 encoding.fec.emplace(FecMechanism::RED_AND_ULPFEC); | 286 encoding.fec.emplace(FecMechanism::RED_AND_ULPFEC); |
283 // Will create default RtxParameters, with unset SSRC. | 287 // Will create default RtxParameters, with unset SSRC. |
284 encoding.rtx.emplace(); | 288 encoding.rtx.emplace(); |
285 // 100 kbps. | 289 // 100 kbps. |
286 encoding.max_bitrate_bps.emplace(100000); | 290 encoding.max_bitrate_bps.emplace(100000); |
287 parameters.encodings.push_back(std::move(encoding)); | 291 parameters.encodings.push_back(std::move(encoding)); |
(...skipping 14 matching lines...) Expand all Loading... |
302 | 306 |
303 RtpParameters MakeFullVp8Parameters() { | 307 RtpParameters MakeFullVp8Parameters() { |
304 return MakeFullVideoParameters(100); | 308 return MakeFullVideoParameters(100); |
305 } | 309 } |
306 | 310 |
307 RtpParameters MakeFullVp9Parameters() { | 311 RtpParameters MakeFullVp9Parameters() { |
308 return MakeFullVideoParameters(101); | 312 return MakeFullVideoParameters(101); |
309 } | 313 } |
310 | 314 |
311 } // namespace webrtc | 315 } // namespace webrtc |
OLD | NEW |