summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2015-02-28 00:38:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-02-28 00:38:25 +0000
commitd4bd93b22ab9f7dfa32dfc6d48e008db3ea9c634 (patch)
tree6e1effbb661cd90a1c09aed0db9cc44cedaf1544 /include
parent9060199701c97b290aa4a4184d147e0311ab8897 (diff)
parent0e48d25606c82def035ad10a5b3923767a765cdd (diff)
downloadframeworks_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.h13
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