webaudio: Implement IIRFilterNode (#33001)

* Basic IIRFIlterNode bindings

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Add constructor to BaseAudioContext

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update IDL and use statements

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update non-crashing test expectations

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Tidy

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Add missing spec link

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Optimize error checks

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Pass context channel count to servo-media

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update test expectations

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update legacy expectations

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Add IIRFilterNode in interfaces.html

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update MANIFEST

Signed-off-by: Daniel Adams <msub2official@gmail.com>

---------

Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
Daniel Adams 2024-08-11 14:27:54 -10:00 committed by GitHub
parent 1af3ad8a74
commit 5520a9eb50
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 206 additions and 175 deletions

View file

@ -1,13 +1,4 @@
[ctor-iirfilter.html]
[Executing "default constructor"]
expected: FAIL
[Executing "test AudioNodeOptions"]
expected: FAIL
[Executing "functionality"]
expected: FAIL
[X node0 = new IIRFilterNode(context, {"feedforward":[1\],"feedback":[1,-0.9\]}) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL

View file

@ -1,10 +1,4 @@
[iirfilter-basic.html]
[Executing "parameters"]
expected: FAIL
[Executing "exceptions-getFrequencyData"]
expected: FAIL
[X context.createIIRFilter does not exist. Got undefined.]
expected: FAIL

View file

@ -1,9 +1,3 @@
[iirfilter-getFrequencyResponse.html]
[Executing "1-pole IIR"]
expected: FAIL
[Executing "compare IIR and biquad"]
expected: FAIL
[Executing "getFrequencyResponse"]
expected: FAIL
expected: FAIL

View file

@ -1,43 +1,4 @@
[iirfilter.html]
[Executing "coefficient-normalization"]
expected: FAIL
[Executing "one-zero"]
expected: FAIL
[Executing "one-pole"]
expected: FAIL
[Executing "0: lowpass"]
expected: FAIL
[Executing "1: highpass"]
expected: FAIL
[Executing "2: bandpass"]
expected: FAIL
[Executing "3: notch"]
expected: FAIL
[Executing "4: allpass"]
expected: FAIL
[Executing "5: lowshelf"]
expected: FAIL
[Executing "6: highshelf"]
expected: FAIL
[Executing "7: peaking"]
expected: FAIL
[Executing "multi-channel"]
expected: FAIL
[Executing "4th-order-iir"]
expected: FAIL
[X createIIRFilter with normalized coefficients incorrectly threw TypeError: "context.createIIRFilter is not a function".]
expected: FAIL

View file

@ -1,21 +1,3 @@
[test-iirfilternode.html]
[feedforward coefficients can not be empty]
expected: FAIL
[feedback coefficients can not be empty]
expected: FAIL
[more than 20 feedforward coefficients can not be used]
expected: FAIL
[more than 20 feedback coefficients can not be used]
expected: FAIL
[at least one feedforward coefficient must be non-zero]
expected: FAIL
[the first feedback coefficient must be non-zero]
expected: FAIL
[IIRFilterNode getFrequencyResponse handles invalid frequencies properly]
expected: FAIL