diff options
author | Andy Hung <hunga@google.com> | 2015-02-28 00:38:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-02-28 00:38:25 +0000 |
commit | d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634 (patch) | |
tree | 6e1effbb661cd90a1c09aed0db9cc44cedaf1544 /include | |
parent | 9060199701c97b290aa4a4184d147e0311ab8897 (diff) | |
parent | 0e48d25606c82def035ad10a5b3923767a765cdd (diff) | |
download | frameworks_av-d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634.zip frameworks_av-d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634.tar.gz frameworks_av-d4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634.tar.bz2 |
Merge "Change AudioTrack resampling buffers from 3 to 2"
Diffstat (limited to 'include')
-rw-r--r-- | include/media/AudioResamplerPublic.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/media/AudioResamplerPublic.h b/include/media/AudioResamplerPublic.h index 97847a0..b705efa 100644 --- a/include/media/AudioResamplerPublic.h +++ b/include/media/AudioResamplerPublic.h @@ -26,4 +26,17 @@ // TODO: replace with an API #define AUDIO_RESAMPLER_DOWN_RATIO_MAX 256 +// Returns the source frames needed to resample to destination frames. This is not a precise +// value and depends on the resampler (and possibly how it handles rounding internally). +// Nevertheless, this should be an upper bound on the requirements of the resampler. +// If srcSampleRate and dstSampleRate are equal, then it returns destination frames, which +// may not be true if the resampler is asynchronous. +static inline size_t sourceFramesNeeded( + uint32_t srcSampleRate, size_t dstFramesRequired, uint32_t dstSampleRate) { + // +1 for rounding - always do this even if matched ratio (resampler may use phases not ratio) + // +1 for additional sample needed for interpolation + return srcSampleRate == dstSampleRate ? dstFramesRequired : + size_t((uint64_t)dstFramesRequired * srcSampleRate / dstSampleRate + 1 + 1); +} + #endif // ANDROID_AUDIO_RESAMPLER_PUBLIC_H |