OSDN Git Service

Fix float to i16 conversion in primitives.c
[android-x86/system-media.git] / audio_utils / primitives.c
index af9ab40..e2d4abc 100644 (file)
@@ -16,7 +16,7 @@
 
 #include <audio_utils/primitives.h>
 
-void ditherAndClamp(int32_t* out, int32_t const *sums, size_t c)
+void ditherAndClamp(int32_t* out, const int32_t *sums, size_t c)
 {
     size_t i;
     for (i=0 ; i<c ; i++) {
@@ -46,6 +46,20 @@ void memcpy_to_u8_from_i16(uint8_t *dst, const int16_t *src, size_t count)
     }
 }
 
+void memcpy_to_i16_from_i32(int16_t *dst, const int32_t *src, size_t count)
+{
+    while (count--) {
+        *dst++ = *src++ >> 16;
+    }
+}
+
+void memcpy_to_i16_from_float(int16_t *dst, const float *src, size_t count)
+{
+    while (count--) {
+        *dst++ = clamp16FromFloat(*src++);
+    }
+}
+
 void downmix_to_mono_i16_from_stereo_i16(int16_t *dst, const int16_t *src, size_t count)
 {
     while (count--) {