Remove the VPM denoiser.
The VPM denoiser give bad results, is slow and has not been used in
practice. Instead we use the VP8 denoiser. Testing this denoiser takes
up a lot of runtime on linux_memcheck (about 4 minutes) which we can do
without.
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16069004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6688 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/modules.gyp b/webrtc/modules/modules.gyp
index d054fe9..2a3ba74 100644
--- a/webrtc/modules/modules.gyp
+++ b/webrtc/modules/modules.gyp
@@ -249,7 +249,6 @@
'video_processing/main/test/unit_test/color_enhancement_test.cc',
'video_processing/main/test/unit_test/content_metrics_test.cc',
'video_processing/main/test/unit_test/deflickering_test.cc',
- 'video_processing/main/test/unit_test/denoising_test.cc',
'video_processing/main/test/unit_test/video_processing_unittest.cc',
'video_processing/main/test/unit_test/video_processing_unittest.h',
],
diff --git a/webrtc/modules/video_processing/BUILD.gn b/webrtc/modules/video_processing/BUILD.gn
index 724a9dc..f9412f9 100644
--- a/webrtc/modules/video_processing/BUILD.gn
+++ b/webrtc/modules/video_processing/BUILD.gn
@@ -25,8 +25,6 @@
"main/source/content_analysis.h",
"main/source/deflickering.cc",
"main/source/deflickering.h",
- "main/source/denoising.cc",
- "main/source/denoising.h",
"main/source/frame_preprocessor.cc",
"main/source/frame_preprocessor.h",
"main/source/spatial_resampler.cc",
diff --git a/webrtc/modules/video_processing/OWNERS b/webrtc/modules/video_processing/OWNERS
index d5ae847..037de93 100644
--- a/webrtc/modules/video_processing/OWNERS
+++ b/webrtc/modules/video_processing/OWNERS
@@ -1 +1,6 @@
+stefan@webrtc.org
+mikhal@webrtc.org
+marpan@webrtc.org
+henrik.lundin@webrtc.org
+
per-file BUILD.gn=kjellander@webrtc.org
diff --git a/webrtc/modules/video_processing/main/OWNERS b/webrtc/modules/video_processing/main/OWNERS
deleted file mode 100644
index 7183cf2..0000000
--- a/webrtc/modules/video_processing/main/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-stefan@webrtc.org
-mikhal@webrtc.org
-marpan@webrtc.org
-henrik.lundin@webrtc.org
diff --git a/webrtc/modules/video_processing/main/interface/video_processing.h b/webrtc/modules/video_processing/main/interface/video_processing.h
index 817d43d9..4df8812 100644
--- a/webrtc/modules/video_processing/main/interface/video_processing.h
+++ b/webrtc/modules/video_processing/main/interface/video_processing.h
@@ -177,17 +177,6 @@
virtual int32_t Deflickering(I420VideoFrame* frame, FrameStats* stats) = 0;
/**
- Denoises a video frame. Every frame from the stream should be passed in.
- Has a fixed-point implementation.
-
- \param[in,out] frame
- Pointer to the video frame.
-
- \return The number of modified pixels on success, -1 on failure.
- */
- virtual int32_t Denoising(I420VideoFrame* frame) = 0;
-
- /**
Detects if a video frame is excessively bright or dark. Returns a
warning if this is the case. Multiple frames should be passed in before
expecting a warning. Has a floating-point implementation.
diff --git a/webrtc/modules/video_processing/main/source/Android.mk b/webrtc/modules/video_processing/main/source/Android.mk
index 829fa96..62eb387 100644
--- a/webrtc/modules/video_processing/main/source/Android.mk
+++ b/webrtc/modules/video_processing/main/source/Android.mk
@@ -23,7 +23,6 @@
color_enhancement.cc \
content_analysis.cc \
deflickering.cc \
- denoising.cc \
frame_preprocessor.cc \
spatial_resampler.cc \
video_decimator.cc \
diff --git a/webrtc/modules/video_processing/main/source/denoising.cc b/webrtc/modules/video_processing/main/source/denoising.cc
deleted file mode 100644
index 4c8dcb4..0000000
--- a/webrtc/modules/video_processing/main/source/denoising.cc
+++ /dev/null
@@ -1,156 +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_processing/main/source/denoising.h"
-
-#include <string.h>
-
-namespace webrtc {
-// Down-sampling in time (unit: number of frames)
-enum { kSubsamplingTime = 0 };
-// Sub-sampling in width (unit: power of 2.
-enum { kSubsamplingWidth = 0 };
-// Sub-sampling in height (unit: power of 2)
-enum { kSubsamplingHeight = 0 };
-// (Q8) De-noising filter parameter
-enum { kDenoiseFiltParam = 179 };
-// (Q8) 1 - filter parameter
-enum { kDenoiseFiltParamRec = 77 };
-// (Q8) De-noising threshold level
-enum { kDenoiseThreshold = 19200 };
-
-VPMDenoising::VPMDenoising()
- : id_(0),
- moment1_(NULL),
- moment2_(NULL) {
- Reset();
-}
-
-VPMDenoising::~VPMDenoising() {
- if (moment1_) {
- delete [] moment1_;
- moment1_ = NULL;
-}
-
- if (moment2_) {
- delete [] moment2_;
- moment2_ = NULL;
- }
-}
-
-int32_t VPMDenoising::ChangeUniqueId(const int32_t id) {
- id_ = id;
- return VPM_OK;
-}
-
-void VPMDenoising::Reset() {
- frame_size_ = 0;
- denoise_frame_cnt_ = 0;
-
- if (moment1_) {
- delete [] moment1_;
- moment1_ = NULL;
- }
-
- if (moment2_) {
- delete [] moment2_;
- moment2_ = NULL;
- }
-}
-
-int32_t VPMDenoising::ProcessFrame(I420VideoFrame* frame) {
- assert(frame);
- int32_t thevar;
- int k;
- int jsub, ksub;
- int32_t diff0;
- uint32_t tmp_moment1;
- uint32_t tmp_moment2;
- uint32_t tmp;
- int32_t num_pixels_changed = 0;
-
- if (frame->IsZeroSize()) {
- return VPM_GENERAL_ERROR;
- }
-
- int width = frame->width();
- int height = frame->height();
-
- /* Size of luminance component */
- const uint32_t y_size = height * width;
-
- /* Initialization */
- if (y_size != frame_size_) {
- delete [] moment1_;
- moment1_ = NULL;
-
- delete [] moment2_;
- moment2_ = NULL;
- }
- frame_size_ = y_size;
-
- if (!moment1_) {
- moment1_ = new uint32_t[y_size];
- memset(moment1_, 0, sizeof(uint32_t)*y_size);
- }
-
- if (!moment2_) {
- moment2_ = new uint32_t[y_size];
- memset(moment2_, 0, sizeof(uint32_t)*y_size);
- }
-
- /* Apply de-noising on each pixel, but update variance sub-sampled */
- uint8_t* buffer = frame->buffer(kYPlane);
- for (int i = 0; i < height; i++) { // Collect over height
- k = i * width;
- ksub = ((i >> kSubsamplingHeight) << kSubsamplingHeight) * width;
- for (int j = 0; j < width; j++) { // Collect over width
- jsub = ((j >> kSubsamplingWidth) << kSubsamplingWidth);
- /* Update mean value for every pixel and every frame */
- tmp_moment1 = moment1_[k + j];
- tmp_moment1 *= kDenoiseFiltParam; // Q16
- tmp_moment1 += ((kDenoiseFiltParamRec * ((uint32_t)buffer[k + j])) << 8);
- tmp_moment1 >>= 8; // Q8
- moment1_[k + j] = tmp_moment1;
-
- tmp_moment2 = moment2_[ksub + jsub];
- if ((ksub == k) && (jsub == j) && (denoise_frame_cnt_ == 0)) {
- tmp = ((uint32_t)buffer[k + j] *
- (uint32_t)buffer[k + j]);
- tmp_moment2 *= kDenoiseFiltParam; // Q16
- tmp_moment2 += ((kDenoiseFiltParamRec * tmp) << 8);
- tmp_moment2 >>= 8; // Q8
- }
- moment2_[k + j] = tmp_moment2;
- /* Current event = deviation from mean value */
- diff0 = ((int32_t)buffer[k + j] << 8) - moment1_[k + j];
- /* Recent events = variance (variations over time) */
- thevar = moment2_[k + j];
- thevar -= ((moment1_[k + j] * moment1_[k + j]) >> 8);
- // De-noising criteria, i.e., when should we replace a pixel by its mean.
- // 1) recent events are minor.
- // 2) current events are minor.
- if ((thevar < kDenoiseThreshold)
- && ((diff0 * diff0 >> 8) < kDenoiseThreshold)) {
- // Replace with mean.
- buffer[k + j] = (uint8_t)(moment1_[k + j] >> 8);
- num_pixels_changed++;
- }
- }
- }
-
- denoise_frame_cnt_++;
- if (denoise_frame_cnt_ > kSubsamplingTime)
- denoise_frame_cnt_ = 0;
-
- return num_pixels_changed;
-}
-
-} // namespace
diff --git a/webrtc/modules/video_processing/main/source/denoising.h b/webrtc/modules/video_processing/main/source/denoising.h
deleted file mode 100644
index 60645fb..0000000
--- a/webrtc/modules/video_processing/main/source/denoising.h
+++ /dev/null
@@ -1,42 +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.
- */
-
-#ifndef WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_DENOISING_H_
-#define WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_DENOISING_H_
-
-#include "webrtc/modules/video_processing/main/interface/video_processing.h"
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-
-class VPMDenoising {
- public:
- VPMDenoising();
- ~VPMDenoising();
-
- int32_t ChangeUniqueId(int32_t id);
-
- void Reset();
-
- int32_t ProcessFrame(I420VideoFrame* frame);
-
- private:
- int32_t id_;
-
- uint32_t* moment1_; // (Q8) First order moment (mean).
- uint32_t* moment2_; // (Q8) Second order moment.
- uint32_t frame_size_; // Size (# of pixels) of frame.
- int denoise_frame_cnt_; // Counter for subsampling in time.
-};
-
-} // namespace webrtc
-
-#endif // WEBRTC_MODULES_VIDEO_PROCESSING_MAIN_SOURCE_DENOISING_H_
-
diff --git a/webrtc/modules/video_processing/main/source/video_processing.gypi b/webrtc/modules/video_processing/main/source/video_processing.gypi
index 7a0279e..f62aa18 100644
--- a/webrtc/modules/video_processing/main/source/video_processing.gypi
+++ b/webrtc/modules/video_processing/main/source/video_processing.gypi
@@ -31,8 +31,6 @@
'content_analysis.h',
'deflickering.cc',
'deflickering.h',
- 'denoising.cc',
- 'denoising.h',
'frame_preprocessor.cc',
'frame_preprocessor.h',
'spatial_resampler.cc',
diff --git a/webrtc/modules/video_processing/main/source/video_processing_impl.cc b/webrtc/modules/video_processing/main/source/video_processing_impl.cc
index 3560030..8bc5bf0 100644
--- a/webrtc/modules/video_processing/main/source/video_processing_impl.cc
+++ b/webrtc/modules/video_processing/main/source/video_processing_impl.cc
@@ -51,7 +51,6 @@
id_ = id;
brightness_detection_.ChangeUniqueId(id);
deflickering_.ChangeUniqueId(id);
- denoising_.ChangeUniqueId(id);
frame_pre_processor_.ChangeUniqueId(id);
return VPM_OK;
}
@@ -66,7 +65,6 @@
mutex_(*CriticalSectionWrapper::CreateCriticalSection()) {
brightness_detection_.ChangeUniqueId(id);
deflickering_.ChangeUniqueId(id);
- denoising_.ChangeUniqueId(id);
frame_pre_processor_.ChangeUniqueId(id);
}
@@ -77,7 +75,6 @@
void VideoProcessingModuleImpl::Reset() {
CriticalSectionScoped mutex(&mutex_);
deflickering_.Reset();
- denoising_.Reset();
brightness_detection_.Reset();
frame_pre_processor_.Reset();
}
@@ -146,11 +143,6 @@
return deflickering_.ProcessFrame(frame, stats);
}
-int32_t VideoProcessingModuleImpl::Denoising(I420VideoFrame* frame) {
- CriticalSectionScoped mutex(&mutex_);
- return denoising_.ProcessFrame(frame);
-}
-
int32_t VideoProcessingModuleImpl::BrightnessDetection(
const I420VideoFrame& frame,
const FrameStats& stats) {
diff --git a/webrtc/modules/video_processing/main/source/video_processing_impl.h b/webrtc/modules/video_processing/main/source/video_processing_impl.h
index deae6ff..6fe617d 100644
--- a/webrtc/modules/video_processing/main/source/video_processing_impl.h
+++ b/webrtc/modules/video_processing/main/source/video_processing_impl.h
@@ -16,7 +16,6 @@
#include "webrtc/modules/video_processing/main/source/brightness_detection.h"
#include "webrtc/modules/video_processing/main/source/color_enhancement.h"
#include "webrtc/modules/video_processing/main/source/deflickering.h"
-#include "webrtc/modules/video_processing/main/source/denoising.h"
#include "webrtc/modules/video_processing/main/source/frame_preprocessor.h"
namespace webrtc {
@@ -36,8 +35,6 @@
virtual int32_t Deflickering(I420VideoFrame* frame, FrameStats* stats);
- virtual int32_t Denoising(I420VideoFrame* frame);
-
virtual int32_t BrightnessDetection(const I420VideoFrame& frame,
const FrameStats& stats);
@@ -74,7 +71,6 @@
int32_t id_;
CriticalSectionWrapper& mutex_;
VPMDeflickering deflickering_;
- VPMDenoising denoising_;
VPMBrightnessDetection brightness_detection_;
VPMFramePreprocessor frame_pre_processor_;
};
diff --git a/webrtc/modules/video_processing/main/test/unit_test/denoising_test.cc b/webrtc/modules/video_processing/main/test/unit_test/denoising_test.cc
deleted file mode 100644
index c00db6a..0000000
--- a/webrtc/modules/video_processing/main/test/unit_test/denoising_test.cc
+++ /dev/null
@@ -1,136 +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 <stdio.h>
-#include <stdlib.h>
-
-#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
-#include "webrtc/modules/video_processing/main/interface/video_processing.h"
-#include "webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.h"
-#include "webrtc/system_wrappers/interface/tick_util.h"
-#include "webrtc/test/testsupport/fileutils.h"
-#include "webrtc/test/testsupport/gtest_disable.h"
-
-namespace webrtc {
-
-TEST_F(VideoProcessingModuleTest, DISABLED_ON_ANDROID(Denoising))
-{
- enum { NumRuns = 10 };
- uint32_t frameNum = 0;
-
- int64_t min_runtime = 0;
- int64_t avg_runtime = 0;
-
- const std::string denoise_filename =
- webrtc::test::OutputPath() + "denoise_testfile.yuv";
- FILE* denoiseFile = fopen(denoise_filename.c_str(), "wb");
- ASSERT_TRUE(denoiseFile != NULL) <<
- "Could not open output file: " << denoise_filename << "\n";
-
- const std::string noise_filename =
- webrtc::test::OutputPath() + "noise_testfile.yuv";
- FILE* noiseFile = fopen(noise_filename.c_str(), "wb");
- ASSERT_TRUE(noiseFile != NULL) <<
- "Could not open noisy file: " << noise_filename << "\n";
-
- printf("\nRun time [us / frame]:\n");
- for (uint32_t run_idx = 0; run_idx < NumRuns; run_idx++)
- {
- TickTime t0;
- TickTime t1;
- TickInterval acc_ticks;
- int32_t modifiedPixels = 0;
-
- frameNum = 0;
- scoped_ptr<uint8_t[]> video_buffer(new uint8_t[frame_length_]);
- while (fread(video_buffer.get(), 1, frame_length_, source_file_) ==
- frame_length_)
- {
- EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0,
- width_, height_,
- 0, kRotateNone, &video_frame_));
- frameNum++;
- uint8_t* sourceBuffer = video_frame_.buffer(kYPlane);
-
- // Add noise to a part in video stream
- // Random noise
- // TODO: investigate the effectiveness of this test.
-
- for (int ir = 0; ir < height_; ir++)
- {
- uint32_t ik = ir * width_;
- for (int ic = 0; ic < width_; ic++)
- {
- uint8_t r = rand() % 16;
- r -= 8;
- if (ir < height_ / 4)
- r = 0;
- if (ir >= 3 * height_ / 4)
- r = 0;
- if (ic < width_ / 4)
- r = 0;
- if (ic >= 3 * width_ / 4)
- r = 0;
-
- /*uint8_t pixelValue = 0;
- if (ir >= height_ / 2)
- { // Region 3 or 4
- pixelValue = 170;
- }
- if (ic >= width_ / 2)
- { // Region 2 or 4
- pixelValue += 85;
- }
- pixelValue += r;
- sourceBuffer[ik + ic] = pixelValue;
- */
- sourceBuffer[ik + ic] += r;
- }
- }
-
- if (run_idx == 0)
- {
- if (PrintI420VideoFrame(video_frame_, noiseFile) < 0) {
- return;
- }
- }
-
- t0 = TickTime::Now();
- ASSERT_GE(modifiedPixels = vpm_->Denoising(&video_frame_), 0);
- t1 = TickTime::Now();
- acc_ticks += (t1 - t0);
-
- if (run_idx == 0)
- {
- if (PrintI420VideoFrame(video_frame_, noiseFile) < 0) {
- return;
- }
- }
- }
- ASSERT_NE(0, feof(source_file_)) << "Error reading source file";
-
- printf("%u\n", static_cast<int>(acc_ticks.Microseconds() / frameNum));
- if (acc_ticks.Microseconds() < min_runtime || run_idx == 0)
- {
- min_runtime = acc_ticks.Microseconds();
- }
- avg_runtime += acc_ticks.Microseconds();
-
- rewind(source_file_);
- }
- ASSERT_EQ(0, fclose(denoiseFile));
- ASSERT_EQ(0, fclose(noiseFile));
- printf("\nAverage run time = %d us / frame\n",
- static_cast<int>(avg_runtime / frameNum / NumRuns));
- printf("Min run time = %d us / frame\n\n",
- static_cast<int>(min_runtime / frameNum));
-}
-
-} // namespace webrtc
diff --git a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
index 973552c..b124503 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
@@ -82,8 +82,6 @@
EXPECT_EQ(-1, vpm_->Deflickering(&videoFrame, &stats));
- EXPECT_EQ(-1, vpm_->Denoising(&videoFrame));
-
EXPECT_EQ(-3, vpm_->BrightnessDetection(videoFrame, stats));
}
@@ -113,8 +111,6 @@
EXPECT_EQ(-1, vpm_->Deflickering(&video_frame_, &stats));
- EXPECT_EQ(-1, vpm_->Denoising(&video_frame_));
-
EXPECT_EQ(-3, vpm_->BrightnessDetection(video_frame_, stats));
EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->SetTargetResolution(0,0,0));
@@ -145,19 +141,6 @@
ASSERT_EQ(frame_length_, fread(video_buffer.get(), 1, frame_length_,
source_file_));
- // Using ConvertToI420 to add stride to the image.
- EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0,
- width_, height_,
- 0, kRotateNone, &video_frame_));
- video_frame2.CopyFrame(video_frame_);
- EXPECT_TRUE(CompareFrames(video_frame_, video_frame2));
- ASSERT_GE(vpm_->Denoising(&video_frame_), 0);
- vpm_->Reset();
- ASSERT_GE(vpm_->Denoising(&video_frame2), 0);
- EXPECT_TRUE(CompareFrames(video_frame_, video_frame2));
-
- ASSERT_EQ(frame_length_, fread(video_buffer.get(), 1, frame_length_,
- source_file_));
EXPECT_EQ(0, ConvertToI420(kI420, video_buffer.get(), 0, 0,
width_, height_,
0, kRotateNone, &video_frame_));
diff --git a/webrtc/video_engine/include/vie_errors.h b/webrtc/video_engine/include/vie_errors.h
index 1e9be1d..24aa098 100644
--- a/webrtc/video_engine/include/vie_errors.h
+++ b/webrtc/video_engine/include/vie_errors.h
@@ -103,8 +103,8 @@
kViEImageProcessInvalidCaptureId, // No capture device exist with the provided capture id.
kViEImageProcessFilterExists, // RegisterCaptureEffectFilter,RegisterSendEffectFilter,RegisterRenderEffectFilter - Effect filter already registered.
kViEImageProcessFilterDoesNotExist, // DeRegisterCaptureEffectFilter,DeRegisterSendEffectFilter,DeRegisterRenderEffectFilter - Effect filter not registered.
- kViEImageProcessAlreadyEnabled, // EnableDeflickering,EnableDenoising,EnableColorEnhancement- Function already enabled.
- kViEImageProcessAlreadyDisabled, // EnableDeflickering,EnableDenoising,EnableColorEnhancement- Function already disabled.
+ kViEImageProcessAlreadyEnabled, // EnableDeflickering,EnableColorEnhancement- Function already enabled.
+ kViEImageProcessAlreadyDisabled, // EnableDeflickering,EnableColorEnhancement- Function already disabled.
kViEImageProcessUnknownError // An unknown error has occurred. Check the log file.
};
diff --git a/webrtc/video_engine/include/vie_image_process.h b/webrtc/video_engine/include/vie_image_process.h
index e24e98f..8bb895f 100644
--- a/webrtc/video_engine/include/vie_image_process.h
+++ b/webrtc/video_engine/include/vie_image_process.h
@@ -11,7 +11,6 @@
// This sub-API supports the following functionalities:
// - Effect filters
// - Deflickering
-// - Denoising
// - Color enhancement
#ifndef WEBRTC_VIDEO_ENGINE_INCLUDE_VIE_IMAGE_PROCESS_H_
@@ -85,9 +84,10 @@
// not all of them succeed. Enabling this function will remove the flicker.
virtual int EnableDeflickering(const int capture_id, const bool enable) = 0;
- // Some cameras produce very noisy captured images, especially in low‐light
- // conditions. This functionality will reduce the camera noise.
- virtual int EnableDenoising(const int capture_id, const bool enable) = 0;
+ // TODO(pbos): Remove this function when removed from fakewebrtcvideoengine.h.
+ virtual int EnableDenoising(const int capture_id, const bool enable) {
+ return -1;
+ }
// This function enhances the colors on the decoded video stream, enabled by
// default.
diff --git a/webrtc/video_engine/test/auto_test/source/vie_autotest_image_process.cc b/webrtc/video_engine/test/auto_test/source/vie_autotest_image_process.cc
index 5424e92..c6f0a05 100644
--- a/webrtc/video_engine/test/auto_test/source/vie_autotest_image_process.cc
+++ b/webrtc/video_engine/test/auto_test/source/vie_autotest_image_process.cc
@@ -198,20 +198,6 @@
tbCapture.captureId, effectFilter));
//
- // Denoising
- //
- EXPECT_EQ(0, ViE.image_process->EnableDenoising(tbCapture.captureId, true));
- // If the denoising is already enabled, it will just reuturn 0.
- EXPECT_EQ(0, ViE.image_process->EnableDenoising(tbCapture.captureId, true));
- EXPECT_EQ(0, ViE.image_process->EnableDenoising(
- tbCapture.captureId, false));
- // If the denoising is already disabled, it will just reuturn 0.
- EXPECT_EQ(0, ViE.image_process->EnableDenoising(
- tbCapture.captureId, false));
- EXPECT_NE(0, ViE.image_process->EnableDenoising(
- tbChannel.videoChannel, true));
-
- //
// Deflickering
//
EXPECT_EQ(0, ViE.image_process->EnableDeflickering(
diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc
index 30d6633..231dcfb 100644
--- a/webrtc/video_engine/vie_capturer.cc
+++ b/webrtc/video_engine/vie_capturer.cc
@@ -56,7 +56,6 @@
brightness_frame_stats_(NULL),
current_brightness_level_(Normal),
reported_brightness_level_(Normal),
- denoising_enabled_(false),
observer_cs_(CriticalSectionWrapper::CreateCriticalSection()),
observer_(NULL),
overuse_detector_(new OveruseFrameDetector(Clock::GetRealTimeClock())) {
@@ -404,28 +403,6 @@
return 0;
}
-int32_t ViECapturer::EnableDenoising(bool enable) {
- CriticalSectionScoped cs(deliver_cs_.get());
- if (enable) {
- if (denoising_enabled_) {
- // Already enabled, nothing need to be done.
- return 0;
- }
- denoising_enabled_ = true;
- if (IncImageProcRefCount() != 0) {
- return -1;
- }
- } else {
- if (denoising_enabled_ == false) {
- // Already disabled, nothing need to be done.
- return 0;
- }
- denoising_enabled_ = false;
- DecImageProcRefCount();
- }
- return 0;
-}
-
int32_t ViECapturer::EnableDeflickering(bool enable) {
CriticalSectionScoped cs(deliver_cs_.get());
if (enable) {
@@ -516,9 +493,6 @@
LOG_F(LS_ERROR) << "Could not get frame stats.";
}
}
- if (denoising_enabled_) {
- image_proc_module_->Denoising(video_frame);
- }
if (brightness_frame_stats_) {
if (image_proc_module_->GetFrameStats(brightness_frame_stats_,
*video_frame) == 0) {
diff --git a/webrtc/video_engine/vie_capturer.h b/webrtc/video_engine/vie_capturer.h
index 8e89357..2464ca0 100644
--- a/webrtc/video_engine/vie_capturer.h
+++ b/webrtc/video_engine/vie_capturer.h
@@ -94,7 +94,6 @@
// Effect filter.
int32_t RegisterEffectFilter(ViEEffectFilter* effect_filter);
- int32_t EnableDenoising(bool enable);
int32_t EnableDeflickering(bool enable);
int32_t EnableBrightnessAlarm(bool enable);
@@ -180,7 +179,6 @@
VideoProcessingModule::FrameStats* brightness_frame_stats_;
Brightness current_brightness_level_;
Brightness reported_brightness_level_;
- bool denoising_enabled_;
// Statistics observer.
scoped_ptr<CriticalSectionWrapper> observer_cs_;
diff --git a/webrtc/video_engine/vie_image_process_impl.cc b/webrtc/video_engine/vie_image_process_impl.cc
index d089c04..13e520a 100644
--- a/webrtc/video_engine/vie_image_process_impl.cc
+++ b/webrtc/video_engine/vie_image_process_impl.cc
@@ -182,29 +182,6 @@
return 0;
}
-int ViEImageProcessImpl::EnableDenoising(const int capture_id,
- const bool enable) {
- LOG_F(LS_INFO) << "capture_id: " << capture_id
- << " enable: " << (enable ? "on" : "off");
-
- ViEInputManagerScoped is(*(shared_data_->input_manager()));
- ViECapturer* vie_capture = is.Capture(capture_id);
- if (!vie_capture) {
- shared_data_->SetLastError(kViEImageProcessInvalidCaptureId);
- return -1;
- }
-
- if (vie_capture->EnableDenoising(enable) != 0) {
- if (enable) {
- shared_data_->SetLastError(kViEImageProcessAlreadyEnabled);
- } else {
- shared_data_->SetLastError(kViEImageProcessAlreadyDisabled);
- }
- return -1;
- }
- return 0;
-}
-
int ViEImageProcessImpl::EnableColorEnhancement(const int video_channel,
const bool enable) {
LOG_F(LS_INFO) << "video_channel: " << video_channel
diff --git a/webrtc/video_engine/vie_image_process_impl.h b/webrtc/video_engine/vie_image_process_impl.h
index 74a7ff0..38a6a08 100644
--- a/webrtc/video_engine/vie_image_process_impl.h
+++ b/webrtc/video_engine/vie_image_process_impl.h
@@ -35,7 +35,6 @@
ViEEffectFilter& render_filter);
virtual int DeregisterRenderEffectFilter(const int video_channel);
virtual int EnableDeflickering(const int capture_id, const bool enable);
- virtual int EnableDenoising(const int capture_id, const bool enable);
virtual int EnableColorEnhancement(const int video_channel,
const bool enable);
virtual void RegisterPreEncodeCallback(