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 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
449 ASSERT_EQ(2u, codec.parameters.size()); | 449 ASSERT_EQ(2u, codec.parameters.size()); |
450 EXPECT_EQ("bar", codec.parameters["foo"]); | 450 EXPECT_EQ("bar", codec.parameters["foo"]); |
451 EXPECT_EQ("param", codec.parameters["ANOTHER"]); | 451 EXPECT_EQ("param", codec.parameters["ANOTHER"]); |
452 EXPECT_EQ(2u, codec.rtcp_feedback.size()); | 452 EXPECT_EQ(2u, codec.rtcp_feedback.size()); |
453 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC), | 453 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC), |
454 codec.rtcp_feedback[0]); | 454 codec.rtcp_feedback[0]); |
455 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::NACK, RtcpFeedbackMessageType::PLI), | 455 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::NACK, RtcpFeedbackMessageType::PLI), |
456 codec.rtcp_feedback[1]); | 456 codec.rtcp_feedback[1]); |
457 } | 457 } |
458 | 458 |
459 // Tests that the StreamParamsVec can be successfully converted to | |
460 // RtpEncodingParameters and vice versa. | |
Taylor Brandstetter
2017/03/08 22:35:49
Since there are already independent tests for ToCr
Zhi Huang
2017/03/08 23:56:49
Done.
| |
461 TEST(RtpParametersConversionTest, StreamParamsVecAndRtpEncodingConversion) { | |
462 // Translate RtpEncodingParameters to StreamParamVec. | |
463 std::vector<RtpEncodingParameters> encodings; | |
464 RtpEncodingParameters encoding; | |
465 encoding.ssrc.emplace(1234u); | |
466 encoding.rtx.emplace(0xdeadbeef); | |
467 encodings.push_back(encoding); | |
468 auto result = ToCricketStreamParamsVec(encodings); | |
469 ASSERT_TRUE(result.ok()); | |
470 ASSERT_EQ(1u, result.value().size()); | |
471 EXPECT_EQ(2u, result.value()[0].ssrcs.size()); | |
472 EXPECT_EQ(1234u, result.value()[0].first_ssrc()); | |
473 uint32_t rtx_ssrc = 0; | |
474 EXPECT_TRUE(result.value()[0].GetFidSsrc(1234u, &rtx_ssrc)); | |
475 EXPECT_EQ(0xdeadbeef, rtx_ssrc); | |
476 // Translate StreamParamVec back to RtpEncodingParameters. | |
477 auto rtp_encodings = ToRtpEncodings(result.MoveValue()); | |
478 ASSERT_EQ(1u, rtp_encodings.size()); | |
479 EXPECT_EQ(1234, rtp_encodings[0].ssrc); | |
480 EXPECT_EQ(0xdeadbeef, rtp_encodings[0].rtx->ssrc); | |
481 } | |
482 | |
483 TEST(RtpParametersConversionTest, ToAudioRtpCodecParameters) { | |
484 cricket::VideoCodec cricket_codec; | |
Taylor Brandstetter
2017/03/08 22:35:49
Should be AudioCodec; it looks like this is a copy
Zhi Huang
2017/03/08 23:56:49
Oh, I must forgot to update this for some reason.
| |
485 cricket_codec.name = "VID"; | |
486 cricket_codec.id = 101; | |
487 cricket_codec.clockrate = 80000; | |
488 cricket_codec.params["foo"] = "bar"; | |
489 cricket_codec.params["ANOTHER"] = "param"; | |
490 cricket_codec.feedback_params.Add(cricket::FeedbackParam("transport-cc")); | |
491 cricket_codec.feedback_params.Add({"nack", "pli"}); | |
492 RtpCodecParameters codec = ToRtpCodecParameters(cricket_codec); | |
493 | |
494 EXPECT_EQ("VID", codec.name); | |
495 EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, codec.kind); | |
496 EXPECT_EQ(101, codec.payload_type); | |
497 EXPECT_EQ(rtc::Optional<int>(80000), codec.clock_rate); | |
498 ASSERT_EQ(2u, codec.parameters.size()); | |
499 EXPECT_EQ("bar", codec.parameters["foo"]); | |
500 EXPECT_EQ("param", codec.parameters["ANOTHER"]); | |
501 EXPECT_EQ(2u, codec.rtcp_feedback.size()); | |
502 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC), | |
503 codec.rtcp_feedback[0]); | |
504 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::NACK, RtcpFeedbackMessageType::PLI), | |
505 codec.rtcp_feedback[1]); | |
506 } | |
507 | |
508 TEST(RtpParametersConversionTest, ToVideoRtpCodecParameters) { | |
509 cricket::VideoCodec cricket_codec; | |
510 cricket_codec.name = "VID"; | |
511 cricket_codec.id = 101; | |
512 cricket_codec.clockrate = 80000; | |
513 cricket_codec.params["foo"] = "bar"; | |
514 cricket_codec.params["ANOTHER"] = "param"; | |
515 cricket_codec.feedback_params.Add(cricket::FeedbackParam("transport-cc")); | |
516 cricket_codec.feedback_params.Add({"nack", "pli"}); | |
517 RtpCodecParameters codec = ToRtpCodecParameters(cricket_codec); | |
518 | |
519 EXPECT_EQ("VID", codec.name); | |
520 EXPECT_EQ(cricket::MEDIA_TYPE_VIDEO, codec.kind); | |
521 EXPECT_EQ(101, codec.payload_type); | |
522 EXPECT_EQ(rtc::Optional<int>(80000), codec.clock_rate); | |
523 ASSERT_EQ(2u, codec.parameters.size()); | |
524 EXPECT_EQ("bar", codec.parameters["foo"]); | |
525 EXPECT_EQ("param", codec.parameters["ANOTHER"]); | |
526 EXPECT_EQ(2u, codec.rtcp_feedback.size()); | |
527 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::TRANSPORT_CC), | |
528 codec.rtcp_feedback[0]); | |
529 EXPECT_EQ(RtcpFeedback(RtcpFeedbackType::NACK, RtcpFeedbackMessageType::PLI), | |
530 codec.rtcp_feedback[1]); | |
531 } | |
532 | |
459 // An unknown feedback param should just be ignored. | 533 // An unknown feedback param should just be ignored. |
460 TEST(RtpParametersConversionTest, ToRtpCodecCapabilityUnknownFeedbackParam) { | 534 TEST(RtpParametersConversionTest, ToRtpCodecCapabilityUnknownFeedbackParam) { |
461 cricket::AudioCodec cricket_codec; | 535 cricket::AudioCodec cricket_codec; |
462 cricket_codec.name = "foo"; | 536 cricket_codec.name = "foo"; |
463 cricket_codec.id = 50; | 537 cricket_codec.id = 50; |
464 cricket_codec.clockrate = 22222; | 538 cricket_codec.clockrate = 22222; |
465 cricket_codec.channels = 4; | 539 cricket_codec.channels = 4; |
466 cricket_codec.params["foo"] = "bar"; | 540 cricket_codec.params["foo"] = "bar"; |
467 cricket_codec.feedback_params.Add({"unknown", "param"}); | 541 cricket_codec.feedback_params.Add({"unknown", "param"}); |
468 cricket_codec.feedback_params.Add(cricket::FeedbackParam("transport-cc")); | 542 cricket_codec.feedback_params.Add(cricket::FeedbackParam("transport-cc")); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
525 EXPECT_EQ(3u, capabilities.codecs.size()); | 599 EXPECT_EQ(3u, capabilities.codecs.size()); |
526 EXPECT_EQ(2u, capabilities.fec.size()); | 600 EXPECT_EQ(2u, capabilities.fec.size()); |
527 EXPECT_NE(capabilities.fec.end(), | 601 EXPECT_NE(capabilities.fec.end(), |
528 std::find(capabilities.fec.begin(), capabilities.fec.end(), | 602 std::find(capabilities.fec.begin(), capabilities.fec.end(), |
529 FecMechanism::RED)); | 603 FecMechanism::RED)); |
530 EXPECT_NE(capabilities.fec.end(), | 604 EXPECT_NE(capabilities.fec.end(), |
531 std::find(capabilities.fec.begin(), capabilities.fec.end(), | 605 std::find(capabilities.fec.begin(), capabilities.fec.end(), |
532 FecMechanism::FLEXFEC)); | 606 FecMechanism::FLEXFEC)); |
533 } | 607 } |
534 | 608 |
609 TEST(RtpParametersConversionTest, ToRtpParameters) { | |
610 cricket::VideoCodec vp8; | |
611 vp8.name = "VP8"; | |
612 vp8.id = 101; | |
613 vp8.clockrate = 90000; | |
614 | |
615 cricket::VideoCodec red; | |
616 red.name = "red"; | |
617 red.id = 102; | |
618 red.clockrate = 90000; | |
619 | |
620 cricket::VideoCodec ulpfec; | |
621 ulpfec.name = "ulpfec"; | |
622 ulpfec.id = 103; | |
623 ulpfec.clockrate = 90000; | |
624 | |
625 cricket::StreamParamsVec streams; | |
626 cricket::StreamParams stream; | |
627 stream.ssrcs.push_back(1234u); | |
628 streams.push_back(stream); | |
629 | |
630 RtpParameters rtp_parameters = ToRtpParameters<cricket::VideoCodec>( | |
631 {vp8, red, ulpfec}, {{"uri", 1}, {"uri2", 3}}, streams); | |
632 ASSERT_EQ(3u, rtp_parameters.codecs.size()); | |
633 EXPECT_EQ("VP8", rtp_parameters.codecs[0].name); | |
634 EXPECT_EQ("red", rtp_parameters.codecs[1].name); | |
635 EXPECT_EQ("ulpfec", rtp_parameters.codecs[2].name); | |
636 ASSERT_EQ(2u, rtp_parameters.header_extensions.size()); | |
637 EXPECT_EQ("uri", rtp_parameters.header_extensions[0].uri); | |
638 EXPECT_EQ(1, rtp_parameters.header_extensions[0].id); | |
639 EXPECT_EQ("uri2", rtp_parameters.header_extensions[1].uri); | |
640 EXPECT_EQ(3, rtp_parameters.header_extensions[1].id); | |
641 ASSERT_EQ(1u, rtp_parameters.encodings.size()); | |
642 EXPECT_EQ(1234u, rtp_parameters.encodings[0].ssrc); | |
643 } | |
644 | |
535 } // namespace webrtc | 645 } // namespace webrtc |
OLD | NEW |