Fix issue where receive-side encoders are included in the padding bitrate.

BUG=chromium:487528
R=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/49959004

Cr-Commit-Position: refs/heads/master@{#9185}
This commit is contained in:
Stefan Holmer
2015-05-13 14:01:38 +02:00
parent 9a63866272
commit 070376697a
2 changed files with 13 additions and 5 deletions

View File

@ -195,6 +195,7 @@ ChannelGroup::~ChannelGroup() {
DCHECK(channel_map_.empty());
DCHECK(!remb_->InUse());
DCHECK(vie_encoder_map_.empty());
DCHECK(send_encoders_.empty());
}
bool ChannelGroup::CreateSendChannel(int channel_id,
@ -273,6 +274,8 @@ bool ChannelGroup::CreateChannel(int channel_id,
{
CriticalSectionScoped lock(encoder_map_cs_.get());
vie_encoder_map_[channel_id] = vie_encoder;
if (sender)
send_encoders_[channel_id] = vie_encoder;
}
return true;
@ -368,10 +371,14 @@ ViEChannel* ChannelGroup::PopChannel(int channel_id) {
ViEEncoder* ChannelGroup::PopEncoder(int channel_id) {
CriticalSectionScoped lock(encoder_map_cs_.get());
EncoderMap::iterator e_it = vie_encoder_map_.find(channel_id);
DCHECK(e_it != vie_encoder_map_.end());
ViEEncoder* encoder = e_it->second;
vie_encoder_map_.erase(e_it);
auto it = vie_encoder_map_.find(channel_id);
DCHECK(it != vie_encoder_map_.end());
ViEEncoder* encoder = it->second;
vie_encoder_map_.erase(it);
it = send_encoders_.find(channel_id);
if (it != send_encoders_.end())
send_encoders_.erase(it);
return encoder;
}
@ -472,7 +479,7 @@ void ChannelGroup::OnNetworkChanged(uint32_t target_bitrate_bps,
int pad_up_to_bitrate_bps = 0;
{
CriticalSectionScoped lock(encoder_map_cs_.get());
for (const auto& encoder : vie_encoder_map_) {
for (const auto& encoder : send_encoders_) {
pad_up_to_bitrate_bps +=
encoder.second->GetPaddingNeededBps(target_bitrate_bps);
}

View File

@ -102,6 +102,7 @@ class ChannelGroup : public BitrateObserver {
ChannelMap channel_map_;
// Maps Channel id -> ViEEncoder.
EncoderMap vie_encoder_map_;
EncoderMap send_encoders_;
rtc::scoped_ptr<CriticalSectionWrapper> encoder_map_cs_;
const Config* config_;