diff --git a/webrtc/modules/video_processing/util/denoiser_filter_neon.cc b/webrtc/modules/video_processing/util/denoiser_filter_neon.cc index 195b985b98..68c94cbdb7 100644 --- a/webrtc/modules/video_processing/util/denoiser_filter_neon.cc +++ b/webrtc/modules/video_processing/util/denoiser_filter_neon.cc @@ -14,6 +14,8 @@ namespace webrtc { +const int kSumDiffThresholdHighNeon = 600; + static int HorizontalAddS16x8(const int16x8_t v_16x8) { const int32x4_t a = vpaddlq_s16(v_16x8); const int64x2_t b = vpaddlq_s32(a); @@ -179,7 +181,7 @@ DenoiserDecision DenoiserFilterNEON::MbDenoise(uint8_t* mc_running_avg_y, vget_low_s64(v_sum_diff_total)); int sum_diff = vget_lane_s32(vabs_s32(vreinterpret_s32_s64(x)), 0); sum_diff_thresh = - increase_denoising ? kSumDiffThresholdHigh : kSumDiffThreshold; + increase_denoising ? kSumDiffThresholdHighNeon : kSumDiffThreshold; if (sum_diff > sum_diff_thresh) return COPY_BLOCK; diff --git a/webrtc/modules/video_processing/util/noise_estimation.h b/webrtc/modules/video_processing/util/noise_estimation.h index fa5b522548..16d5587b70 100644 --- a/webrtc/modules/video_processing/util/noise_estimation.h +++ b/webrtc/modules/video_processing/util/noise_estimation.h @@ -23,7 +23,7 @@ namespace webrtc { #define DISPLAY 0 // Rectangle diagnostics #define DISPLAYNEON 0 // Rectangle diagnostics on NEON -const int kNoiseThreshold = 200; +const int kNoiseThreshold = 150; const int kNoiseThresholdNeon = 70; const int kConsecLowVarFrame = 6; const int kAverageLumaMin = 20; diff --git a/webrtc/modules/video_processing/video_denoiser.cc b/webrtc/modules/video_processing/video_denoiser.cc index c1cab8187d..0c58a2a14d 100644 --- a/webrtc/modules/video_processing/video_denoiser.cc +++ b/webrtc/modules/video_processing/video_denoiser.cc @@ -248,7 +248,7 @@ void VideoDenoiser::DenoiseFrame(const VideoFrame& frame, memset(moving_object_.get(), 1, mb_cols_ * mb_rows_); uint8_t noise_level = noise_estimation_enabled ? ne_->GetNoiseLevel() : 0; - int thr_var_base = 16 * 16 * 5; + int thr_var_base = 16 * 16 * 2; // Loop over blocks to accumulate/extract noise level and update x/y_density // factors for moving object detection. for (int mb_row = 0; mb_row < mb_rows_; ++mb_row) {