Commit 662aed9e authored by Darwin Huang's avatar Darwin Huang Committed by Commit Bot

Revert "Handle k-rate AudioParam inputs for BiquadFilterNode"

This reverts commit eabaf8df.

Reason for revert: WebAudio tests failing. See https://crbug.com/1068735 for more information.

Original change's description:
> Handle k-rate AudioParam inputs for BiquadFilterNode
> 
> In addition to making BiquadFilterNode AudioParams apply the input to
> the param, we also needed to fix an issue in
> CalculateSampleAccurateValues when the param is k-rate.  We would sum
> in all the values for the input instead of just taking one.
> 
> Manually ran the new test case with Chrome stable and all the tests fail
> as expected.
> 
> Bug: 1015760
> Test: k-rate-biquad-connections.html
> 
> Change-Id: I412f9567909d8dd6d4cf00036138b47a454c431c
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2083224
> Reviewed-by: Hongchan Choi <hongchan@chromium.org>
> Commit-Queue: Hongchan Choi <hongchan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#757155}

TBR=rtoy@chromium.org,hongchan@chromium.org

Change-Id: I1692cdd5ce1c382d2337a1b7e1393cea9fdc8909
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1015760
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2140609Reviewed-by: default avatarDarwin Huang <huangdarwin@chromium.org>
Commit-Queue: Darwin Huang <huangdarwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757212}
parent a5b71835
......@@ -47,8 +47,7 @@ static bool hasConstantValues(float* values, int frames_to_process) {
}
void BiquadDSPKernel::UpdateCoefficientsIfNecessary(int frames_to_process) {
if (GetBiquadProcessor()->FilterCoefficientsDirty() &&
GetBiquadProcessor()->IsAudioRate()) {
if (GetBiquadProcessor()->FilterCoefficientsDirty()) {
float cutoff_frequency[audio_utilities::kRenderQuantumFrames];
float q[audio_utilities::kRenderQuantumFrames];
float gain[audio_utilities::kRenderQuantumFrames];
......@@ -80,10 +79,10 @@ void BiquadDSPKernel::UpdateCoefficientsIfNecessary(int frames_to_process) {
UpdateCoefficients(isConstant ? 1 : frames_to_process, cutoff_frequency,
q, gain, detune);
} else {
cutoff_frequency[0] = GetBiquadProcessor()->Parameter1().FinalValue();
q[0] = GetBiquadProcessor()->Parameter2().FinalValue();
gain[0] = GetBiquadProcessor()->Parameter3().FinalValue();
detune[0] = GetBiquadProcessor()->Parameter4().FinalValue();
cutoff_frequency[0] = GetBiquadProcessor()->Parameter1().Value();
q[0] = GetBiquadProcessor()->Parameter2().Value();
gain[0] = GetBiquadProcessor()->Parameter3().Value();
detune[0] = GetBiquadProcessor()->Parameter4().Value();
UpdateCoefficients(1, cutoff_frequency, q, gain, detune);
}
}
......
......@@ -63,18 +63,12 @@ void BiquadProcessor::CheckForDirtyCoefficients() {
filter_coefficients_dirty_ = false;
has_sample_accurate_values_ = false;
if (parameter1_->HasSampleAccurateValuesTimeline() ||
parameter2_->HasSampleAccurateValuesTimeline() ||
parameter3_->HasSampleAccurateValuesTimeline() ||
parameter4_->HasSampleAccurateValuesTimeline()) {
// Coefficients are dirty if any of them has automations or if there are
// connections to the AudioParam.
if (parameter1_->HasSampleAccurateValues() ||
parameter2_->HasSampleAccurateValues() ||
parameter3_->HasSampleAccurateValues() ||
parameter4_->HasSampleAccurateValues()) {
filter_coefficients_dirty_ = true;
has_sample_accurate_values_ = true;
// If any parameter is a-rate, then the filter must do a-rate processing for
// everything.
is_audio_rate_ = parameter1_->IsAudioRate() || parameter2_->IsAudioRate() ||
parameter3_->IsAudioRate() || parameter4_->IsAudioRate();
} else {
if (has_just_reset_) {
// Snap to exact values first time after reset, then smooth for subsequent
......
......@@ -82,7 +82,6 @@ class BiquadProcessor final : public AudioDSPKernelProcessor {
bool FilterCoefficientsDirty() const { return filter_coefficients_dirty_; }
bool HasSampleAccurateValues() const { return has_sample_accurate_values_; }
bool IsAudioRate() const { return is_audio_rate_; }
AudioParamHandler& Parameter1() { return *parameter1_; }
AudioParamHandler& Parameter2() { return *parameter2_; }
......@@ -105,9 +104,6 @@ class BiquadProcessor final : public AudioDSPKernelProcessor {
// Set to true if any of the filter parameters are sample-accurate.
bool has_sample_accurate_values_;
// Set to true if any of the filter parameters are a-rate.
bool is_audio_rate_;
};
} // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment