| Index: webrtc/modules/video_coding/utility/quality_scaler.cc
|
| diff --git a/webrtc/modules/video_coding/utility/quality_scaler.cc b/webrtc/modules/video_coding/utility/quality_scaler.cc
|
| index 76bf9f5b0399ed0d7558eed398f6894797490672..a46e8502cb310e459c77a97f0fd0b4ab6264b86e 100644
|
| --- a/webrtc/modules/video_coding/utility/quality_scaler.cc
|
| +++ b/webrtc/modules/video_coding/utility/quality_scaler.cc
|
| @@ -14,6 +14,8 @@ namespace webrtc {
|
| static const int kMinFps = 10;
|
| static const int kMeasureSeconds = 5;
|
| static const int kFramedropPercentThreshold = 60;
|
| +static const int kHdResolutionThreshold = 700 * 500;
|
| +static const int kHdBitrateThresholdKbps = 500;
|
|
|
| const int QualityScaler::kDefaultLowQpDenominator = 3;
|
| // Note that this is the same for width and height to permit 120x90 in both
|
| @@ -30,11 +32,27 @@ QualityScaler::QualityScaler()
|
|
|
| void QualityScaler::Init(int low_qp_threshold,
|
| int high_qp_threshold,
|
| - bool use_framerate_reduction) {
|
| + bool use_framerate_reduction,
|
| + int initial_bitrate_kbps,
|
| + int width,
|
| + int height) {
|
| ClearSamples();
|
| low_qp_threshold_ = low_qp_threshold;
|
| high_qp_threshold_ = high_qp_threshold;
|
| use_framerate_reduction_ = use_framerate_reduction;
|
| + // TODO(glaznev): Investigate using thresholds for other resolutions
|
| + // or threshold tables.
|
| + if (initial_bitrate_kbps > 0 &&
|
| + initial_bitrate_kbps < kHdBitrateThresholdKbps) {
|
| + // Start scaling to roughly VGA.
|
| + while (width * height > kHdResolutionThreshold) {
|
| + ++downscale_shift_;
|
| + width /= 2;
|
| + height /= 2;
|
| + }
|
| + }
|
| + res_.width = width;
|
| + res_.height = height;
|
| target_framerate_ = -1;
|
| }
|
|
|
|
|