Commit 67415a4c authored by Jean-Paul Saman's avatar Jean-Paul Saman

wmafixed: optimize

parent 9bca33b9
...@@ -238,7 +238,7 @@ static void wma_window(WMADecodeContext *s, int32_t *in, int32_t *out) ...@@ -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*/ /*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; block_len = 1 << s->prev_block_len_bits;
/*find the middle of the two overlapped blocks, this will be the first overlapped sample*/ /*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; bsize = s->frame_len_bits - s->prev_block_len_bits;
vector_fmul_add_add(out+n, in+n, s->windows[bsize], block_len); 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) ...@@ -261,7 +261,7 @@ static void wma_window(WMADecodeContext *s, int32_t *in, int32_t *out)
} else { } else {
block_len = 1 << s->next_block_len_bits; 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; bsize = s->frame_len_bits - s->next_block_len_bits;
memcpy(out, in, n*sizeof(int32_t)); memcpy(out, in, n*sizeof(int32_t));
......
...@@ -122,7 +122,7 @@ int32_t fixsqrt32(int32_t x) ...@@ -122,7 +122,7 @@ int32_t fixsqrt32(int32_t x)
#undef STEP #undef STEP
return (int32_t)(r << (PRECISION / 2)); return (int32_t)(r << (PRECISION >> 1));
} }
/* Inverse gain of circular cordic rotation in s0.31 format. */ /* Inverse gain of circular cordic rotation in s0.31 format. */
...@@ -191,17 +191,17 @@ long fsincos(unsigned long phase, int32_t *cos) ...@@ -191,17 +191,17 @@ long fsincos(unsigned long phase, int32_t *cos)
z = phase; z = phase;
/* The phase has to be somewhere between 0..pi for this to work right */ /* 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 */ /* z in first quadrant, z += pi/2 to correct */
x = -x; x = -x;
z += 0xffffffff / 4; z += 0xffffffff >> 2;
} else if (z < 3 * (0xffffffff / 4)) { } else if (z < 3 * (0xffffffff >> 2)) {
/* z in third quadrant, z -= pi/2 to correct */ /* z in third quadrant, z -= pi/2 to correct */
z -= 0xffffffff / 4; z -= 0xffffffff >> 2;
} else { } else {
/* z in fourth quadrant, z -= 3pi/2 to correct */ /* z in fourth quadrant, z -= 3pi/2 to correct */
x = -x; x = -x;
z -= 3 * (0xffffffff / 4); z -= 3 * (0xffffffff >> 2);
} }
/* Each iteration adds roughly 1-bit of extra precision */ /* Each iteration adds roughly 1-bit of extra precision */
...@@ -211,7 +211,7 @@ long fsincos(unsigned long phase, int32_t *cos) ...@@ -211,7 +211,7 @@ long fsincos(unsigned long phase, int32_t *cos)
z1 = atan_table[i]; z1 = atan_table[i];
/* Decided which direction to rotate vector. Pivot point is pi/2 */ /* Decided which direction to rotate vector. Pivot point is pi/2 */
if (z >= 0xffffffff / 4) { if (z >= 0xffffffff >> 2) {
x -= y1; x -= y1;
y += x1; y += x1;
z -= z1; z -= z1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment