diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-11-05 02:32:43 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-11-05 02:32:43 -0400 |
commit | f8f9a907c931623b8ef43d7af45b10c49d41afaa (patch) | |
tree | a7d6bafcc1ffdde32428f23b1d86292efaa6ab43 /src/audio/manager.hpp | |
parent | cb690b6defde4851889d04a68efa4f06d7e38847 (diff) | |
download | abaddon-portaudio-f8f9a907c931623b8ef43d7af45b10c49d41afaa.tar.gz abaddon-portaudio-f8f9a907c931623b8ef43d7af45b10c49d41afaa.zip |
add basic combobox to choose output device, start using spdlog
Diffstat (limited to 'src/audio/manager.hpp')
-rw-r--r-- | src/audio/manager.hpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/audio/manager.hpp b/src/audio/manager.hpp index 7d8f479..ff50390 100644 --- a/src/audio/manager.hpp +++ b/src/audio/manager.hpp @@ -5,6 +5,7 @@ #include <array> #include <atomic> #include <deque> +#include <gtkmm/treemodel.h> #include <mutex> #include <thread> #include <unordered_map> @@ -13,6 +14,7 @@ #include <miniaudio.h> #include <opus.h> #include <sigc++/sigc++.h> +#include "devices.hpp" // clang-format on class AudioManager { @@ -30,6 +32,8 @@ public: void StartCaptureDevice(); void StopCaptureDevice(); + void SetPlaybackDevice(const Gtk::TreeModel::iterator &iter); + void SetCapture(bool capture); void SetPlayback(bool playback); @@ -39,11 +43,15 @@ public: void SetMuteSSRC(uint32_t ssrc, bool mute); void SetVolumeSSRC(uint32_t ssrc, double volume); + void Enumerate(); + [[nodiscard]] bool OK() const; [[nodiscard]] double GetCaptureVolumeLevel() const noexcept; [[nodiscard]] double GetSSRCVolumeLevel(uint32_t ssrc) const noexcept; + [[nodiscard]] AudioDevices &GetDevices(); + private: void OnCapturedPCM(const int16_t *pcm, ma_uint32 frames); @@ -63,10 +71,13 @@ private: // playback ma_device m_device; ma_device_config m_device_config; + ma_device_id m_playback_id; // capture ma_device m_capture_device; ma_device_config m_capture_config; + ma_context m_context; + mutable std::mutex m_mutex; std::unordered_map<uint32_t, std::pair<std::deque<int16_t>, OpusDecoder *>> m_sources; @@ -86,6 +97,8 @@ private: mutable std::mutex m_vol_mtx; std::unordered_map<uint32_t, double> m_volumes; + AudioDevices m_devices; + public: using type_signal_opus_packet = sigc::signal<void(int payload_size)>; type_signal_opus_packet signal_opus_packet(); |