/** This file is a part of our_dick Copyright (C) 2020 rexy712 This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef OUR_DICK_AUDIO_CHANNEL_HPP #define OUR_DICK_AUDIO_CHANNEL_HPP #include //size_t #include "mixdata.hpp" namespace audio{ namespace impl{ class channel; } //needs to be thread safe, lock free, and avoid false sharing class channel { private: impl::channel* m_impl; public: channel(impl::channel& c); channel(const channel& c) = default; channel(channel&& c) = default; ~channel() = default; channel& operator=(const channel&) = default; channel& operator=(channel&&) = default; void resize_buffer(size_t newsize); void play(const mixchunk& m); void play(const mixdata& m); void pause(); void resume(); void stop(); bool is_paused()const; bool is_playing()const; bool is_stopped()const; }; } #endif