mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
Auto merge of #21750 - Manishearth:biquad, r=ferjm
Implement BiquadFilterNode A bunch of tests still fail but some of it may be a timing issue, looking at it the tests are *at least* affected by https://github.com/servo/servo/issues/21659 (changing how they work to avoid problems from that does not make them pass but does change the exact value of the error), so I feel like I should fix that first before investigating these. r? @ferjm <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21750) <!-- Reviewable:end -->
This commit is contained in:
commit
ac331c6663
22 changed files with 326 additions and 154 deletions
12
Cargo.lock
generated
12
Cargo.lock
generated
|
@ -2856,7 +2856,7 @@ dependencies = [
|
|||
"lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"num_cpus 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3279,7 +3279,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo-media"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/media#8f65e32617b068e8a0d152236848fd98cc08a3ae"
|
||||
source = "git+https://github.com/servo/media#3292937b8bec7daed12b2f1b5739eb293610f5a2"
|
||||
dependencies = [
|
||||
"servo-media-audio 0.1.0 (git+https://github.com/servo/media)",
|
||||
"servo-media-gstreamer 0.1.0 (git+https://github.com/servo/media)",
|
||||
|
@ -3289,7 +3289,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo-media-audio"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/media#8f65e32617b068e8a0d152236848fd98cc08a3ae"
|
||||
source = "git+https://github.com/servo/media#3292937b8bec7daed12b2f1b5739eb293610f5a2"
|
||||
dependencies = [
|
||||
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3305,7 +3305,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo-media-gstreamer"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/media#8f65e32617b068e8a0d152236848fd98cc08a3ae"
|
||||
source = "git+https://github.com/servo/media#3292937b8bec7daed12b2f1b5739eb293610f5a2"
|
||||
dependencies = [
|
||||
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"glib 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3323,7 +3323,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo-media-player"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/media#8f65e32617b068e8a0d152236848fd98cc08a3ae"
|
||||
source = "git+https://github.com/servo/media#3292937b8bec7daed12b2f1b5739eb293610f5a2"
|
||||
dependencies = [
|
||||
"ipc-channel 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3418,7 +3418,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "servo_media_derive"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/servo/media#8f65e32617b068e8a0d152236848fd98cc08a3ae"
|
||||
source = "git+https://github.com/servo/media#3292937b8bec7daed12b2f1b5739eb293610f5a2"
|
||||
dependencies = [
|
||||
"quote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
|
@ -18,6 +18,7 @@ use dom::bindings::codegen::Bindings::BaseAudioContextBinding::AudioContextState
|
|||
use dom::bindings::codegen::Bindings::BaseAudioContextBinding::BaseAudioContextMethods;
|
||||
use dom::bindings::codegen::Bindings::BaseAudioContextBinding::DecodeErrorCallback;
|
||||
use dom::bindings::codegen::Bindings::BaseAudioContextBinding::DecodeSuccessCallback;
|
||||
use dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterOptions;
|
||||
use dom::bindings::codegen::Bindings::ChannelMergerNodeBinding::ChannelMergerOptions;
|
||||
use dom::bindings::codegen::Bindings::GainNodeBinding::GainOptions;
|
||||
use dom::bindings::codegen::Bindings::OscillatorNodeBinding::OscillatorOptions;
|
||||
|
@ -28,6 +29,7 @@ use dom::bindings::num::Finite;
|
|||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use dom::bindings::root::{DomRoot, MutNullableDom};
|
||||
use dom::biquadfilternode::BiquadFilterNode;
|
||||
use dom::channelmergernode::ChannelMergerNode;
|
||||
use dom::domexception::{DOMErrorName, DOMException};
|
||||
use dom::eventtarget::EventTarget;
|
||||
|
@ -344,6 +346,11 @@ impl BaseAudioContextMethods for BaseAudioContext {
|
|||
AnalyserNode::new(&self.global().as_window(), &self, &AnalyserOptions::empty())
|
||||
}
|
||||
|
||||
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbiquadfilter
|
||||
fn CreateBiquadFilter(&self) -> Fallible<DomRoot<BiquadFilterNode>> {
|
||||
BiquadFilterNode::new(&self.global().as_window(), &self, &BiquadFilterOptions::empty())
|
||||
}
|
||||
|
||||
/// https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createchannelmerger
|
||||
fn CreateChannelMerger(&self, count: u32) -> Fallible<DomRoot<ChannelMergerNode>> {
|
||||
let mut opts = ChannelMergerOptions::empty();
|
||||
|
|
184
components/script/dom/biquadfilternode.rs
Normal file
184
components/script/dom/biquadfilternode.rs
Normal file
|
@ -0,0 +1,184 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::audionode::AudioNode;
|
||||
use dom::audioparam::AudioParam;
|
||||
use dom::baseaudiocontext::BaseAudioContext;
|
||||
use dom::bindings::codegen::Bindings::AudioNodeBinding::{ChannelCountMode, ChannelInterpretation};
|
||||
use dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate;
|
||||
use dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::{self, BiquadFilterNodeMethods};
|
||||
use dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterOptions;
|
||||
use dom::bindings::codegen::Bindings::BiquadFilterNodeBinding::BiquadFilterType;
|
||||
use dom::bindings::error::Fallible;
|
||||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::bindings::root::{Dom, DomRoot};
|
||||
use dom::window::Window;
|
||||
use dom_struct::dom_struct;
|
||||
use servo_media::audio::biquad_filter_node::{BiquadFilterNodeOptions, FilterType};
|
||||
use servo_media::audio::biquad_filter_node::BiquadFilterNodeMessage;
|
||||
use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage};
|
||||
use servo_media::audio::param::ParamType;
|
||||
use std::cell::Cell;
|
||||
use std::f32;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct BiquadFilterNode {
|
||||
node: AudioNode,
|
||||
gain: Dom<AudioParam>,
|
||||
frequency: Dom<AudioParam>,
|
||||
q: Dom<AudioParam>,
|
||||
detune: Dom<AudioParam>,
|
||||
filter: Cell<BiquadFilterType>,
|
||||
}
|
||||
|
||||
impl BiquadFilterNode {
|
||||
#[allow(unrooted_must_root)]
|
||||
pub fn new_inherited(
|
||||
window: &Window,
|
||||
context: &BaseAudioContext,
|
||||
options: &BiquadFilterOptions,
|
||||
) -> Fallible<BiquadFilterNode> {
|
||||
let node_options = options.parent
|
||||
.unwrap_or(2, ChannelCountMode::Max,
|
||||
ChannelInterpretation::Speakers);
|
||||
let filter = Cell::new(options.type_);
|
||||
let options = options.into();
|
||||
let node = AudioNode::new_inherited(
|
||||
AudioNodeInit::BiquadFilterNode(options),
|
||||
context,
|
||||
node_options,
|
||||
1, // inputs
|
||||
1, // outputs
|
||||
)?;
|
||||
let gain = AudioParam::new(
|
||||
window,
|
||||
context,
|
||||
node.node_id(),
|
||||
ParamType::Gain,
|
||||
AutomationRate::A_rate,
|
||||
options.gain, // default value
|
||||
f32::MIN, // min value
|
||||
f32::MAX, // max value
|
||||
);
|
||||
let q = AudioParam::new(
|
||||
window,
|
||||
context,
|
||||
node.node_id(),
|
||||
ParamType::Q,
|
||||
AutomationRate::A_rate,
|
||||
options.q, // default value
|
||||
f32::MIN, // min value
|
||||
f32::MAX, // max value
|
||||
);
|
||||
let frequency = AudioParam::new(
|
||||
window,
|
||||
context,
|
||||
node.node_id(),
|
||||
ParamType::Frequency,
|
||||
AutomationRate::A_rate,
|
||||
options.frequency, // default value
|
||||
f32::MIN, // min value
|
||||
f32::MAX, // max value
|
||||
);
|
||||
let detune = AudioParam::new(
|
||||
window,
|
||||
context,
|
||||
node.node_id(),
|
||||
ParamType::Detune,
|
||||
AutomationRate::A_rate,
|
||||
options.detune, // default value
|
||||
f32::MIN, // min value
|
||||
f32::MAX, // max value
|
||||
);
|
||||
Ok(BiquadFilterNode {
|
||||
node,
|
||||
filter,
|
||||
gain: Dom::from_ref(&gain),
|
||||
q: Dom::from_ref(&q),
|
||||
frequency: Dom::from_ref(&frequency),
|
||||
detune: Dom::from_ref(&detune),
|
||||
})
|
||||
}
|
||||
|
||||
#[allow(unrooted_must_root)]
|
||||
pub fn new(
|
||||
window: &Window,
|
||||
context: &BaseAudioContext,
|
||||
options: &BiquadFilterOptions,
|
||||
) -> Fallible<DomRoot<BiquadFilterNode>> {
|
||||
let node = BiquadFilterNode::new_inherited(window, context, options)?;
|
||||
Ok(reflect_dom_object(Box::new(node), window, BiquadFilterNodeBinding::Wrap))
|
||||
}
|
||||
|
||||
pub fn Constructor(
|
||||
window: &Window,
|
||||
context: &BaseAudioContext,
|
||||
options: &BiquadFilterOptions,
|
||||
) -> Fallible<DomRoot<BiquadFilterNode>> {
|
||||
BiquadFilterNode::new(window, context, options)
|
||||
}
|
||||
}
|
||||
|
||||
impl BiquadFilterNodeMethods for BiquadFilterNode {
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-gain
|
||||
fn Gain(&self) -> DomRoot<AudioParam> {
|
||||
DomRoot::from_ref(&self.gain)
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-q
|
||||
fn Q(&self) -> DomRoot<AudioParam> {
|
||||
DomRoot::from_ref(&self.q)
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-detune
|
||||
fn Detune(&self) -> DomRoot<AudioParam> {
|
||||
DomRoot::from_ref(&self.detune)
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-frequency
|
||||
fn Frequency(&self) -> DomRoot<AudioParam> {
|
||||
DomRoot::from_ref(&self.frequency)
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-type
|
||||
fn Type(&self) -> BiquadFilterType {
|
||||
self.filter.get()
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-type
|
||||
fn SetType(&self, filter: BiquadFilterType) {
|
||||
self.filter.set(filter);
|
||||
self.node
|
||||
.message(AudioNodeMessage::BiquadFilterNode(
|
||||
BiquadFilterNodeMessage::SetFilterType(filter.into()),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a BiquadFilterOptions> for BiquadFilterNodeOptions {
|
||||
fn from(options: &'a BiquadFilterOptions) -> Self {
|
||||
Self {
|
||||
gain: *options.gain,
|
||||
q: *options.Q,
|
||||
frequency: *options.frequency,
|
||||
detune: *options.detune,
|
||||
filter: options.type_.into()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<BiquadFilterType> for FilterType {
|
||||
fn from(filter: BiquadFilterType) -> FilterType {
|
||||
match filter {
|
||||
BiquadFilterType::Lowpass => FilterType::LowPass,
|
||||
BiquadFilterType::Highpass => FilterType::HighPass,
|
||||
BiquadFilterType::Bandpass => FilterType::BandPass,
|
||||
BiquadFilterType::Lowshelf => FilterType::LowShelf,
|
||||
BiquadFilterType::Highshelf => FilterType::HighShelf,
|
||||
BiquadFilterType::Peaking => FilterType::Peaking,
|
||||
BiquadFilterType::Allpass => FilterType::AllPass,
|
||||
BiquadFilterType::Notch => FilterType::Notch,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -48,7 +48,7 @@ impl GainNode {
|
|||
node.node_id(),
|
||||
ParamType::Gain,
|
||||
AutomationRate::A_rate,
|
||||
1., // default value
|
||||
*options.gain, // default value
|
||||
f32::MIN, // min value
|
||||
f32::MAX, // max value
|
||||
);
|
||||
|
|
|
@ -228,6 +228,7 @@ pub mod audioscheduledsourcenode;
|
|||
pub mod baseaudiocontext;
|
||||
pub mod beforeunloadevent;
|
||||
pub mod bindings;
|
||||
pub mod biquadfilternode;
|
||||
pub mod blob;
|
||||
pub mod bluetooth;
|
||||
pub mod bluetoothadvertisingevent;
|
||||
|
|
|
@ -38,7 +38,7 @@ interface BaseAudioContext : EventTarget {
|
|||
[Throws] AnalyserNode createAnalyser();
|
||||
[Throws] GainNode createGain();
|
||||
// DelayNode createDelay(optional double maxDelayTime = 1);
|
||||
// BiquadFilterNode createBiquadFilter();
|
||||
[Throws] BiquadFilterNode createBiquadFilter();
|
||||
// IIRFilterNode createIIRFilter(sequence<double> feedforward,
|
||||
// sequence<double> feedback);
|
||||
// WaveShaperNode createWaveShaper();
|
||||
|
|
39
components/script/dom/webidls/BiquadFilterNode.webidl
Normal file
39
components/script/dom/webidls/BiquadFilterNode.webidl
Normal file
|
@ -0,0 +1,39 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
/*
|
||||
* The origin of this IDL file is
|
||||
* https://webaudio.github.io/web-audio-api/#biquadfilternode
|
||||
*/
|
||||
|
||||
enum BiquadFilterType {
|
||||
"lowpass",
|
||||
"highpass",
|
||||
"bandpass",
|
||||
"lowshelf",
|
||||
"highshelf",
|
||||
"peaking",
|
||||
"notch",
|
||||
"allpass"
|
||||
};
|
||||
|
||||
dictionary BiquadFilterOptions : AudioNodeOptions {
|
||||
BiquadFilterType type = "lowpass";
|
||||
float Q = 1;
|
||||
float detune = 0;
|
||||
float frequency = 350;
|
||||
float gain = 0;
|
||||
};
|
||||
|
||||
[Exposed=Window,
|
||||
Constructor (BaseAudioContext context, optional BiquadFilterOptions options)]
|
||||
interface BiquadFilterNode : AudioNode {
|
||||
attribute BiquadFilterType type;
|
||||
readonly attribute AudioParam frequency;
|
||||
readonly attribute AudioParam detune;
|
||||
readonly attribute AudioParam Q;
|
||||
readonly attribute AudioParam gain;
|
||||
// the AudioParam model of https://github.com/servo/servo/issues/21659 needs to
|
||||
// be implemented before we implement this
|
||||
// void getFrequencyResponse (Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse);
|
||||
};
|
|
@ -8,9 +8,6 @@
|
|||
[BaseAudioContext interface: attribute audioWorklet]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: operation createBiquadFilter()]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: operation createChannelSplitter(unsigned long)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -89,9 +86,6 @@
|
|||
[BaseAudioContext interface: context must inherit property "audioWorklet" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: context must inherit property "createBiquadFilter()" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: context must inherit property "createChannelSplitter(unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -155,9 +149,6 @@
|
|||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "audioWorklet" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createBiquadFilter()" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BaseAudioContext interface: new OfflineAudioContext(1, 1, sample_rate) must inherit property "createChannelSplitter(unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -275,138 +266,15 @@
|
|||
[AudioProcessingEvent interface: new AudioProcessingEvent('', {\n playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer\n }) must inherit property "outputBuffer" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: attribute type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: attribute frequency]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: attribute detune]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: attribute Q]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: attribute gain]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: operation getFrequencyResponse(Float32Array, Float32Array, Float32Array)]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode must be primary interface of new BiquadFilterNode(context)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of new BiquadFilterNode(context)]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "type" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "frequency" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "detune" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "Q" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "gain" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: new BiquadFilterNode(context) must inherit property "getFrequencyResponse(Float32Array, Float32Array, Float32Array)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[BiquadFilterNode interface: calling getFrequencyResponse(Float32Array, Float32Array, Float32Array) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling connect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "connect(AudioParam, unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling connect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect()" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(AudioNode) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioNode, unsigned long, unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(AudioNode, unsigned long, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(AudioParam) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "disconnect(AudioParam, unsigned long)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: calling disconnect(AudioParam, unsigned long) on new BiquadFilterNode(context) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "context" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfInputs" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "numberOfOutputs" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCount" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "channelCountMode" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[AudioNode interface: new BiquadFilterNode(context) must inherit property "channelInterpretation" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[ChannelSplitterNode interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-allpass.html]
|
||||
expected: ERROR
|
||||
[X Max error in Allpass filter response is not less than or equal to 3.9337e-8. Got 2.805464744567871.]
|
||||
expected: FAIL
|
||||
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
[biquad-automation.html]
|
||||
expected: ERROR
|
||||
expected: CRASH
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-bandpass.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Bandpass filter response is not less than or equal to 2.2501e-8. Got 1.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,19 @@
|
|||
[biquad-basic.html]
|
||||
expected: ERROR
|
||||
[< [existence\] 1 out of 1 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X context.createBiquadFilter does not exist. Got undefined.]
|
||||
expected: FAIL
|
||||
|
||||
[X getFrequencyResponse(new Float32Array(10), new Float32Array(1), new Float32Array(20)) threw "TypeError" instead of InvalidAccessError.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 5 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X getFrequencyResponse(new Float32Array(10), new Float32Array(20), new Float32Array(1)) threw "TypeError" instead of InvalidAccessError.]
|
||||
expected: FAIL
|
||||
|
||||
[< [exceptions-getFrequencyData\] 2 out of 5 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-highpass.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Highpass filter response is not less than or equal to 1.5487e-8. Got 1.9329860210418701.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-highshelf.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Highshelf filter response is not less than or equal to 6.2577e-8. Got 2.3278465244357536.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-lowpass.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Lowpass filter response is not less than or equal to 9.7869e-8. Got 1.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-lowshelf.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Lowshelf filter response is not less than or equal to 3.8349e-8. Got 3.162277660168379.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-notch.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Notch filter response is not less than or equal to 1.9669e-8. Got 2.9027323722839355.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +1,10 @@
|
|||
[biquad-peaking.html]
|
||||
expected: ERROR
|
||||
[< [test\] 1 out of 3 assertions were failed.]
|
||||
expected: FAIL
|
||||
|
||||
[X Max error in Peaking filter response is not less than or equal to 5.8234e-8. Got 3.162277660168379.]
|
||||
expected: FAIL
|
||||
|
||||
[# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[biquadfilternode-basic.html]
|
||||
expected: ERROR
|
|
@ -1,5 +1,4 @@
|
|||
[ctor-biquadfilter.html]
|
||||
expected: ERROR
|
||||
[X node0 = new BiquadFilterNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -27038,7 +27038,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mozilla/interfaces.html": [
|
||||
"840c233a14c3d041e43a125a6d1452670aa4fbb4",
|
||||
"4863f4d1036e945cfaae1f112981fac3367b2e49",
|
||||
"testharness"
|
||||
],
|
||||
"mozilla/interfaces.js": [
|
||||
|
|
|
@ -23,6 +23,7 @@ test_interfaces([
|
|||
"AudioScheduledSourceNode",
|
||||
"BaseAudioContext",
|
||||
"BeforeUnloadEvent",
|
||||
"BiquadFilterNode",
|
||||
"Blob",
|
||||
"CanvasGradient",
|
||||
"CanvasRenderingContext2D",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue