From 89b0fa5cd66765dc616ea4c9ca2035e58ca9e8d5 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Fri, 13 May 2016 18:47:31 -1000 Subject: [PATCH] Add API for reporting submix sample rate and format --- include/boo/audiodev/IAudioSubmix.hpp | 13 +++++++++++++ lib/audiodev/AudioSubmix.cpp | 19 +++++++++++++++++++ lib/audiodev/AudioSubmix.hpp | 5 ++--- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/include/boo/audiodev/IAudioSubmix.hpp b/include/boo/audiodev/IAudioSubmix.hpp index 8956c67..67afc01 100644 --- a/include/boo/audiodev/IAudioSubmix.hpp +++ b/include/boo/audiodev/IAudioSubmix.hpp @@ -12,6 +12,13 @@ class IAudioVoiceCallback; struct ChannelMap; struct IAudioSubmixCallback; +enum class SubmixFormat +{ + Int16, + Int32, + Float +}; + struct IAudioSubmix { virtual ~IAudioSubmix() = default; @@ -31,6 +38,12 @@ struct IAudioSubmix /** Sets gain factors for each channel once accumulated by the submix */ virtual void setChannelGains(const float gains[8])=0; + + /** Gets fixed sample rate of submix this way */ + virtual double getSampleRate() const=0; + + /** Gets fixed sample format of submix this way */ + virtual SubmixFormat getSampleFormat() const=0; }; struct IAudioSubmixCallback diff --git a/lib/audiodev/AudioSubmix.cpp b/lib/audiodev/AudioSubmix.cpp index 6bca5f7..0efbb26 100644 --- a/lib/audiodev/AudioSubmix.cpp +++ b/lib/audiodev/AudioSubmix.cpp @@ -178,4 +178,23 @@ const AudioVoiceEngineMixInfo& AudioSubmix::mixInfo() const return m_parent.mixInfo(); } +double AudioSubmix::getSampleRate() const +{ + return mixInfo().m_sampleRate; +} + +SubmixFormat AudioSubmix::getSampleFormat() const +{ + switch (mixInfo().m_sampleFormat) + { + case SOXR_INT16_I: + default: + return SubmixFormat::Int16; + case SOXR_INT32_I: + return SubmixFormat::Int32; + case SOXR_FLOAT32_I: + return SubmixFormat::Float; + } +} + } diff --git a/lib/audiodev/AudioSubmix.hpp b/lib/audiodev/AudioSubmix.hpp index 1306bbd..6892d22 100644 --- a/lib/audiodev/AudioSubmix.hpp +++ b/lib/audiodev/AudioSubmix.hpp @@ -61,12 +61,11 @@ public: bool dynamicPitch=false); std::unique_ptr allocateNewSubmix(IAudioSubmixCallback* cb=nullptr); - void setChannelGains(const float gains[8]); - void unbindSubmix(); - const AudioVoiceEngineMixInfo& mixInfo() const; + double getSampleRate() const; + SubmixFormat getSampleFormat() const; }; }