WebAudio: Initialize BiquadFilterNode properly
That helps to pass WPT tests under webaudio/the-audio-api/the-biquadfilternode-interface/ctor-biquadfilter.html
This commit is contained in:
parent
51912bf0da
commit
c78c706422
Notes:
github-actions[bot]
2024-10-31 08:19:56 +00:00
Author: https://github.com/shlyakpavel Commit: https://github.com/LadybirdBrowser/ladybird/commit/c78c7064228 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2060 Reviewed-by: https://github.com/shannonbooth
2 changed files with 14 additions and 3 deletions
|
@ -17,6 +17,7 @@ JS_DEFINE_ALLOCATOR(BiquadFilterNode);
|
|||
|
||||
BiquadFilterNode::BiquadFilterNode(JS::Realm& realm, JS::NonnullGCPtr<BaseAudioContext> context, BiquadFilterOptions const& options)
|
||||
: AudioNode(realm, context)
|
||||
, m_type(options.type)
|
||||
, m_frequency(AudioParam::create(realm, options.frequency, NumericLimits<float>::lowest(), NumericLimits<float>::max(), Bindings::AutomationRate::ARate))
|
||||
, m_detune(AudioParam::create(realm, options.detune, NumericLimits<float>::lowest(), NumericLimits<float>::max(), Bindings::AutomationRate::ARate))
|
||||
, m_q(AudioParam::create(realm, options.q, NumericLimits<float>::lowest(), NumericLimits<float>::max(), Bindings::AutomationRate::ARate))
|
||||
|
@ -27,10 +28,9 @@ BiquadFilterNode::BiquadFilterNode(JS::Realm& realm, JS::NonnullGCPtr<BaseAudioC
|
|||
BiquadFilterNode::~BiquadFilterNode() = default;
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-type
|
||||
WebIDL::ExceptionOr<void> BiquadFilterNode::set_type(Bindings::BiquadFilterType type)
|
||||
void BiquadFilterNode::set_type(Bindings::BiquadFilterType type)
|
||||
{
|
||||
m_type = type;
|
||||
return {};
|
||||
}
|
||||
|
||||
// https://webaudio.github.io/web-audio-api/#dom-biquadfilternode-type
|
||||
|
@ -85,6 +85,17 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<BiquadFilterNode>> BiquadFilterNode::constr
|
|||
// MUST initialize the AudioNode this, with context and options as arguments.
|
||||
|
||||
auto node = realm.vm().heap().allocate<BiquadFilterNode>(realm, realm, context, options);
|
||||
|
||||
// Default options for channel count and interpretation
|
||||
// https://webaudio.github.io/web-audio-api/#BiquadFilterNode
|
||||
AudioNodeDefaultOptions default_options;
|
||||
default_options.channel_count_mode = Bindings::ChannelCountMode::Max;
|
||||
default_options.channel_interpretation = Bindings::ChannelInterpretation::Speakers;
|
||||
default_options.channel_count = 2;
|
||||
// FIXME: Set tail-time to yes
|
||||
|
||||
TRY(node->initialize_audio_node_options(options, default_options));
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public:
|
|||
WebIDL::UnsignedLong number_of_inputs() override { return 1; }
|
||||
WebIDL::UnsignedLong number_of_outputs() override { return 1; }
|
||||
|
||||
WebIDL::ExceptionOr<void> set_type(Bindings::BiquadFilterType);
|
||||
void set_type(Bindings::BiquadFilterType);
|
||||
Bindings::BiquadFilterType type() const;
|
||||
JS::NonnullGCPtr<AudioParam> frequency() const;
|
||||
JS::NonnullGCPtr<AudioParam> detune() const;
|
||||
|
|
Loading…
Add table
Reference in a new issue