| Index: webrtc/modules/video_coding/video_sender.cc
|
| diff --git a/webrtc/modules/video_coding/video_sender.cc b/webrtc/modules/video_coding/video_sender.cc
|
| index ab7729745e56710c5d0ce497762b440865204ec7..3dabbfca097cc90a8aef8a30a2bff309fcdaaf39 100644
|
| --- a/webrtc/modules/video_coding/video_sender.cc
|
| +++ b/webrtc/modules/video_coding/video_sender.cc
|
| @@ -103,6 +103,11 @@ int32_t VideoSender::RegisterSendCodec(const VideoCodec* sendCodec,
|
| numLayers = sendCodec->VP8().numberOfTemporalLayers;
|
| } else if (sendCodec->codecType == kVideoCodecVP9) {
|
| numLayers = sendCodec->VP9().numberOfTemporalLayers;
|
| + } else if (sendCodec->codecType == kVideoCodecGeneric &&
|
| + sendCodec->numberOfSimulcastStreams > 0) {
|
| + // This is mainly for unit testing, disabling frame dropping.
|
| + // TODO(sprang): Add a better way to disable frame dropping.
|
| + numLayers = sendCodec->simulcastStream[0].numberOfTemporalLayers;
|
| } else {
|
| numLayers = 1;
|
| }
|
| @@ -197,13 +202,17 @@ EncoderParameters VideoSender::UpdateEncoderParameters(
|
| input_frame_rate = current_codec_.maxFramerate;
|
|
|
| BitrateAllocation bitrate_allocation;
|
| - if (bitrate_allocator) {
|
| - bitrate_allocation = bitrate_allocator->GetAllocation(video_target_rate_bps,
|
| - input_frame_rate);
|
| - } else {
|
| - DefaultVideoBitrateAllocator default_allocator(current_codec_);
|
| - bitrate_allocation = default_allocator.GetAllocation(video_target_rate_bps,
|
| - input_frame_rate);
|
| + // Only call allocators if bitrate > 0 (ie, not suspended), otherwise they
|
| + // might cap the bitrate to the min bitrate configured.
|
| + if (target_bitrate_bps > 0) {
|
| + if (bitrate_allocator) {
|
| + bitrate_allocation = bitrate_allocator->GetAllocation(
|
| + video_target_rate_bps, input_frame_rate);
|
| + } else {
|
| + DefaultVideoBitrateAllocator default_allocator(current_codec_);
|
| + bitrate_allocation = default_allocator.GetAllocation(
|
| + video_target_rate_bps, input_frame_rate);
|
| + }
|
| }
|
| EncoderParameters new_encoder_params = {bitrate_allocation, params.loss_rate,
|
| params.rtt, input_frame_rate};
|
| @@ -221,7 +230,7 @@ void VideoSender::UpdateChannelParemeters(
|
| encoder_params_.target_bitrate.get_sum_bps());
|
| target_rate = encoder_params_.target_bitrate;
|
| }
|
| - if (bitrate_updated_callback)
|
| + if (bitrate_updated_callback && target_rate.get_sum_bps() > 0)
|
| bitrate_updated_callback->OnBitrateAllocationUpdated(target_rate);
|
| }
|
|
|
| @@ -236,7 +245,7 @@ int32_t VideoSender::SetChannelParameters(
|
| encoder_params.rtt = rtt;
|
| encoder_params = UpdateEncoderParameters(encoder_params, bitrate_allocator,
|
| target_bitrate_bps);
|
| - if (bitrate_updated_callback) {
|
| + if (bitrate_updated_callback && target_bitrate_bps > 0) {
|
| bitrate_updated_callback->OnBitrateAllocationUpdated(
|
| encoder_params.target_bitrate);
|
| }
|
|
|