Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: webrtc/ortc/rtpparametersconversion.cc

Issue 2735853004: Add the function ToRtpParameters. (Closed)
Patch Set: Change the return type of ToRtpEncodings. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } else { 270 } else {
271 return rtc::Optional<RtcpFeedback>( 271 return rtc::Optional<RtcpFeedback>(
272 RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC)); 272 RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC));
273 } 273 }
274 } 274 }
275 LOG(LS_WARNING) << "Unsupported RTCP feedback type: " 275 LOG(LS_WARNING) << "Unsupported RTCP feedback type: "
276 << cricket_feedback.id(); 276 << cricket_feedback.id();
277 return rtc::Optional<RtcpFeedback>(); 277 return rtc::Optional<RtcpFeedback>();
278 } 278 }
279 279
280 std::vector<RtpEncodingParameters> ToRtpEncodings(
281 const cricket::StreamParamsVec& stream_params) {
282 std::vector<RtpEncodingParameters> rtp_encodings;
283 if (stream_params.size() > 0) {
Taylor Brandstetter 2017/03/08 22:35:49 What if there are more than 1 StreamParams? The si
Zhi Huang 2017/03/08 23:56:49 Oh, I was wrong. I thought that since ORTC api doe
Taylor Brandstetter 2017/03/09 00:41:43 You're right that the ORTC RtpSender/RtpReceiver d
284 const cricket::StreamParams& stream_param = stream_params[0];
285 RtpEncodingParameters rtp_encoding;
286 rtp_encoding.ssrc = rtc::Optional<uint32_t>(stream_param.first_ssrc());
Taylor Brandstetter 2017/03/08 22:35:49 nit: Instead of "= rtc::Optional...", you can do "
Zhi Huang 2017/03/08 23:56:49 Done.
287 uint32_t rtx_ssrc = 0;
288 if (stream_param.GetFidSsrc(stream_param.first_ssrc(), &rtx_ssrc)) {
289 RtpRtxParameters rtx_param(rtx_ssrc);
290 rtp_encoding.rtx = rtc::Optional<RtpRtxParameters>(rtx_param);
291 }
292 rtp_encodings.push_back(std::move(rtp_encoding));
293 }
294 return rtp_encodings;
295 }
296
280 template <typename C> 297 template <typename C>
281 cricket::MediaType KindOfCodec(); 298 cricket::MediaType KindOfCodec();
282 299
283 template <> 300 template <>
284 cricket::MediaType KindOfCodec<cricket::AudioCodec>() { 301 cricket::MediaType KindOfCodec<cricket::AudioCodec>() {
285 return cricket::MEDIA_TYPE_AUDIO; 302 return cricket::MEDIA_TYPE_AUDIO;
286 } 303 }
287 304
288 template <> 305 template <>
289 cricket::MediaType KindOfCodec<cricket::VideoCodec>() { 306 cricket::MediaType KindOfCodec<cricket::VideoCodec>() {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 codec.parameters.insert(cricket_codec.params.begin(), 342 codec.parameters.insert(cricket_codec.params.begin(),
326 cricket_codec.params.end()); 343 cricket_codec.params.end());
327 return codec; 344 return codec;
328 } 345 }
329 346
330 template RtpCodecCapability ToRtpCodecCapability<cricket::AudioCodec>( 347 template RtpCodecCapability ToRtpCodecCapability<cricket::AudioCodec>(
331 const cricket::AudioCodec& cricket_codec); 348 const cricket::AudioCodec& cricket_codec);
332 template RtpCodecCapability ToRtpCodecCapability<cricket::VideoCodec>( 349 template RtpCodecCapability ToRtpCodecCapability<cricket::VideoCodec>(
333 const cricket::VideoCodec& cricket_codec); 350 const cricket::VideoCodec& cricket_codec);
334 351
352 template <typename C>
353 static void ToRtpCodecParametersTypeSpecific(const C& cricket_codec,
354 RtpCodecParameters* codec);
355 template <>
356 void ToRtpCodecParametersTypeSpecific<cricket::AudioCodec>(
357 const cricket::AudioCodec& cricket_codec,
358 RtpCodecParameters* codec) {
359 codec->num_channels =
360 rtc::Optional<int>(static_cast<int>(cricket_codec.channels));
361 }
362
363 template <>
364 void ToRtpCodecParametersTypeSpecific<cricket::VideoCodec>(
365 const cricket::VideoCodec& cricket_codec,
366 RtpCodecParameters* codec) {}
367
368 template <typename C>
369 RtpCodecParameters ToRtpCodecParameters(const C& cricket_codec) {
370 RtpCodecParameters codec_param;
371 codec_param.name = cricket_codec.name;
372 codec_param.kind = KindOfCodec<C>();
373 codec_param.clock_rate.emplace(cricket_codec.clockrate);
374 codec_param.payload_type = cricket_codec.id;
375 for (const cricket::FeedbackParam& cricket_feedback :
376 cricket_codec.feedback_params.params()) {
377 rtc::Optional<RtcpFeedback> feedback = ToRtcpFeedback(cricket_feedback);
378 if (feedback) {
379 codec_param.rtcp_feedback.push_back(feedback.MoveValue());
380 }
381 }
382 ToRtpCodecParametersTypeSpecific(cricket_codec, &codec_param);
383 codec_param.parameters.insert(cricket_codec.params.begin(),
384 cricket_codec.params.end());
385 return codec_param;
386 }
387
388 template RtpCodecParameters ToRtpCodecParameters<cricket::AudioCodec>(
389 const cricket::AudioCodec& cricket_codec);
390 template RtpCodecParameters ToRtpCodecParameters<cricket::VideoCodec>(
391 const cricket::VideoCodec& cricket_codec);
392
335 template <class C> 393 template <class C>
336 RtpCapabilities ToRtpCapabilities( 394 RtpCapabilities ToRtpCapabilities(
337 const std::vector<C>& cricket_codecs, 395 const std::vector<C>& cricket_codecs,
338 const cricket::RtpHeaderExtensions& cricket_extensions) { 396 const cricket::RtpHeaderExtensions& cricket_extensions) {
339 RtpCapabilities capabilities; 397 RtpCapabilities capabilities;
340 bool have_red = false; 398 bool have_red = false;
341 bool have_ulpfec = false; 399 bool have_ulpfec = false;
342 bool have_flexfec = false; 400 bool have_flexfec = false;
343 for (const C& cricket_codec : cricket_codecs) { 401 for (const C& cricket_codec : cricket_codecs) {
344 if (cricket_codec.name == cricket::kRedCodecName) { 402 if (cricket_codec.name == cricket::kRedCodecName) {
(...skipping 21 matching lines...) Expand all
366 return capabilities; 424 return capabilities;
367 } 425 }
368 426
369 template RtpCapabilities ToRtpCapabilities<cricket::AudioCodec>( 427 template RtpCapabilities ToRtpCapabilities<cricket::AudioCodec>(
370 const std::vector<cricket::AudioCodec>& cricket_codecs, 428 const std::vector<cricket::AudioCodec>& cricket_codecs,
371 const cricket::RtpHeaderExtensions& cricket_extensions); 429 const cricket::RtpHeaderExtensions& cricket_extensions);
372 template RtpCapabilities ToRtpCapabilities<cricket::VideoCodec>( 430 template RtpCapabilities ToRtpCapabilities<cricket::VideoCodec>(
373 const std::vector<cricket::VideoCodec>& cricket_codecs, 431 const std::vector<cricket::VideoCodec>& cricket_codecs,
374 const cricket::RtpHeaderExtensions& cricket_extensions); 432 const cricket::RtpHeaderExtensions& cricket_extensions);
375 433
434 template <class C>
435 RtpParameters ToRtpParameters(
436 const std::vector<C>& cricket_codecs,
437 const cricket::RtpHeaderExtensions& cricket_extensions,
438 const cricket::StreamParamsVec& stream_params) {
439 RtpParameters rtp_parameters;
440 for (const C& cricket_codec : cricket_codecs) {
441 rtp_parameters.codecs.push_back(ToRtpCodecParameters(cricket_codec));
442 }
443 for (const RtpExtension& cricket_extension : cricket_extensions) {
444 rtp_parameters.header_extensions.emplace_back(cricket_extension.uri,
445 cricket_extension.id);
446 }
447 rtp_parameters.encodings = ToRtpEncodings(stream_params);
448 return rtp_parameters;
449 }
450
451 template RtpParameters ToRtpParameters<cricket::AudioCodec>(
452 const std::vector<cricket::AudioCodec>& cricket_codecs,
453 const cricket::RtpHeaderExtensions& cricket_extensions,
454 const cricket::StreamParamsVec& stream_params);
455 template RtpParameters ToRtpParameters<cricket::VideoCodec>(
456 const std::vector<cricket::VideoCodec>& cricket_codecs,
457 const cricket::RtpHeaderExtensions& cricket_extensions,
458 const cricket::StreamParamsVec& stream_params);
459
376 } // namespace webrtc 460 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698