/* * Copyright (c) 2024, Shannon Booth * Copyright (c) 2024, Bar Yemini * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::WebAudio { // https://webaudio.github.io/web-audio-api/#AudioDestinationNode class AudioDestinationNode : public AudioNode { WEB_PLATFORM_OBJECT(AudioDestinationNode, AudioNode); GC_DECLARE_ALLOCATOR(AudioDestinationNode); public: virtual ~AudioDestinationNode() override; WebIDL::UnsignedLong max_channel_count(); WebIDL::UnsignedLong number_of_inputs() override { return 1; } WebIDL::UnsignedLong number_of_outputs() override { return 1; } WebIDL::ExceptionOr set_channel_count(WebIDL::UnsignedLong) override; static WebIDL::ExceptionOr> construct_impl(JS::Realm& realm, GC::Ref context, WebIDL::UnsignedLong channel_count = 2); protected: AudioDestinationNode(JS::Realm&, GC::Ref, WebIDL::UnsignedLong channel_count); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; }; }