/* * Copyright (c) 2023, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace WebContent { class AudioCodecPluginSerenity final : public Web::Platform::AudioCodecPlugin { public: static ErrorOr> create(NonnullRefPtr); virtual ~AudioCodecPluginSerenity() override; virtual void resume_playback() override; virtual void pause_playback() override; virtual void set_volume(double) override; virtual void seek(double) override; virtual Duration duration() override; private: AudioCodecPluginSerenity(NonnullRefPtr, NonnullRefPtr); ErrorOr play_next_samples(); NonnullRefPtr m_connection; NonnullRefPtr m_loader; NonnullRefPtr m_sample_timer; Duration m_duration; Duration m_position; size_t m_samples_to_load_per_buffer { 0 }; }; }