aboutsummaryrefslogtreecommitdiff
path: root/common_audio/include/audio_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'common_audio/include/audio_util.h')
-rw-r--r--common_audio/include/audio_util.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/common_audio/include/audio_util.h b/common_audio/include/audio_util.h
index 9925e54b02..f6b6bfdcd6 100644
--- a/common_audio/include/audio_util.h
+++ b/common_audio/include/audio_util.h
@@ -43,6 +43,13 @@ static inline int16_t FloatS16ToS16(float v) {
return static_cast<int16_t>(v + std::copysign(0.5f, v));
}
+static inline int16_t FloatToS16(float v) {
+ v *= 32768.f;
+ v = std::min(v, 32767.f);
+ v = std::max(v, -32768.f);
+ return static_cast<int16_t>(v + std::copysign(0.5f, v));
+}
+
static inline float FloatToFloatS16(float v) {
v = std::min(v, 1.f);
v = std::max(v, -1.f);
@@ -56,7 +63,9 @@ static inline float FloatS16ToFloat(float v) {
return v * kScaling;
}
+void FloatToS16(const float* src, size_t size, int16_t* dest);
void S16ToFloat(const int16_t* src, size_t size, float* dest);
+void S16ToFloatS16(const int16_t* src, size_t size, float* dest);
void FloatS16ToS16(const float* src, size_t size, int16_t* dest);
void FloatToFloatS16(const float* src, size_t size, float* dest);
void FloatS16ToFloat(const float* src, size_t size, float* dest);