]> git.sesse.net Git - vlc/commitdiff
wmafixed: optimize
authorJean-Paul Saman <jean-paul.saman@m2x.nl>
Sat, 7 Feb 2009 15:29:41 +0000 (16:29 +0100)
committerJean-Paul Saman <jean-paul.saman@m2x.nl>
Sat, 7 Feb 2009 15:32:52 +0000 (16:32 +0100)
modules/codec/wmafixed/wmadeci.c
modules/codec/wmafixed/wmafixed.c

index 29a4e48de2dd306e93d6a2da88af413211ce72ff..41ff8fb5800bae05b574f4a4077668e9b7bdd092 100644 (file)
@@ -238,7 +238,7 @@ static void wma_window(WMADecodeContext *s, int32_t *in, int32_t *out)
          /*previous block was smaller or the same size, so use it's size to set the window length*/
          block_len = 1 << s->prev_block_len_bits;
          /*find the middle of the two overlapped blocks, this will be the first overlapped sample*/
-         n = (s->block_len - block_len) / 2;
+         n = (s->block_len - block_len) >> 1;
          bsize = s->frame_len_bits - s->prev_block_len_bits;
 
          vector_fmul_add_add(out+n, in+n, s->windows[bsize],  block_len);
@@ -261,7 +261,7 @@ static void wma_window(WMADecodeContext *s, int32_t *in, int32_t *out)
 
      } else {
          block_len = 1 << s->next_block_len_bits;
-         n = (s->block_len - block_len) / 2;
+         n = (s->block_len - block_len) >> 1;
          bsize = s->frame_len_bits - s->next_block_len_bits;
 
          memcpy(out, in, n*sizeof(int32_t));
index 0656c611931f4e479d3d2276fd6d0ce23e2bd435..c178f44223a709a74ed821db2daeb31a3d249e55 100644 (file)
@@ -122,7 +122,7 @@ int32_t fixsqrt32(int32_t x)
 
 #undef STEP
 
-    return (int32_t)(r << (PRECISION / 2));
+    return (int32_t)(r << (PRECISION >> 1));
 }
 
 /* Inverse gain of circular cordic rotation in s0.31 format. */
@@ -191,17 +191,17 @@ long fsincos(unsigned long phase, int32_t *cos)
     z = phase;
 
     /* The phase has to be somewhere between 0..pi for this to work right */
-    if (z < 0xffffffff / 4) {
+    if (z < 0xffffffff >> 2) {
         /* z in first quadrant, z += pi/2 to correct */
         x = -x;
-        z += 0xffffffff / 4;
-    } else if (z < 3 * (0xffffffff / 4)) {
+        z += 0xffffffff >> 2;
+    } else if (z < 3 * (0xffffffff >> 2)) {
         /* z in third quadrant, z -= pi/2 to correct */
-        z -= 0xffffffff / 4;
+        z -= 0xffffffff >> 2;
     } else {
         /* z in fourth quadrant, z -= 3pi/2 to correct */
         x = -x;
-        z -= 3 * (0xffffffff / 4);
+        z -= 3 * (0xffffffff >> 2);
     }
 
     /* Each iteration adds roughly 1-bit of extra precision */
@@ -211,7 +211,7 @@ long fsincos(unsigned long phase, int32_t *cos)
         z1 = atan_table[i];
 
         /* Decided which direction to rotate vector. Pivot point is pi/2 */
-        if (z >= 0xffffffff / 4) {
+        if (z >= 0xffffffff >> 2) {
             x -= y1;
             y += x1;
             z -= z1;