We now require a manually set sender to send REMB packets.
BUG= TEST=video_engine_unittests Review URL: http://webrtc-codereview.appspot.com/348003 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1358 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
d9c87b2146
commit
0ab8ba313b
@ -369,11 +369,10 @@ bool ViEChannelManager::SetRembStatus(int channel_id, bool sender,
|
|||||||
channel->EnableRemb(false);
|
channel->EnableRemb(false);
|
||||||
}
|
}
|
||||||
RtpRtcp* rtp_module = channel->rtp_rtcp();
|
RtpRtcp* rtp_module = channel->rtp_rtcp();
|
||||||
// TODO(mflodman) Add when implemented.
|
|
||||||
if (sender) {
|
if (sender) {
|
||||||
// remb_->AddSendChannel(rtp_module);
|
remb_->AddSendChannel(rtp_module);
|
||||||
} else {
|
} else {
|
||||||
// remb_->RemoveSendChannel(rtp_module);
|
remb_->RemoveSendChannel(rtp_module);
|
||||||
}
|
}
|
||||||
if (receiver) {
|
if (receiver) {
|
||||||
remb_->AddReceiveChannel(rtp_module);
|
remb_->AddReceiveChannel(rtp_module);
|
||||||
|
@ -61,7 +61,7 @@ void VieRemb::RemoveReceiveChannel(RtpRtcp* rtp_rtcp) {
|
|||||||
unsigned int ssrc = rtp_rtcp->RemoteSSRC();
|
unsigned int ssrc = rtp_rtcp->RemoteSSRC();
|
||||||
for (RtpModules::iterator it = receive_modules_.begin();
|
for (RtpModules::iterator it = receive_modules_.begin();
|
||||||
it != receive_modules_.end(); ++it) {
|
it != receive_modules_.end(); ++it) {
|
||||||
if ((*it)->RemoteSSRC() == ssrc) {
|
if ((*it) == rtp_rtcp) {
|
||||||
receive_modules_.erase(it);
|
receive_modules_.erase(it);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -73,17 +73,29 @@ void VieRemb::AddSendChannel(RtpRtcp* rtp_rtcp) {
|
|||||||
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
||||||
"VieRemb::AddSendChannel");
|
"VieRemb::AddSendChannel");
|
||||||
assert(rtp_rtcp);
|
assert(rtp_rtcp);
|
||||||
assert(false);
|
|
||||||
return;
|
CriticalSectionScoped cs(list_crit_.get());
|
||||||
|
|
||||||
|
// TODO(mflodman) Allow multiple senders.
|
||||||
|
assert(send_modules_.empty());
|
||||||
|
|
||||||
|
send_modules_.push_back(rtp_rtcp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VieRemb::RemoveSendChannel(RtpRtcp* rtp_rtcp) {
|
void VieRemb::RemoveSendChannel(RtpRtcp* rtp_rtcp) {
|
||||||
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
||||||
"VieRemb::AddSendChannel");
|
"VieRemb::AddSendChannel");
|
||||||
assert(rtp_rtcp);
|
assert(rtp_rtcp);
|
||||||
assert(false);
|
|
||||||
|
CriticalSectionScoped cs(list_crit_.get());
|
||||||
|
for (RtpModules::iterator it = send_modules_.begin();
|
||||||
|
it != send_modules_.end(); ++it) {
|
||||||
|
if ((*it) == rtp_rtcp) {
|
||||||
|
send_modules_.erase(it);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void VieRemb::OnReceiveBitrateChanged(unsigned int ssrc, unsigned int bitrate) {
|
void VieRemb::OnReceiveBitrateChanged(unsigned int ssrc, unsigned int bitrate) {
|
||||||
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
WEBRTC_TRACE(kTraceStateInfo, kTraceVideo, engine_id_,
|
||||||
@ -151,14 +163,6 @@ WebRtc_Word32 VieRemb::Process() {
|
|||||||
RtpRtcp* sender = NULL;
|
RtpRtcp* sender = NULL;
|
||||||
if (!send_modules_.empty()) {
|
if (!send_modules_.empty()) {
|
||||||
sender = send_modules_.front();
|
sender = send_modules_.front();
|
||||||
} else {
|
|
||||||
for (RtpModules::iterator it = receive_modules_.begin();
|
|
||||||
it != receive_modules_.end(); ++it) {
|
|
||||||
if ((*it)->Sending()) {
|
|
||||||
sender = *it;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
last_send_bitrate_ = total_bitrate;
|
last_send_bitrate_ = total_bitrate;
|
||||||
list_crit_->Leave();
|
list_crit_->Leave();
|
||||||
|
@ -47,10 +47,8 @@ class ViERembTest : public ::testing::Test {
|
|||||||
TEST_F(ViERembTest, OneModuleTestForSendingRemb)
|
TEST_F(ViERembTest, OneModuleTestForSendingRemb)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp;
|
MockRtpRtcp rtp;
|
||||||
EXPECT_CALL(rtp, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp);
|
vie_remb_->AddReceiveChannel(&rtp);
|
||||||
|
vie_remb_->AddSendChannel(&rtp);
|
||||||
|
|
||||||
const unsigned int bitrate_estimate = 456;
|
const unsigned int bitrate_estimate = 456;
|
||||||
unsigned int ssrc[] = { 1234 };
|
unsigned int ssrc[] = { 1234 };
|
||||||
@ -72,15 +70,14 @@ TEST_F(ViERembTest, OneModuleTestForSendingRemb)
|
|||||||
vie_remb_->Process();
|
vie_remb_->Process();
|
||||||
|
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp);
|
vie_remb_->RemoveReceiveChannel(&rtp);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, LowerEstimateToSendRemb)
|
TEST_F(ViERembTest, LowerEstimateToSendRemb)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp;
|
MockRtpRtcp rtp;
|
||||||
EXPECT_CALL(rtp, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp);
|
vie_remb_->AddReceiveChannel(&rtp);
|
||||||
|
vie_remb_->AddSendChannel(&rtp);
|
||||||
|
|
||||||
unsigned int bitrate_estimate = 456;
|
unsigned int bitrate_estimate = 456;
|
||||||
unsigned int ssrc[] = { 1234 };
|
unsigned int ssrc[] = { 1234 };
|
||||||
@ -101,13 +98,9 @@ TEST_F(ViERembTest, LowerEstimateToSendRemb)
|
|||||||
TEST_F(ViERembTest, VerifyCombinedBitrateEstimate)
|
TEST_F(ViERembTest, VerifyCombinedBitrateEstimate)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp_0;
|
MockRtpRtcp rtp_0;
|
||||||
EXPECT_CALL(rtp_0, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
MockRtpRtcp rtp_1;
|
MockRtpRtcp rtp_1;
|
||||||
EXPECT_CALL(rtp_1, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp_0);
|
vie_remb_->AddReceiveChannel(&rtp_0);
|
||||||
|
vie_remb_->AddSendChannel(&rtp_0);
|
||||||
vie_remb_->AddReceiveChannel(&rtp_1);
|
vie_remb_->AddReceiveChannel(&rtp_1);
|
||||||
|
|
||||||
unsigned int bitrate_estimate[] = { 456, 789 };
|
unsigned int bitrate_estimate[] = { 456, 789 };
|
||||||
@ -131,19 +124,16 @@ TEST_F(ViERembTest, VerifyCombinedBitrateEstimate)
|
|||||||
vie_remb_->Process();
|
vie_remb_->Process();
|
||||||
|
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp_0);
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, NoRembForIncreasedBitrate)
|
TEST_F(ViERembTest, NoRembForIncreasedBitrate)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp_0;
|
MockRtpRtcp rtp_0;
|
||||||
EXPECT_CALL(rtp_0, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
MockRtpRtcp rtp_1;
|
MockRtpRtcp rtp_1;
|
||||||
EXPECT_CALL(rtp_1, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp_0);
|
vie_remb_->AddReceiveChannel(&rtp_0);
|
||||||
|
vie_remb_->AddSendChannel(&rtp_0);
|
||||||
vie_remb_->AddReceiveChannel(&rtp_1);
|
vie_remb_->AddReceiveChannel(&rtp_1);
|
||||||
|
|
||||||
unsigned int bitrate_estimate[] = { 456, 789 };
|
unsigned int bitrate_estimate[] = { 456, 789 };
|
||||||
@ -181,18 +171,15 @@ TEST_F(ViERembTest, NoRembForIncreasedBitrate)
|
|||||||
vie_remb_->Process();
|
vie_remb_->Process();
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp_0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, ChangeSendRtpModule)
|
TEST_F(ViERembTest, ChangeSendRtpModule)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp_0;
|
MockRtpRtcp rtp_0;
|
||||||
EXPECT_CALL(rtp_0, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
MockRtpRtcp rtp_1;
|
MockRtpRtcp rtp_1;
|
||||||
EXPECT_CALL(rtp_1, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp_0);
|
vie_remb_->AddReceiveChannel(&rtp_0);
|
||||||
|
vie_remb_->AddSendChannel(&rtp_0);
|
||||||
vie_remb_->AddReceiveChannel(&rtp_1);
|
vie_remb_->AddReceiveChannel(&rtp_1);
|
||||||
|
|
||||||
unsigned int bitrate_estimate[] = { 456, 789 };
|
unsigned int bitrate_estimate[] = { 456, 789 };
|
||||||
@ -218,8 +205,8 @@ TEST_F(ViERembTest, ChangeSendRtpModule)
|
|||||||
|
|
||||||
// Remove the sending module, add it again -> should get remb on the second
|
// Remove the sending module, add it again -> should get remb on the second
|
||||||
// module.
|
// module.
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
vie_remb_->RemoveSendChannel(&rtp_0);
|
||||||
vie_remb_->AddReceiveChannel(&rtp_0);
|
vie_remb_->AddSendChannel(&rtp_1);
|
||||||
vie_remb_->OnReceiveBitrateChanged(ssrc[0], bitrate_estimate[0]);
|
vie_remb_->OnReceiveBitrateChanged(ssrc[0], bitrate_estimate[0]);
|
||||||
|
|
||||||
bitrate_estimate[1] = bitrate_estimate[1] - 100;
|
bitrate_estimate[1] = bitrate_estimate[1] - 100;
|
||||||
@ -231,18 +218,17 @@ TEST_F(ViERembTest, ChangeSendRtpModule)
|
|||||||
|
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
vie_remb_->RemoveReceiveChannel(&rtp_0);
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
vie_remb_->RemoveReceiveChannel(&rtp_1);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, OnlyOneRembForDoubleProcess)
|
TEST_F(ViERembTest, OnlyOneRembForDoubleProcess)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp;
|
MockRtpRtcp rtp;
|
||||||
EXPECT_CALL(rtp, Sending())
|
|
||||||
.WillRepeatedly(Return(true));
|
|
||||||
|
|
||||||
unsigned int bitrate_estimate = 456;
|
unsigned int bitrate_estimate = 456;
|
||||||
unsigned int ssrc[] = { 1234 };
|
unsigned int ssrc[] = { 1234 };
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp);
|
vie_remb_->AddReceiveChannel(&rtp);
|
||||||
|
vie_remb_->AddSendChannel(&rtp);
|
||||||
vie_remb_->OnReceiveBitrateChanged(ssrc[0], bitrate_estimate);
|
vie_remb_->OnReceiveBitrateChanged(ssrc[0], bitrate_estimate);
|
||||||
EXPECT_CALL(rtp, RemoteSSRC())
|
EXPECT_CALL(rtp, RemoteSSRC())
|
||||||
.WillRepeatedly(Return(ssrc[0]));
|
.WillRepeatedly(Return(ssrc[0]));
|
||||||
@ -259,6 +245,7 @@ TEST_F(ViERembTest, OnlyOneRembForDoubleProcess)
|
|||||||
.Times(0);
|
.Times(0);
|
||||||
vie_remb_->Process();
|
vie_remb_->Process();
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp);
|
vie_remb_->RemoveReceiveChannel(&rtp);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, NoOnReceivedBitrateChangedCall)
|
TEST_F(ViERembTest, NoOnReceivedBitrateChangedCall)
|
||||||
@ -268,6 +255,7 @@ TEST_F(ViERembTest, NoOnReceivedBitrateChangedCall)
|
|||||||
.WillRepeatedly(Return(1234));
|
.WillRepeatedly(Return(1234));
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp);
|
vie_remb_->AddReceiveChannel(&rtp);
|
||||||
|
vie_remb_->AddSendChannel(&rtp);
|
||||||
// TODO(mflodman) Add fake clock.
|
// TODO(mflodman) Add fake clock.
|
||||||
TestSleep(1010);
|
TestSleep(1010);
|
||||||
// No bitrate estimate given, no callback expected.
|
// No bitrate estimate given, no callback expected.
|
||||||
@ -276,14 +264,12 @@ TEST_F(ViERembTest, NoOnReceivedBitrateChangedCall)
|
|||||||
vie_remb_->Process();
|
vie_remb_->Process();
|
||||||
|
|
||||||
vie_remb_->RemoveReceiveChannel(&rtp);
|
vie_remb_->RemoveReceiveChannel(&rtp);
|
||||||
|
vie_remb_->RemoveSendChannel(&rtp);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ViERembTest, NoSendingRtpModule)
|
TEST_F(ViERembTest, NoSendingRtpModule)
|
||||||
{
|
{
|
||||||
MockRtpRtcp rtp;
|
MockRtpRtcp rtp;
|
||||||
EXPECT_CALL(rtp, Sending())
|
|
||||||
.WillRepeatedly(Return(false));
|
|
||||||
|
|
||||||
vie_remb_->AddReceiveChannel(&rtp);
|
vie_remb_->AddReceiveChannel(&rtp);
|
||||||
|
|
||||||
unsigned int bitrate_estimate = 456;
|
unsigned int bitrate_estimate = 456;
|
||||||
|
Loading…
Reference in New Issue
Block a user