Index: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc |
index c98400f3fb797b58967e2fbc387d6c56fd4e0f75..16300895027e22e86792834df7816876d8737bd0 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "webrtc/base/array_view.h" |
#include "webrtc/base/random.h" |
#include "webrtc/common_types.h" |
+#include "webrtc/common_video/include/video_bitrate_allocator.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" |
@@ -96,6 +97,13 @@ class MockModuleRtpRtcp : public RTCPReceiver::ModuleRtpRtcp { |
MOCK_METHOD1(OnReceivedRtcpReportBlocks, void(const ReportBlockList&)); |
}; |
+class MockVideoBitrateAllocationObserver |
+ : public VideoBitrateAllocationObserver { |
+ public: |
+ MOCK_METHOD1(OnBitrateAllocationUpdated, |
+ void(const BitrateAllocation& allocation)); |
+}; |
+ |
// SSRC of remote peer, that sends rtcp packet to the rtcp receiver under test. |
constexpr uint32_t kSenderSsrc = 0x10203; |
// SSRCs of local peer, that rtcp packet addressed to. |
@@ -118,6 +126,7 @@ class RtcpReceiverTest : public ::testing::Test { |
&bandwidth_observer_, |
&intra_frame_observer_, |
&transport_feedback_observer_, |
+ &bitrate_allocation_observer_, |
&rtp_rtcp_impl_) {} |
void SetUp() { |
std::set<uint32_t> ssrcs = {kReceiverMainSsrc, kReceiverExtraSsrc}; |
@@ -142,6 +151,7 @@ class RtcpReceiverTest : public ::testing::Test { |
StrictMock<MockRtcpBandwidthObserver> bandwidth_observer_; |
StrictMock<MockRtcpIntraFrameObserver> intra_frame_observer_; |
StrictMock<MockTransportFeedbackObserver> transport_feedback_observer_; |
+ StrictMock<MockVideoBitrateAllocationObserver> bitrate_allocation_observer_; |
StrictMock<MockModuleRtpRtcp> rtp_rtcp_impl_; |
RTCPReceiver rtcp_receiver_; |
@@ -1266,4 +1276,25 @@ TEST_F(RtcpReceiverTest, ForceSenderReport) { |
InjectRtcpPacket(rr); |
} |
+TEST_F(RtcpReceiverTest, ReceivesTargetBitrate) { |
+ BitrateAllocation expected_allocation; |
+ expected_allocation.SetBitrate(0, 0, 10000); |
+ expected_allocation.SetBitrate(0, 1, 20000); |
+ expected_allocation.SetBitrate(1, 0, 40000); |
+ expected_allocation.SetBitrate(1, 1, 80000); |
+ |
+ rtcp::TargetBitrate bitrate; |
+ bitrate.AddTargetBitrate(0, 0, expected_allocation.GetBitrate(0, 0) / 1000); |
+ bitrate.AddTargetBitrate(0, 1, expected_allocation.GetBitrate(0, 1) / 1000); |
+ bitrate.AddTargetBitrate(1, 0, expected_allocation.GetBitrate(1, 0) / 1000); |
+ bitrate.AddTargetBitrate(1, 1, expected_allocation.GetBitrate(1, 1) / 1000); |
+ |
+ rtcp::ExtendedReports xr; |
+ xr.SetTargetBitrate(bitrate); |
+ |
+ EXPECT_CALL(bitrate_allocation_observer_, |
+ OnBitrateAllocationUpdated(expected_allocation)); |
+ InjectRtcpPacket(xr); |
+} |
+ |
} // namespace webrtc |