diff options
Diffstat (limited to 'services/audioflinger/AudioResampler.h')
-rw-r--r-- | services/audioflinger/AudioResampler.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/services/audioflinger/AudioResampler.h b/services/audioflinger/AudioResampler.h index be747f6..cdc6d92 100644 --- a/services/audioflinger/AudioResampler.h +++ b/services/audioflinger/AudioResampler.h @@ -47,6 +47,8 @@ public: DYN_HIGH_QUALITY=7, }; + static const float UNITY_GAIN_FLOAT = 1.0f; + static AudioResampler* create(audio_format_t format, int inChannelCount, int32_t sampleRate, src_quality quality=DEFAULT_QUALITY); @@ -54,7 +56,7 @@ public: virtual void init() = 0; virtual void setSampleRate(int32_t inSampleRate); - virtual void setVolume(int16_t left, int16_t right); + virtual void setVolume(float left, float right); virtual void setLocalTimeFreq(uint64_t freq); // set the PTS of the next buffer output by the resampler @@ -142,6 +144,15 @@ protected: + (mSampleRate - 1))/mSampleRate; } + inline float clampFloatVol(float volume) { + if (volume > UNITY_GAIN_FLOAT) { + return UNITY_GAIN_FLOAT; + } else if (volume >= 0.) { + return volume; + } + return 0.; // NaN or negative volume maps to 0. + } + private: const src_quality mQuality; |