From 215664393c7c85f0125ac302d974ce162d7079cd Mon Sep 17 00:00:00 2001 From: Vladimir Stoiakin <VStoiakin@lavabit.com> Date: Wed, 15 Apr 2020 15:08:09 +0300 Subject: [PATCH] api: implement getSupportedAudioManagers() in the library Change-Id: Ia59a7af9bccbf2b56acce6fb7ca8c41fcb8cdae5 --- bin/dbus/dbusconfigurationmanager.cpp | 24 ++++----------------- src/client/configurationmanager.cpp | 6 ++++++ src/dring/configurationmanager_interface.h | 1 + src/media/audio/audiolayer.h | 1 + src/preferences.cpp | 25 ++++++++++++++++++++++ src/preferences.h | 2 ++ 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/bin/dbus/dbusconfigurationmanager.cpp b/bin/dbus/dbusconfigurationmanager.cpp index e2620acc4c..a8c511c184 100644 --- a/bin/dbus/dbusconfigurationmanager.cpp +++ b/bin/dbus/dbusconfigurationmanager.cpp @@ -18,16 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include "dbusconfigurationmanager.h" #include "configurationmanager_interface.h" #include "datatransfer_interface.h" -#include "media/audio/audiolayer.h" - DBusConfigurationManager::DBusConfigurationManager(DBus::Connection& connection) : DBus::ObjectAdaptor(connection, "/cx/ring/Ring/ConfigurationManager") {} @@ -403,20 +397,10 @@ DBusConfigurationManager::setAudioManager(const std::string& api) -> decltype(DR return DRing::setAudioManager(api); } -std::vector<std::string> -DBusConfigurationManager::getSupportedAudioManagers() -{ - return { -#if HAVE_ALSA - ALSA_API_STR, -#endif -#if HAVE_PULSE - PULSEAUDIO_API_STR, -#endif -#if HAVE_JACK - JACK_API_STR, -#endif - }; +auto +DBusConfigurationManager::getSupportedAudioManagers() -> decltype(DRing::getSupportedAudioManagers()) +{ + return DRing::getSupportedAudioManagers(); } auto diff --git a/src/client/configurationmanager.cpp b/src/client/configurationmanager.cpp index 0aeb3479cf..7216dde8b2 100644 --- a/src/client/configurationmanager.cpp +++ b/src/client/configurationmanager.cpp @@ -780,6 +780,12 @@ setRingingTimeout(int32_t timeout) jami::Manager::instance().setRingingTimeout(timeout); } +std::vector<std::string> +getSupportedAudioManagers() +{ + return jami::AudioPreference::getSupportedAudioManagers(); +} + bool setAudioManager(const std::string& api) { diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 6674b77902..1a2000b9ef 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -123,6 +123,7 @@ DRING_PUBLIC void mutePlayback(bool mute); DRING_PUBLIC bool isRingtoneMuted(); DRING_PUBLIC void muteRingtone(bool mute); +DRING_PUBLIC std::vector<std::string> getSupportedAudioManagers(); DRING_PUBLIC std::string getAudioManager(); DRING_PUBLIC bool setAudioManager(const std::string& api); diff --git a/src/media/audio/audiolayer.h b/src/media/audio/audiolayer.h index 00b8525a03..da04018eb0 100644 --- a/src/media/audio/audiolayer.h +++ b/src/media/audio/audiolayer.h @@ -44,6 +44,7 @@ typedef struct SpeexEchoState_ SpeexEchoState; */ // Define the audio api +#define OPENSL_API_STR "opensl" #define PULSEAUDIO_API_STR "pulseaudio" #define ALSA_API_STR "alsa" #define JACK_API_STR "jack" diff --git a/src/preferences.cpp b/src/preferences.cpp index c778209951..2d53b68dd5 100644 --- a/src/preferences.cpp +++ b/src/preferences.cpp @@ -438,6 +438,31 @@ AudioPreference::createAudioLayer() return nullptr; } +std::vector<std::string> +AudioPreference::getSupportedAudioManagers() +{ + return { +#if HAVE_OPENSL + OPENSL_API_STR, +#endif +#if HAVE_ALSA + ALSA_API_STR, +#endif +#if HAVE_PULSE + PULSEAUDIO_API_STR, +#endif +#if HAVE_JACK + JACK_API_STR, +#endif +#if HAVE_COREAUDIO + COREAUDIO_API_STR, +#endif +#if HAVE_PORTAUDIO + PORTAUDIO_API_STR, +#endif + }; +} + void AudioPreference::serialize(YAML::Emitter &out) const { out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap; diff --git a/src/preferences.h b/src/preferences.h index a1dffdfcc7..f954d5f60a 100644 --- a/src/preferences.h +++ b/src/preferences.h @@ -238,6 +238,8 @@ class AudioPreference : public Serializable { AudioLayer *createAudioLayer(); AudioLayer *switchAndCreateAudioLayer(); + static std::vector<std::string> getSupportedAudioManagers(); + std::string getAudioApi() const { return audioApi_; } -- GitLab