fix SINC resampler on non ARM architectures

make sure the C version of the code generates the same
output than the ARM assemply version.

Change-Id: Ide218785c35d02598b2d7278e646b1b178148698
diff --git a/services/audioflinger/AudioResamplerSinc.cpp b/services/audioflinger/AudioResamplerSinc.cpp
index edfed49..e0ea4a4 100644
--- a/services/audioflinger/AudioResamplerSinc.cpp
+++ b/services/audioflinger/AudioResamplerSinc.cpp
@@ -141,11 +141,8 @@
     }
     return out;
 #else
-    if (left) {
-        return int16_t(in>>16) * int16_t(vRL&0xFFFF);
-    } else {
-        return int16_t(in>>16) * int16_t(vRL>>16);
-    }
+    int16_t v = left ? int16_t(vRL) : int16_t(vRL>>16);
+    return int32_t((int64_t(in) * v) >> 16);
 #endif
 }
 
@@ -160,9 +157,7 @@
          : );
     return out;
 #else
-    return a + in * (v>>16);
-    // improved precision
-    // return a + in * (v>>16) + ((in * (v & 0xffff)) >> 16);
+    return a + int32_t((int64_t(v) * in) >> 16);
 #endif
 }
 
@@ -184,13 +179,8 @@
     }
     return out;
 #else
-    if (left) {
-        return a + (int16_t(inRL&0xFFFF) * (v>>16));
-        //improved precision
-        // return a + (int16_t(inRL&0xFFFF) * (v>>16)) + ((int16_t(inRL&0xFFFF) * (v & 0xffff)) >> 16);
-    } else {
-        return a + (int16_t(inRL>>16) * (v>>16));
-    }
+    int16_t s = left ? int16_t(inRL) : int16_t(inRL>>16);
+    return a + int32_t((int64_t(v) * s) >> 16);
 #endif
 }