sconv: fix a few minor conversion issues
authorLennart Poettering <lennart@poettering.net>
Fri, 1 May 2009 02:22:08 +0000 (04:22 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 1 May 2009 02:22:08 +0000 (04:22 +0200)
src/pulsecore/sconv-s16le.c
src/pulsecore/sconv.c

index 307ce7b..43b8cb3 100644 (file)
@@ -370,7 +370,7 @@ void pa_sconv_s24_32le_to_s16ne(unsigned n, const uint32_t *a, int16_t *b) {
     pa_assert(b);
 
     for (; n > 0; n--) {
-        *b = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8) >> 16);
+        *b = (int16_t) (((int32_t) (UINT32_FROM(*a) << 8)) >> 16);
         a++;
         b++;
     }
@@ -416,8 +416,8 @@ void pa_sconv_s24_32le_to_float32ne(unsigned n, const uint32_t *a, float *b) {
     pa_assert(b);
 
     for (; n > 0; n--) {
-        int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
-        *b = ((float) s) / 0x7FFFFFFF;
+        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+        *b = (float) s / (float) 0x7FFFFFFF;
         a ++;
         b ++;
     }
@@ -428,8 +428,8 @@ void pa_sconv_s24_32le_to_float32re(unsigned n, const uint32_t *a, float *b) {
     pa_assert(b);
 
     for (; n > 0; n--) {
-        int32_t s = (int16_t) ((int32_t) (UINT32_FROM(*a) << 8));
-        float k = ((float) s) / 0x7FFFFFFF;
+        int32_t s = (int32_t) (UINT32_FROM(*a) << 8);
+        float k = (float) s / (float) 0x7FFFFFFF;
         *b = PA_FLOAT32_SWAP(k);
         a ++;
         b ++;
index 29a9a45..d89f428 100644 (file)
@@ -75,7 +75,7 @@ static void u8_from_s16ne(unsigned n, const int16_t *a, uint8_t *b) {
     pa_assert(b);
 
     for (; n > 0; n--, a++, b++)
-        *b = (uint8_t) (*a / 0x100 + 0x80);
+        *b = (uint8_t) ((uint16_t) *a >> 8) + (uint8_t) 0x80U;
 }
 
 /* float32 */