Update to current webrtc library
This is from the upstream library commit id 3326535126e435f1ba647885ce43a8f0f3d317eb, corresponding to Chromium 88.0.4290.1.
This commit is contained in:
@ -8,17 +8,20 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "webrtc/modules/audio_processing/transient/transient_detector.h"
|
||||
#include "modules/audio_processing/transient/transient_detector.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "webrtc/modules/audio_processing/transient/common.h"
|
||||
#include "webrtc/modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h"
|
||||
#include "webrtc/modules/audio_processing/transient/moving_moments.h"
|
||||
#include "webrtc/modules/audio_processing/transient/wpd_tree.h"
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
|
||||
#include "modules/audio_processing/transient/common.h"
|
||||
#include "modules/audio_processing/transient/daubechies_8_wavelet_coeffs.h"
|
||||
#include "modules/audio_processing/transient/moving_moments.h"
|
||||
#include "modules/audio_processing/transient/wpd_node.h"
|
||||
#include "modules/audio_processing/transient/wpd_tree.h"
|
||||
#include "rtc_base/checks.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -34,10 +37,10 @@ TransientDetector::TransientDetector(int sample_rate_hz)
|
||||
chunks_at_startup_left_to_delete_(kChunksAtStartupLeftToDelete),
|
||||
reference_energy_(1.f),
|
||||
using_reference_(false) {
|
||||
assert(sample_rate_hz == ts::kSampleRate8kHz ||
|
||||
sample_rate_hz == ts::kSampleRate16kHz ||
|
||||
sample_rate_hz == ts::kSampleRate32kHz ||
|
||||
sample_rate_hz == ts::kSampleRate48kHz);
|
||||
RTC_DCHECK(sample_rate_hz == ts::kSampleRate8kHz ||
|
||||
sample_rate_hz == ts::kSampleRate16kHz ||
|
||||
sample_rate_hz == ts::kSampleRate32kHz ||
|
||||
sample_rate_hz == ts::kSampleRate48kHz);
|
||||
int samples_per_transient = sample_rate_hz * kTransientLengthMs / 1000;
|
||||
// Adjustment to avoid data loss while downsampling, making
|
||||
// |samples_per_chunk_| and |samples_per_transient| always divisible by
|
||||
@ -49,8 +52,7 @@ TransientDetector::TransientDetector(int sample_rate_hz)
|
||||
wpd_tree_.reset(new WPDTree(samples_per_chunk_,
|
||||
kDaubechies8HighPassCoefficients,
|
||||
kDaubechies8LowPassCoefficients,
|
||||
kDaubechies8CoefficientsLength,
|
||||
kLevels));
|
||||
kDaubechies8CoefficientsLength, kLevels));
|
||||
for (size_t i = 0; i < kLeaves; ++i) {
|
||||
moving_moments_[i].reset(
|
||||
new MovingMoments(samples_per_transient / kLeaves));
|
||||
@ -70,7 +72,8 @@ float TransientDetector::Detect(const float* data,
|
||||
size_t data_length,
|
||||
const float* reference_data,
|
||||
size_t reference_length) {
|
||||
assert(data && data_length == samples_per_chunk_);
|
||||
RTC_DCHECK(data);
|
||||
RTC_DCHECK_EQ(samples_per_chunk_, data_length);
|
||||
|
||||
// TODO(aluebs): Check if these errors can logically happen and if not assert
|
||||
// on them.
|
||||
@ -83,8 +86,7 @@ float TransientDetector::Detect(const float* data,
|
||||
for (size_t i = 0; i < kLeaves; ++i) {
|
||||
WPDNode* leaf = wpd_tree_->NodeAt(kLevels, i);
|
||||
|
||||
moving_moments_[i]->CalculateMoments(leaf->data(),
|
||||
tree_leaves_data_length_,
|
||||
moving_moments_[i]->CalculateMoments(leaf->data(), tree_leaves_data_length_,
|
||||
first_moments_.get(),
|
||||
second_moments_.get());
|
||||
|
||||
@ -124,8 +126,9 @@ float TransientDetector::Detect(const float* data,
|
||||
const float kVerticalScaling = 0.5f;
|
||||
const float kVerticalShift = 1.f;
|
||||
|
||||
result = (cos(result * horizontal_scaling + kHorizontalShift)
|
||||
+ kVerticalShift) * kVerticalScaling;
|
||||
result = (std::cos(result * horizontal_scaling + kHorizontalShift) +
|
||||
kVerticalShift) *
|
||||
kVerticalScaling;
|
||||
result *= result;
|
||||
}
|
||||
|
||||
@ -158,10 +161,10 @@ float TransientDetector::ReferenceDetectionValue(const float* data,
|
||||
using_reference_ = false;
|
||||
return 1.f;
|
||||
}
|
||||
assert(reference_energy_ != 0);
|
||||
float result = 1.f / (1.f + exp(kReferenceNonLinearity *
|
||||
(kEnergyRatioThreshold -
|
||||
reference_energy / reference_energy_)));
|
||||
RTC_DCHECK_NE(0, reference_energy_);
|
||||
float result = 1.f / (1.f + std::exp(kReferenceNonLinearity *
|
||||
(kEnergyRatioThreshold -
|
||||
reference_energy / reference_energy_)));
|
||||
reference_energy_ =
|
||||
kMemory * reference_energy_ + (1.f - kMemory) * reference_energy;
|
||||
|
||||
|
Reference in New Issue
Block a user