/* * Copyright (c) 2023, Andrew Kaster * Copyright (c) 2023, Tim Flynn * Copyright (c) 2025, Gregory Bertilson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "PlaybackStream.h" #include #include namespace Audio { class AudioState; class PlaybackStreamAudioUnit final : public PlaybackStream { public: static ErrorOr> create(OutputState initial_output_state, u32 target_latency_ms, SampleSpecificationCallback&&, AudioDataRequestCallback&&); virtual void set_underrun_callback(Function) override; virtual NonnullRefPtr> resume() override; virtual NonnullRefPtr> drain_buffer_and_suspend() override; virtual NonnullRefPtr> discard_buffer_and_suspend() override; virtual AK::Duration total_time_played() const override; virtual NonnullRefPtr> set_volume(double) override; private: explicit PlaybackStreamAudioUnit(NonnullRefPtr); ~PlaybackStreamAudioUnit(); NonnullRefPtr m_state; }; }