OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 } | 656 } |
657 | 657 |
658 TEST_F(RtcpSenderTest, SendTmmbr) { | 658 TEST_F(RtcpSenderTest, SendTmmbr) { |
659 const unsigned int kBitrateBps = 312000; | 659 const unsigned int kBitrateBps = 312000; |
660 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize); | 660 rtcp_sender_->SetRTCPStatus(RtcpMode::kReducedSize); |
661 rtcp_sender_->SetTargetBitrate(kBitrateBps); | 661 rtcp_sender_->SetTargetBitrate(kBitrateBps); |
662 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr)); | 662 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpTmmbr)); |
663 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); | 663 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); |
664 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc()); | 664 EXPECT_EQ(kSenderSsrc, parser()->tmmbr()->Ssrc()); |
665 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); | 665 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); |
666 EXPECT_EQ(kBitrateBps / 1000, parser()->tmmbr_item()->BitrateKbps()); | 666 EXPECT_EQ(kBitrateBps, parser()->tmmbr_item()->BitrateKbps() * 1000); |
667 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero. | 667 // TODO(asapersson): tmmbr_item()->Overhead() looks broken, always zero. |
668 } | 668 } |
669 | 669 |
670 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) { | 670 TEST_F(RtcpSenderTest, TmmbrIncludedInCompoundPacketIfEnabled) { |
671 const unsigned int kBitrateBps = 312000; | 671 const unsigned int kBitrateBps = 312000; |
672 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); | 672 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); |
673 EXPECT_FALSE(rtcp_sender_->TMMBR()); | 673 EXPECT_FALSE(rtcp_sender_->TMMBR()); |
674 rtcp_sender_->SetTMMBRStatus(true); | 674 rtcp_sender_->SetTMMBRStatus(true); |
675 EXPECT_TRUE(rtcp_sender_->TMMBR()); | 675 EXPECT_TRUE(rtcp_sender_->TMMBR()); |
676 rtcp_sender_->SetTargetBitrate(kBitrateBps); | 676 rtcp_sender_->SetTargetBitrate(kBitrateBps); |
677 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); | 677 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); |
678 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); | 678 EXPECT_EQ(1, parser()->tmmbr()->num_packets()); |
679 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); | 679 EXPECT_EQ(1, parser()->tmmbr_item()->num_packets()); |
680 // TMMBR should be included in each compound packet. | 680 // TMMBR should be included in each compound packet. |
681 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); | 681 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); |
682 EXPECT_EQ(2, parser()->tmmbr()->num_packets()); | 682 EXPECT_EQ(2, parser()->tmmbr()->num_packets()); |
683 EXPECT_EQ(2, parser()->tmmbr_item()->num_packets()); | 683 EXPECT_EQ(2, parser()->tmmbr_item()->num_packets()); |
684 | 684 |
685 rtcp_sender_->SetTMMBRStatus(false); | 685 rtcp_sender_->SetTMMBRStatus(false); |
686 EXPECT_FALSE(rtcp_sender_->TMMBR()); | 686 EXPECT_FALSE(rtcp_sender_->TMMBR()); |
687 } | 687 } |
688 | 688 |
689 TEST_F(RtcpSenderTest, SendTmmbn) { | 689 TEST_F(RtcpSenderTest, SendTmmbn) { |
690 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); | 690 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); |
| 691 |
691 std::vector<rtcp::TmmbItem> bounding_set; | 692 std::vector<rtcp::TmmbItem> bounding_set; |
692 const uint32_t kBitrateKbps = 32768; | 693 const uint32_t kBitrateBps = 32768000; |
693 const uint32_t kPacketOh = 40; | 694 const uint32_t kPacketOh = 40; |
694 const uint32_t kSourceSsrc = 12345; | 695 const uint32_t kSourceSsrc = 12345; |
695 const rtcp::TmmbItem tmmbn(kSourceSsrc, kBitrateKbps * 1000, kPacketOh); | 696 bounding_set.push_back(rtcp::TmmbItem(kSourceSsrc, kBitrateBps, kPacketOh)); |
696 bounding_set.push_back(tmmbn); | |
697 rtcp_sender_->SetTMMBN(&bounding_set); | 697 rtcp_sender_->SetTMMBN(&bounding_set); |
698 | |
699 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); | 698 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpSr)); |
700 EXPECT_EQ(1, parser()->sender_report()->num_packets()); | 699 EXPECT_EQ(1, parser()->sender_report()->num_packets()); |
701 EXPECT_EQ(1, parser()->tmmbn()->num_packets()); | 700 EXPECT_EQ(1, parser()->tmmbn()->num_packets()); |
702 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc()); | 701 EXPECT_EQ(kSenderSsrc, parser()->tmmbn()->Ssrc()); |
703 EXPECT_EQ(1, parser()->tmmbn_items()->num_packets()); | 702 EXPECT_EQ(1, parser()->tmmbn_items()->num_packets()); |
704 EXPECT_EQ(kBitrateKbps, parser()->tmmbn_items()->BitrateKbps(0)); | 703 EXPECT_EQ(kBitrateBps, parser()->tmmbn_items()->BitrateKbps(0) * 1000); |
705 EXPECT_EQ(kPacketOh, parser()->tmmbn_items()->Overhead(0)); | 704 EXPECT_EQ(kPacketOh, parser()->tmmbn_items()->Overhead(0)); |
706 EXPECT_EQ(kSourceSsrc, parser()->tmmbn_items()->Ssrc(0)); | 705 EXPECT_EQ(kSourceSsrc, parser()->tmmbn_items()->Ssrc(0)); |
707 } | 706 } |
708 | 707 |
709 // This test is written to verify actual behaviour. It does not seem | 708 // This test is written to verify actual behaviour. It does not seem |
710 // to make much sense to send an empty TMMBN, since there is no place | 709 // to make much sense to send an empty TMMBN, since there is no place |
711 // to put an actual limit here. It's just information that no limit | 710 // to put an actual limit here. It's just information that no limit |
712 // is set, which is kind of the starting assumption. | 711 // is set, which is kind of the starting assumption. |
713 // See http://code.google.com/p/webrtc/issues/detail?id=468 for one | 712 // See http://code.google.com/p/webrtc/issues/detail?id=468 for one |
714 // situation where this caused confusion. | 713 // situation where this caused confusion. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc); | 769 rtcp_sender_->SetRemoteSSRC(kRemoteSsrc); |
771 | 770 |
772 // Set up XR VoIP metric to be included with BYE | 771 // Set up XR VoIP metric to be included with BYE |
773 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); | 772 rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); |
774 RTCPVoIPMetric metric; | 773 RTCPVoIPMetric metric; |
775 EXPECT_EQ(0, rtcp_sender_->SetRTCPVoIPMetrics(&metric)); | 774 EXPECT_EQ(0, rtcp_sender_->SetRTCPVoIPMetrics(&metric)); |
776 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye)); | 775 EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye)); |
777 } | 776 } |
778 | 777 |
779 } // namespace webrtc | 778 } // namespace webrtc |
OLD | NEW |