]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/sconv-s16le.c
Get rid of some warnings: -Wunused-result
[pulseaudio] / src / pulsecore / sconv-s16le.c
index 37ebc9832445e5717b2e6e59fa98db9c2b1a6bdd..43587f3e4b8b5b67c8abb957a8d7644bd471e907 100644 (file)
@@ -5,7 +5,7 @@
 
   PulseAudio is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published
 
   PulseAudio is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published
-  by the Free Software Foundation; either version 2 of the License,
+  by the Free Software Foundation; either version 2.1 of the License,
   or (at your option) any later version.
 
   PulseAudio is distributed in the hope that it will be useful, but
   or (at your option) any later version.
 
   PulseAudio is distributed in the hope that it will be useful, but
 #include <inttypes.h>
 #include <stdio.h>
 
 #include <inttypes.h>
 #include <stdio.h>
 
-#include <liboil/liboilfuncs.h>
-
 #include <pulsecore/sconv.h>
 #include <pulsecore/macro.h>
 #include <pulsecore/log.h>
 #include <pulsecore/sconv.h>
 #include <pulsecore/macro.h>
 #include <pulsecore/log.h>
-
-#include "endianmacros.h"
+#include <pulsecore/endianmacros.h>
 
 #include "sconv-s16le.h"
 
 #ifndef INT16_FROM
 #define INT16_FROM PA_INT16_FROM_LE
 #endif
 
 #include "sconv-s16le.h"
 
 #ifndef INT16_FROM
 #define INT16_FROM PA_INT16_FROM_LE
 #endif
+#ifndef UINT16_FROM
+#define UINT16_FROM PA_UINT16_FROM_LE
+#endif
 
 #ifndef INT16_TO
 #define INT16_TO PA_INT16_TO_LE
 #endif
 
 #ifndef INT16_TO
 #define INT16_TO PA_INT16_TO_LE
 #endif
+#ifndef UINT16_TO
+#define UINT16_TO PA_UINT16_TO_LE
+#endif
 
 #ifndef INT32_FROM
 #define INT32_FROM PA_INT32_FROM_LE
 #endif
 
 #ifndef INT32_FROM
 #define INT32_FROM PA_INT32_FROM_LE
 #endif
+#ifndef UINT32_FROM
+#define UINT32_FROM PA_UINT32_FROM_LE
+#endif
 
 #ifndef INT32_TO
 #define INT32_TO PA_INT32_TO_LE
 #endif
 
 #ifndef INT32_TO
 #define INT32_TO PA_INT32_TO_LE
 #endif
+#ifndef UINT32_TO
+#define UINT32_TO PA_UINT32_TO_LE
+#endif
 
 #ifndef READ24
 #define READ24 PA_READ24LE
 #endif
 
 #ifndef READ24
 #define READ24 PA_READ24LE
 #endif
-
 #ifndef WRITE24
 #define WRITE24 PA_WRITE24LE
 #endif
 #ifndef WRITE24
 #define WRITE24 PA_WRITE24LE
 #endif
@@ -75,17 +83,13 @@ void pa_sconv_s16le_to_float32ne(unsigned n, const int16_t *a, float *b) {
     pa_assert(b);
 
 #if SWAP_WORDS == 1
     pa_assert(b);
 
 #if SWAP_WORDS == 1
-
     for (; n > 0; n--) {
         int16_t s = *(a++);
         *(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF;
     }
     for (; n > 0; n--) {
         int16_t s = *(a++);
         *(b++) = ((float) INT16_FROM(s))/(float) 0x7FFF;
     }
-
 #else
 #else
-{
-    static const double add = 0, factor = 1.0/0x7FFF;
-    oil_scaleconv_f32_s16(b, a, (int) n, &add, &factor);
-}
+    for (; n > 0; n--)
+        *(b++) = ((float) (*(a++)))/(float) 0x7FFF;
 #endif
 }
 
 #endif
 }
 
@@ -94,17 +98,13 @@ void pa_sconv_s32le_to_float32ne(unsigned n, const int32_t *a, float *b) {
     pa_assert(b);
 
 #if SWAP_WORDS == 1
     pa_assert(b);
 
 #if SWAP_WORDS == 1
-
     for (; n > 0; n--) {
         int32_t s = *(a++);
         *(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF);
     }
     for (; n > 0; n--) {
         int32_t s = *(a++);
         *(b++) = (float) (((double) INT32_FROM(s))/0x7FFFFFFF);
     }
-
 #else
 #else
-{
-    static const double add = 0, factor = 1.0/0x7FFFFFFF;
-    oil_scaleconv_f32_s32(b, a, (int) n, &add, &factor);
-}
+    for (; n > 0; n--)
+        *(b++) = (float) (((double) (*(a++)))/0x7FFFFFFF);
 #endif
 }
 
 #endif
 }
 
