diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-09-05 02:21:37 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-09-05 02:21:37 -0400 |
commit | e93b8715f9e42d25c0930becc22561f23a25a709 (patch) | |
tree | b1371f3006f11a073de050d60a540e713389252a /src/audio/manager.hpp | |
parent | b7fffb8691c6010864d88b273f346419eb5a5d2b (diff) | |
download | abaddon-portaudio-e93b8715f9e42d25c0930becc22561f23a25a709.tar.gz abaddon-portaudio-e93b8715f9e42d25c0930becc22561f23a25a709.zip |
basic voice capture + transmission
Diffstat (limited to 'src/audio/manager.hpp')
-rw-r--r-- | src/audio/manager.hpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/audio/manager.hpp b/src/audio/manager.hpp index d0f3a21..700fcc0 100644 --- a/src/audio/manager.hpp +++ b/src/audio/manager.hpp @@ -10,6 +10,7 @@ #include <vector> #include <miniaudio.h> #include <opus.h> +#include <sigc++/sigc++.h> // clang-format on class AudioManager { @@ -17,21 +18,40 @@ public: AudioManager(); ~AudioManager(); + void SetOpusBuffer(uint8_t *ptr); void FeedMeOpus(uint32_t ssrc, const std::vector<uint8_t> &data); [[nodiscard]] bool OK() const; private: + void OnCapturedPCM(const int16_t *pcm, ma_uint32 frames); + friend void data_callback(ma_device *, void *, const void *, ma_uint32); + friend void capture_data_callback(ma_device *, void *, const void *, ma_uint32); std::thread m_thread; bool m_ok; + // playback ma_device m_device; ma_device_config m_device_config; + // capture + ma_device m_capture_device; + ma_device_config m_capture_config; std::mutex m_mutex; std::unordered_map<uint32_t, std::pair<std::deque<int16_t>, OpusDecoder *>> m_sources; + + OpusEncoder *m_encoder; + + uint8_t *m_opus_buffer = nullptr; + +public: + using type_signal_opus_packet = sigc::signal<void(int payload_size)>; + type_signal_opus_packet signal_opus_packet(); + +private: + type_signal_opus_packet m_signal_opus_packet; }; #endif |