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:
@ -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);
|
||||
}
|
||||
|
@ -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_;
|
||||
|
Reference in New Issue
Block a user