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 |