LibWeb: Add AudioParams for DynamicsCompressorNode

This commit is contained in:
Shannon Booth
2024-05-11 19:52:08 +12:00
committed by Andreas Kling
parent 8fa7b2c173
commit cf615cbd1c
5 changed files with 55 additions and 6 deletions

View File

@@ -6,6 +6,7 @@
#include <LibWeb/Bindings/DynamicsCompressorNodePrototype.h>
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/WebAudio/AudioParam.h>
#include <LibWeb/WebAudio/DynamicsCompressorNode.h>
namespace Web::WebAudio {
@@ -26,8 +27,13 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<DynamicsCompressorNode>> DynamicsCompressor
return realm.vm().heap().allocate<DynamicsCompressorNode>(realm, realm, context, options);
}
DynamicsCompressorNode::DynamicsCompressorNode(JS::Realm& realm, JS::NonnullGCPtr<BaseAudioContext> context, DynamicsCompressorOptions const&)
DynamicsCompressorNode::DynamicsCompressorNode(JS::Realm& realm, JS::NonnullGCPtr<BaseAudioContext> context, DynamicsCompressorOptions const& options)
: AudioNode(realm, context)
, m_threshold(AudioParam::create(realm, options.threshold, -100, 0, Bindings::AutomationRate::KRate))
, m_knee(AudioParam::create(realm, options.knee, 0, 40, Bindings::AutomationRate::KRate))
, m_ratio(AudioParam::create(realm, options.ratio, 1, 20, Bindings::AutomationRate::KRate))
, m_attack(AudioParam::create(realm, options.attack, 0, 1, Bindings::AutomationRate::KRate))
, m_release(AudioParam::create(realm, options.release, 0, 1, Bindings::AutomationRate::KRate))
{
}
@@ -40,6 +46,11 @@ void DynamicsCompressorNode::initialize(JS::Realm& realm)
void DynamicsCompressorNode::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_threshold);
visitor.visit(m_knee);
visitor.visit(m_ratio);
visitor.visit(m_attack);
visitor.visit(m_release);
}
}