@@ -113,7 +113,6 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
     pa_assert(b);
 
 #if SWAP_WORDS == 1
     pa_assert(b);
 
 #if SWAP_WORDS == 1
-
     for (; n > 0; n--) {
         int16_t s;
         float v = *(a++);
     for (; n > 0; n--) {
         int16_t s;
         float v = *(a++);
@@ -122,12 +121,13 @@ void pa_sconv_s16le_from_float32ne(unsigned n, const float *a, int16_t *b) {
         s = (int16_t) lrintf(v * 0x7FFF);
         *(b++) = INT16_TO(s);
     }
         s = (int16_t) lrintf(v * 0x7FFF);
         *(b++) = INT16_TO(s);
     }
-
 #else
 #else
-{
-    static const double add = 0, factor = 0x7FFF;
-    oil_scaleconv_s16_f32(b, a, (int) n, &add, &factor);
-}
+    for (; n > 0; n--) {
+        float v = *(a++);
+
+        v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.f);
+        *(b++) = (int16_t) lrintf(v * 0x7FFF);
+    }
 #endif
 }
 
 #endif
 }
 
@@ -136,7 +136,6 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
     pa_assert(b);
 
 #if SWAP_WORDS == 1
     pa_assert(b);
 
 #if SWAP_WORDS == 1
-
     for (; n > 0; n--) {
         int32_t s;
         float v = *(a++);
     for (; n > 0; n--) {
         int32_t s;
         float v = *(a++);
@@ -145,12 +144,13 @@ void pa_sconv_s32le_from_float32ne(unsigned n, const float *a, int32_t *b) {
         s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
         *(b++) = INT32_TO(s);
     }
         s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
         *(b++) = INT32_TO(s);
     }
-
 #else
 #else
-{
-    static const double add = 0, factor = 0x7FFFFFFF;
-    oil_scaleconv_s32_f32(b, a, (int) n, &add, &factor);
-}
+    for (; n > 0; n--) {
+        float v = *(a++);
+
+        v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f);
+        *(b++) = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
+    }
 #endif
 }
 
 #endif
 }
 
@@ -353,3 +353,105 @@ void pa_sconv_s24le_from_float32re(unsigned n, const float *a, uint8_t *b) {
         b+=3;
     }
 }
         b+=3;
     }
 }
+
+void pa_sconv_s24_32le_to_s16ne(unsigned n, const uint32_t *a, int16_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        *b = (int16_t) (((int32_t) (UINT32_FROM(*a) << 8)) >> 16);
+        a++;
+        b++;
+    }
+}
+
+void pa_sconv_s24_32le_to_s16re(unsigned n, const uint32_t *a, int16_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        int16_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8) >> 16);
+        *b = PA_INT16_SWAP(s);
+        a++;
+        b++;
+    }
+}
+
+void pa_sconv_s24_32le_from_s16ne(unsigned n, const int16_t *a, uint32_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        *b = UINT32_TO(((uint32_t) ((int32_t) *a << 16)) >> 8);
+        a++;
+        b++;
+    }
+}
+
+void pa_sconv_s24_32le_from_s16re(unsigned n, const int16_t *a, uint32_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        uint32_t s = ((uint32_t) ((int32_t) PA_INT16_SWAP(*a) << 16)) >> 8;
+        *b = UINT32_TO(s);
+        a++;
+        b++;
+    }
+}
+
+void pa_sconv_s24_32le_to_float32ne(unsigned n, const uint32_t *a, float *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+        *b = (float) s / (float) 0x7FFFFFFF;
+        a ++;
+        b ++;
+    }
+}
+
+void pa_sconv_s24_32le_to_float32re(unsigned n, const uint32_t *a, float *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+        float k = (float) s / (float) 0x7FFFFFFF;
+        *b = PA_FLOAT32_SWAP(k);
+        a ++;
+        b ++;
+    }
+}
+
+void pa_sconv_s24_32le_from_float32ne(unsigned n, const float *a, uint32_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        int32_t s;
+        float v = *a;
+        v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f);
+        s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
+        *b = UINT32_TO(((uint32_t) s) >> 8);
+        a++;
+        b++;
+    }
+}
+
+void pa_sconv_s24_32le_from_float32re(unsigned n, const float *a, uint32_t *b) {
+    pa_assert(a);
+    pa_assert(b);
+
+    for (; n > 0; n--) {
+        int32_t s;
+        float v = *a;
+        v = PA_FLOAT32_SWAP(v);
+        v = PA_CLAMP_UNLIKELY(v, -1.0f, 1.0f);
+        s = (int32_t) lrint((double) v * (double) 0x7FFFFFFF);
+        *b = UINT32_TO(((uint32_t) s) >> 8);
+        a++;
+        b++;
+    }
+}