#ifndef SUNSHINE_AUDIO_H #define SUNSHINE_AUDIO_H #include "thread_safe.h" #include "utility.h" namespace audio { enum stream_config_e : int { STEREO, SURROUND51, HIGH_SURROUND51, SURROUND71, HIGH_SURROUND71, MAX_STREAM_CONFIG }; struct opus_stream_config_t { std::int32_t sampleRate; int channelCount; int streams; int coupledStreams; const std::uint8_t *mapping; }; extern opus_stream_config_t stream_configs[MAX_STREAM_CONFIG]; struct config_t { enum flags_e : int { HIGH_QUALITY, HOST_AUDIO, MAX_FLAGS }; int packetDuration; int channels; int mask; std::bitset flags; }; using packet_t = util::buffer_t; using packet_queue_t = std::shared_ptr>>; void capture(safe::signal_t *shutdown_event, packet_queue_t packets, config_t config, void *channel_data); } // namespace audio #endif