Index: webrtc/modules/video_processing/brightness_detection.cc |
diff --git a/webrtc/modules/video_processing/brightness_detection.cc b/webrtc/modules/video_processing/brightness_detection.cc |
deleted file mode 100644 |
index 7455cf975917c08c629e4e63d3fd9c083d11e1ee..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/video_processing/brightness_detection.cc |
+++ /dev/null |
@@ -1,136 +0,0 @@ |
-/* |
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-#include "webrtc/modules/video_processing/brightness_detection.h" |
- |
-#include <math.h> |
- |
-#include "webrtc/modules/video_processing/include/video_processing.h" |
- |
-namespace webrtc { |
- |
-VPMBrightnessDetection::VPMBrightnessDetection() { |
- Reset(); |
-} |
- |
-VPMBrightnessDetection::~VPMBrightnessDetection() {} |
- |
-void VPMBrightnessDetection::Reset() { |
- frame_cnt_bright_ = 0; |
- frame_cnt_dark_ = 0; |
-} |
- |
-int32_t VPMBrightnessDetection::ProcessFrame( |
- const VideoFrame& frame, |
- const VideoProcessing::FrameStats& stats) { |
- if (frame.IsZeroSize()) { |
- return VPM_PARAMETER_ERROR; |
- } |
- int width = frame.width(); |
- int height = frame.height(); |
- |
- if (!VideoProcessing::ValidFrameStats(stats)) { |
- return VPM_PARAMETER_ERROR; |
- } |
- |
- const uint8_t frame_cnt_alarm = 2; |
- |
- // Get proportion in lowest bins. |
- uint8_t low_th = 20; |
- float prop_low = 0; |
- for (uint32_t i = 0; i < low_th; i++) { |
- prop_low += stats.hist[i]; |
- } |
- prop_low /= stats.num_pixels; |
- |
- // Get proportion in highest bins. |
- unsigned char high_th = 230; |
- float prop_high = 0; |
- for (uint32_t i = high_th; i < 256; i++) { |
- prop_high += stats.hist[i]; |
- } |
- prop_high /= stats.num_pixels; |
- |
- if (prop_high < 0.4) { |
- if (stats.mean < 90 || stats.mean > 170) { |
- // Standard deviation of Y |
- const uint8_t* buffer = frame.buffer(kYPlane); |
- float std_y = 0; |
- for (int h = 0; h < height; h += (1 << stats.sub_sampling_factor)) { |
- int row = h * width; |
- for (int w = 0; w < width; w += (1 << stats.sub_sampling_factor)) { |
- std_y += |
- (buffer[w + row] - stats.mean) * (buffer[w + row] - stats.mean); |
- } |
- } |
- std_y = sqrt(std_y / stats.num_pixels); |
- |
- // Get percentiles. |
- uint32_t sum = 0; |
- uint32_t median_y = 140; |
- uint32_t perc05 = 0; |
- uint32_t perc95 = 255; |
- float pos_perc05 = stats.num_pixels * 0.05f; |
- float pos_median = stats.num_pixels * 0.5f; |
- float posPerc95 = stats.num_pixels * 0.95f; |
- for (uint32_t i = 0; i < 256; i++) { |
- sum += stats.hist[i]; |
- if (sum < pos_perc05) |
- perc05 = i; // 5th perc. |
- if (sum < pos_median) |
- median_y = i; // 50th perc. |
- if (sum < posPerc95) |
- perc95 = i; // 95th perc. |
- else |
- break; |
- } |
- |
- // Check if image is too dark |
- if ((std_y < 55) && (perc05 < 50)) { |
- if (median_y < 60 || stats.mean < 80 || perc95 < 130 || |
- prop_low > 0.20) { |
- frame_cnt_dark_++; |
- } else { |
- frame_cnt_dark_ = 0; |
- } |
- } else { |
- frame_cnt_dark_ = 0; |
- } |
- |
- // Check if image is too bright |
- if ((std_y < 52) && (perc95 > 200) && (median_y > 160)) { |
- if (median_y > 185 || stats.mean > 185 || perc05 > 140 || |
- prop_high > 0.25) { |
- frame_cnt_bright_++; |
- } else { |
- frame_cnt_bright_ = 0; |
- } |
- } else { |
- frame_cnt_bright_ = 0; |
- } |
- } else { |
- frame_cnt_dark_ = 0; |
- frame_cnt_bright_ = 0; |
- } |
- } else { |
- frame_cnt_bright_++; |
- frame_cnt_dark_ = 0; |
- } |
- |
- if (frame_cnt_dark_ > frame_cnt_alarm) { |
- return VideoProcessing::kDarkWarning; |
- } else if (frame_cnt_bright_ > frame_cnt_alarm) { |
- return VideoProcessing::kBrightWarning; |
- } else { |
- return VideoProcessing::kNoWarning; |
- } |
-} |
- |
-} // namespace webrtc |