Index: webrtc/modules/video_coding/main/source/content_metrics_processing.cc |
diff --git a/webrtc/modules/video_coding/main/source/content_metrics_processing.cc b/webrtc/modules/video_coding/main/source/content_metrics_processing.cc |
deleted file mode 100644 |
index ae5e633316d52121bae74f19c288f1bd126967f0..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/video_coding/main/source/content_metrics_processing.cc |
+++ /dev/null |
@@ -1,125 +0,0 @@ |
-/* |
- * Copyright (c) 2012 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_coding/main/source/content_metrics_processing.h" |
- |
-#include <math.h> |
- |
-#include "webrtc/modules/include/module_common_types.h" |
-#include "webrtc/modules/video_coding/main/interface/video_coding_defines.h" |
- |
-namespace webrtc { |
-////////////////////////////////// |
-/// VCMContentMetricsProcessing // |
-////////////////////////////////// |
- |
-VCMContentMetricsProcessing::VCMContentMetricsProcessing() |
- : recursive_avg_factor_(1 / 150.0f), // matched to 30fps. |
- frame_cnt_uniform_avg_(0), |
- avg_motion_level_(0.0f), |
- avg_spatial_level_(0.0f) { |
- recursive_avg_ = new VideoContentMetrics(); |
- uniform_avg_ = new VideoContentMetrics(); |
-} |
- |
-VCMContentMetricsProcessing::~VCMContentMetricsProcessing() { |
- delete recursive_avg_; |
- delete uniform_avg_; |
-} |
- |
-int VCMContentMetricsProcessing::Reset() { |
- recursive_avg_->Reset(); |
- uniform_avg_->Reset(); |
- frame_cnt_uniform_avg_ = 0; |
- avg_motion_level_ = 0.0f; |
- avg_spatial_level_ = 0.0f; |
- return VCM_OK; |
-} |
- |
-void VCMContentMetricsProcessing::UpdateFrameRate(uint32_t frameRate) { |
- // Update factor for recursive averaging. |
- recursive_avg_factor_ = static_cast<float> (1000.0f) / |
- static_cast<float>(frameRate * kQmMinIntervalMs); |
-} |
- |
-VideoContentMetrics* VCMContentMetricsProcessing::LongTermAvgData() { |
- return recursive_avg_; |
-} |
- |
-VideoContentMetrics* VCMContentMetricsProcessing::ShortTermAvgData() { |
- if (frame_cnt_uniform_avg_ == 0) { |
- return NULL; |
- } |
- // Two metrics are used: motion and spatial level. |
- uniform_avg_->motion_magnitude = avg_motion_level_ / |
- static_cast<float>(frame_cnt_uniform_avg_); |
- uniform_avg_->spatial_pred_err = avg_spatial_level_ / |
- static_cast<float>(frame_cnt_uniform_avg_); |
- return uniform_avg_; |
-} |
- |
-void VCMContentMetricsProcessing::ResetShortTermAvgData() { |
- // Reset. |
- avg_motion_level_ = 0.0f; |
- avg_spatial_level_ = 0.0f; |
- frame_cnt_uniform_avg_ = 0; |
-} |
- |
-int VCMContentMetricsProcessing::UpdateContentData( |
- const VideoContentMetrics *contentMetrics) { |
- if (contentMetrics == NULL) { |
- return VCM_OK; |
- } |
- return ProcessContent(contentMetrics); |
-} |
- |
-int VCMContentMetricsProcessing::ProcessContent( |
- const VideoContentMetrics *contentMetrics) { |
- // Update the recursive averaged metrics: average is over longer window |
- // of time: over QmMinIntervalMs ms. |
- UpdateRecursiveAvg(contentMetrics); |
- // Update the uniform averaged metrics: average is over shorter window |
- // of time: based on ~RTCP reports. |
- UpdateUniformAvg(contentMetrics); |
- return VCM_OK; |
-} |
- |
-void VCMContentMetricsProcessing::UpdateUniformAvg( |
- const VideoContentMetrics *contentMetrics) { |
- // Update frame counter. |
- frame_cnt_uniform_avg_ += 1; |
- // Update averaged metrics: motion and spatial level are used. |
- avg_motion_level_ += contentMetrics->motion_magnitude; |
- avg_spatial_level_ += contentMetrics->spatial_pred_err; |
- return; |
-} |
- |
-void VCMContentMetricsProcessing::UpdateRecursiveAvg( |
- const VideoContentMetrics *contentMetrics) { |
- |
- // Spatial metrics: 2x2, 1x2(H), 2x1(V). |
- recursive_avg_->spatial_pred_err = (1 - recursive_avg_factor_) * |
- recursive_avg_->spatial_pred_err + |
- recursive_avg_factor_ * contentMetrics->spatial_pred_err; |
- |
- recursive_avg_->spatial_pred_err_h = (1 - recursive_avg_factor_) * |
- recursive_avg_->spatial_pred_err_h + |
- recursive_avg_factor_ * contentMetrics->spatial_pred_err_h; |
- |
- recursive_avg_->spatial_pred_err_v = (1 - recursive_avg_factor_) * |
- recursive_avg_->spatial_pred_err_v + |
- recursive_avg_factor_ * contentMetrics->spatial_pred_err_v; |
- |
- // Motion metric: Derived from NFD (normalized frame difference). |
- recursive_avg_->motion_magnitude = (1 - recursive_avg_factor_) * |
- recursive_avg_->motion_magnitude + |
- recursive_avg_factor_ * contentMetrics->motion_magnitude; |
-} |
-} // namespace |