/* * Copyright (c) 2024, Olekoop * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "PlaybackStream.h" #include #include namespace Audio { class PlaybackStreamOboe final : public PlaybackStream { public: static ErrorOr> create(OutputState initial_output_state, u32 sample_rate, u8 channels, u32 target_latency_ms, AudioDataRequestCallback&& data_request_callback); 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 ErrorOr total_time_played() override; virtual NonnullRefPtr> set_volume(double) override; private: class Storage; explicit PlaybackStreamOboe(NonnullRefPtr); ~PlaybackStreamOboe(); RefPtr m_storage; }; }