/* * Copyright (c) 2023, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::Platform { class AudioCodecPlugin { public: static void install_creation_hook(Function>()>); static ErrorOr> create(); virtual ~AudioCodecPlugin(); virtual size_t device_sample_rate() = 0; virtual void enqueue_samples(FixedArray) = 0; virtual size_t remaining_samples() const = 0; virtual void resume_playback() = 0; virtual void pause_playback() = 0; virtual void playback_ended() = 0; protected: AudioCodecPlugin(); }; }