diff --git a/src/video_engine/vie_remb.cc b/src/video_engine/vie_remb.cc index 2bd1cffc6..e0ecf3fe0 100644 --- a/src/video_engine/vie_remb.cc +++ b/src/video_engine/vie_remb.cc @@ -227,6 +227,8 @@ WebRtc_Word32 VieRemb::Process() { RtpRtcp* sender = NULL; if (!rtcp_sender_.empty()) { sender = rtcp_sender_.front(); + } else if (!receive_modules_.empty()){ + sender = receive_modules_.front(); } last_send_bitrate_ = total_bitrate; list_crit_->Leave(); diff --git a/src/video_engine/vie_remb_unittest.cc b/src/video_engine/vie_remb_unittest.cc index bcfe06f45..d8f1e0ebc 100644 --- a/src/video_engine/vie_remb_unittest.cc +++ b/src/video_engine/vie_remb_unittest.cc @@ -326,6 +326,8 @@ TEST_F(ViERembTest, NoOnReceivedBitrateChangedCall) vie_remb_->RemoveRembSender(&rtp); } +// Only register receiving modules and make sure we fallback to trigger a REMB +// packet on this one. TEST_F(ViERembTest, NoSendingRtpModule) { MockRtpRtcp rtp; @@ -338,11 +340,10 @@ TEST_F(ViERembTest, NoSendingRtpModule) EXPECT_CALL(rtp, RemoteSSRC()) .WillRepeatedly(Return(ssrc[0])); - // Lower the estimate. This should normally trigger a callback, but not now - // since we have no sending module. + // Lower the estimate to trigger a new packet REMB packet. bitrate_estimate = bitrate_estimate - 100; EXPECT_CALL(rtp, SetREMBData(_, _, _)) - .Times(0); + .Times(1); vie_remb_->OnReceiveBitrateChanged(ssrc[0], bitrate_estimate); vie_remb_->Process(); }