Chromium Code Reviews| Index: webrtc/media/engine/videoencodersoftwarefallbackwrapper.cc |
| diff --git a/webrtc/media/engine/videoencodersoftwarefallbackwrapper.cc b/webrtc/media/engine/videoencodersoftwarefallbackwrapper.cc |
| index 9f5dedabc0451820b3990362720c508c2d6ecf3a..2bc74a7e724578392b6bf4f544bdc2c1c76da0dd 100644 |
| --- a/webrtc/media/engine/videoencodersoftwarefallbackwrapper.cc |
| +++ b/webrtc/media/engine/videoencodersoftwarefallbackwrapper.cc |
| @@ -50,12 +50,14 @@ void GetForcedFallbackParamsFromFieldTrialGroup(uint32_t* param_low_kbps, |
| int low_kbps; |
| int high_kbps; |
| int min_low_ms; |
| - if (sscanf(group.c_str(), "Enabled-%d,%d,%d", &low_kbps, &high_kbps, |
| - &min_low_ms) != 3) { |
| + int min_pixels; |
| + if (sscanf(group.c_str(), "Enabled-%d,%d,%d,%d", &low_kbps, &high_kbps, |
| + &min_low_ms, &min_pixels) != 4) { |
| LOG(LS_WARNING) << "Invalid number of forced fallback parameters provided."; |
| return; |
| } |
| - if (min_low_ms <= 0 || low_kbps <= 0 || high_kbps <= low_kbps) { |
| + if (min_low_ms <= 0 || min_pixels <= 0 || low_kbps <= 0 || |
| + high_kbps <= low_kbps) { |
| LOG(LS_WARNING) << "Invalid forced fallback parameter value provided."; |
| return; |
| } |
| @@ -245,6 +247,8 @@ bool VideoEncoderSoftwareFallbackWrapper::SupportsNativeHandle() const { |
| VideoEncoder::ScalingSettings |
| VideoEncoderSoftwareFallbackWrapper::GetScalingSettings() const { |
| + if (forced_fallback_possible_ && fallback_encoder_) |
|
brandtr
2017/08/17 12:06:24
Unrelated to the forcing of the fallback, should w
åsapersson
2017/08/17 13:22:36
Since not related to this CL, perhaps make this ch
|
| + return fallback_encoder_->GetScalingSettings(); |
| return encoder_->GetScalingSettings(); |
| } |
| @@ -272,8 +276,10 @@ bool VideoEncoderSoftwareFallbackWrapper::TryReleaseForcedFallbackEncoder() { |
| if (!IsForcedFallbackActive()) |
| return false; |
| - if (!forced_fallback_.ShouldStop(bitrate_allocation_.get_sum_kbps())) |
| + if (!forced_fallback_.ShouldStop(bitrate_allocation_.get_sum_kbps(), |
| + codec_settings_)) { |
| return false; |
| + } |
| // Release the forced fallback encoder. |
| if (encoder_->InitEncode(&codec_settings_, number_of_cores_, |
| @@ -343,8 +349,10 @@ bool VideoEncoderSoftwareFallbackWrapper::ForcedFallbackParams::ShouldStart( |
| } |
| bool VideoEncoderSoftwareFallbackWrapper::ForcedFallbackParams::ShouldStop( |
| - uint32_t bitrate_kbps) const { |
| - return bitrate_kbps >= high_kbps; |
| + uint32_t bitrate_kbps, |
| + const VideoCodec& codec) const { |
| + return bitrate_kbps >= high_kbps && |
| + (codec.width * codec.height >= kMinPixelsStop); |
| } |
| } // namespace webrtc |