| Index: source/libvpx/vp9/encoder/vp9_dct.c
|
| ===================================================================
|
| --- source/libvpx/vp9/encoder/vp9_dct.c (revision 240950)
|
| +++ source/libvpx/vp9/encoder/vp9_dct.c (working copy)
|
| @@ -20,6 +20,12 @@
|
|
|
| #include "vp9/encoder/vp9_dct.h"
|
|
|
| +static INLINE int fdct_round_shift(int input) {
|
| + int rv = ROUND_POWER_OF_TWO(input, DCT_CONST_BITS);
|
| + assert(INT16_MIN <= rv && rv <= INT16_MAX);
|
| + return rv;
|
| +}
|
| +
|
| static void fdct4(const int16_t *input, int16_t *output) {
|
| int16_t step[4];
|
| int temp1, temp2;
|
| @@ -31,12 +37,12 @@
|
|
|
| temp1 = (step[0] + step[1]) * cospi_16_64;
|
| temp2 = (step[0] - step[1]) * cospi_16_64;
|
| - output[0] = dct_const_round_shift(temp1);
|
| - output[2] = dct_const_round_shift(temp2);
|
| + output[0] = fdct_round_shift(temp1);
|
| + output[2] = fdct_round_shift(temp2);
|
| temp1 = step[2] * cospi_24_64 + step[3] * cospi_8_64;
|
| temp2 = -step[2] * cospi_8_64 + step[3] * cospi_24_64;
|
| - output[1] = dct_const_round_shift(temp1);
|
| - output[3] = dct_const_round_shift(temp2);
|
| + output[1] = fdct_round_shift(temp1);
|
| + output[3] = fdct_round_shift(temp2);
|
| }
|
|
|
| void vp9_fdct4x4_c(const int16_t *input, int16_t *output, int stride) {
|
| @@ -80,12 +86,12 @@
|
| step[3] = input[0] - input[3];
|
| temp1 = (step[0] + step[1]) * cospi_16_64;
|
| temp2 = (step[0] - step[1]) * cospi_16_64;
|
| - out[0] = dct_const_round_shift(temp1);
|
| - out[2] = dct_const_round_shift(temp2);
|
| + out[0] = fdct_round_shift(temp1);
|
| + out[2] = fdct_round_shift(temp2);
|
| temp1 = step[2] * cospi_24_64 + step[3] * cospi_8_64;
|
| temp2 = -step[2] * cospi_8_64 + step[3] * cospi_24_64;
|
| - out[1] = dct_const_round_shift(temp1);
|
| - out[3] = dct_const_round_shift(temp2);
|
| + out[1] = fdct_round_shift(temp1);
|
| + out[3] = fdct_round_shift(temp2);
|
| // Do next column (which is a transposed row in second/horizontal pass)
|
| in++;
|
| out += 4;
|
| @@ -138,10 +144,10 @@
|
| s3 = x2 - x0 + x3;
|
|
|
| // 1-D transform scaling factor is sqrt(2).
|
| - output[0] = dct_const_round_shift(s0);
|
| - output[1] = dct_const_round_shift(s1);
|
| - output[2] = dct_const_round_shift(s2);
|
| - output[3] = dct_const_round_shift(s3);
|
| + output[0] = fdct_round_shift(s0);
|
| + output[1] = fdct_round_shift(s1);
|
| + output[2] = fdct_round_shift(s2);
|
| + output[3] = fdct_round_shift(s3);
|
| }
|
|
|
| static const transform_2d FHT_4[] = {
|
| @@ -204,16 +210,16 @@
|
| t1 = (x0 - x1) * cospi_16_64;
|
| t2 = x2 * cospi_24_64 + x3 * cospi_8_64;
|
| t3 = -x2 * cospi_8_64 + x3 * cospi_24_64;
|
| - output[0] = dct_const_round_shift(t0);
|
| - output[2] = dct_const_round_shift(t2);
|
| - output[4] = dct_const_round_shift(t1);
|
| - output[6] = dct_const_round_shift(t3);
|
| + output[0] = fdct_round_shift(t0);
|
| + output[2] = fdct_round_shift(t2);
|
| + output[4] = fdct_round_shift(t1);
|
| + output[6] = fdct_round_shift(t3);
|
|
|
| // Stage 2
|
| t0 = (s6 - s5) * cospi_16_64;
|
| t1 = (s6 + s5) * cospi_16_64;
|
| - t2 = dct_const_round_shift(t0);
|
| - t3 = dct_const_round_shift(t1);
|
| + t2 = fdct_round_shift(t0);
|
| + t3 = fdct_round_shift(t1);
|
|
|
| // Stage 3
|
| x0 = s4 + t2;
|
| @@ -226,10 +232,10 @@
|
| t1 = x1 * cospi_12_64 + x2 * cospi_20_64;
|
| t2 = x2 * cospi_12_64 + x1 * -cospi_20_64;
|
| t3 = x3 * cospi_28_64 + x0 * -cospi_4_64;
|
| - output[1] = dct_const_round_shift(t0);
|
| - output[3] = dct_const_round_shift(t2);
|
| - output[5] = dct_const_round_shift(t1);
|
| - output[7] = dct_const_round_shift(t3);
|
| + output[1] = fdct_round_shift(t0);
|
| + output[3] = fdct_round_shift(t2);
|
| + output[5] = fdct_round_shift(t1);
|
| + output[7] = fdct_round_shift(t3);
|
| }
|
|
|
| void vp9_fdct8x8_c(const int16_t *input, int16_t *final_output, int stride) {
|
| @@ -264,16 +270,16 @@
|
| t1 = (x0 - x1) * cospi_16_64;
|
| t2 = x2 * cospi_24_64 + x3 * cospi_8_64;
|
| t3 = -x2 * cospi_8_64 + x3 * cospi_24_64;
|
| - output[0 * 8] = dct_const_round_shift(t0);
|
| - output[2 * 8] = dct_const_round_shift(t2);
|
| - output[4 * 8] = dct_const_round_shift(t1);
|
| - output[6 * 8] = dct_const_round_shift(t3);
|
| + output[0 * 8] = fdct_round_shift(t0);
|
| + output[2 * 8] = fdct_round_shift(t2);
|
| + output[4 * 8] = fdct_round_shift(t1);
|
| + output[6 * 8] = fdct_round_shift(t3);
|
|
|
| // Stage 2
|
| t0 = (s6 - s5) * cospi_16_64;
|
| t1 = (s6 + s5) * cospi_16_64;
|
| - t2 = dct_const_round_shift(t0);
|
| - t3 = dct_const_round_shift(t1);
|
| + t2 = fdct_round_shift(t0);
|
| + t3 = fdct_round_shift(t1);
|
|
|
| // Stage 3
|
| x0 = s4 + t2;
|
| @@ -286,10 +292,10 @@
|
| t1 = x1 * cospi_12_64 + x2 * cospi_20_64;
|
| t2 = x2 * cospi_12_64 + x1 * -cospi_20_64;
|
| t3 = x3 * cospi_28_64 + x0 * -cospi_4_64;
|
| - output[1 * 8] = dct_const_round_shift(t0);
|
| - output[3 * 8] = dct_const_round_shift(t2);
|
| - output[5 * 8] = dct_const_round_shift(t1);
|
| - output[7 * 8] = dct_const_round_shift(t3);
|
| + output[1 * 8] = fdct_round_shift(t0);
|
| + output[3 * 8] = fdct_round_shift(t2);
|
| + output[5 * 8] = fdct_round_shift(t1);
|
| + output[7 * 8] = fdct_round_shift(t3);
|
| input++;
|
| output++;
|
| }
|
| @@ -388,16 +394,16 @@
|
| t1 = (x0 - x1) * cospi_16_64;
|
| t2 = x3 * cospi_8_64 + x2 * cospi_24_64;
|
| t3 = x3 * cospi_24_64 - x2 * cospi_8_64;
|
| - out[0] = dct_const_round_shift(t0);
|
| - out[4] = dct_const_round_shift(t2);
|
| - out[8] = dct_const_round_shift(t1);
|
| - out[12] = dct_const_round_shift(t3);
|
| + out[0] = fdct_round_shift(t0);
|
| + out[4] = fdct_round_shift(t2);
|
| + out[8] = fdct_round_shift(t1);
|
| + out[12] = fdct_round_shift(t3);
|
|
|
| // Stage 2
|
| t0 = (s6 - s5) * cospi_16_64;
|
| t1 = (s6 + s5) * cospi_16_64;
|
| - t2 = dct_const_round_shift(t0);
|
| - t3 = dct_const_round_shift(t1);
|
| + t2 = fdct_round_shift(t0);
|
| + t3 = fdct_round_shift(t1);
|
|
|
| // Stage 3
|
| x0 = s4 + t2;
|
| @@ -410,22 +416,22 @@
|
| t1 = x1 * cospi_12_64 + x2 * cospi_20_64;
|
| t2 = x2 * cospi_12_64 + x1 * -cospi_20_64;
|
| t3 = x3 * cospi_28_64 + x0 * -cospi_4_64;
|
| - out[2] = dct_const_round_shift(t0);
|
| - out[6] = dct_const_round_shift(t2);
|
| - out[10] = dct_const_round_shift(t1);
|
| - out[14] = dct_const_round_shift(t3);
|
| + out[2] = fdct_round_shift(t0);
|
| + out[6] = fdct_round_shift(t2);
|
| + out[10] = fdct_round_shift(t1);
|
| + out[14] = fdct_round_shift(t3);
|
| }
|
| // Work on the next eight values; step1 -> odd_results
|
| {
|
| // step 2
|
| temp1 = (step1[5] - step1[2]) * cospi_16_64;
|
| temp2 = (step1[4] - step1[3]) * cospi_16_64;
|
| - step2[2] = dct_const_round_shift(temp1);
|
| - step2[3] = dct_const_round_shift(temp2);
|
| + step2[2] = fdct_round_shift(temp1);
|
| + step2[3] = fdct_round_shift(temp2);
|
| temp1 = (step1[4] + step1[3]) * cospi_16_64;
|
| temp2 = (step1[5] + step1[2]) * cospi_16_64;
|
| - step2[4] = dct_const_round_shift(temp1);
|
| - step2[5] = dct_const_round_shift(temp2);
|
| + step2[4] = fdct_round_shift(temp1);
|
| + step2[5] = fdct_round_shift(temp2);
|
| // step 3
|
| step3[0] = step1[0] + step2[3];
|
| step3[1] = step1[1] + step2[2];
|
| @@ -438,12 +444,12 @@
|
| // step 4
|
| temp1 = step3[1] * -cospi_8_64 + step3[6] * cospi_24_64;
|
| temp2 = step3[2] * -cospi_24_64 - step3[5] * cospi_8_64;
|
| - step2[1] = dct_const_round_shift(temp1);
|
| - step2[2] = dct_const_round_shift(temp2);
|
| + step2[1] = fdct_round_shift(temp1);
|
| + step2[2] = fdct_round_shift(temp2);
|
| temp1 = step3[2] * -cospi_8_64 + step3[5] * cospi_24_64;
|
| temp2 = step3[1] * cospi_24_64 + step3[6] * cospi_8_64;
|
| - step2[5] = dct_const_round_shift(temp1);
|
| - step2[6] = dct_const_round_shift(temp2);
|
| + step2[5] = fdct_round_shift(temp1);
|
| + step2[6] = fdct_round_shift(temp2);
|
| // step 5
|
| step1[0] = step3[0] + step2[1];
|
| step1[1] = step3[0] - step2[1];
|
| @@ -456,20 +462,20 @@
|
| // step 6
|
| temp1 = step1[0] * cospi_30_64 + step1[7] * cospi_2_64;
|
| temp2 = step1[1] * cospi_14_64 + step1[6] * cospi_18_64;
|
| - out[1] = dct_const_round_shift(temp1);
|
| - out[9] = dct_const_round_shift(temp2);
|
| + out[1] = fdct_round_shift(temp1);
|
| + out[9] = fdct_round_shift(temp2);
|
| temp1 = step1[2] * cospi_22_64 + step1[5] * cospi_10_64;
|
| temp2 = step1[3] * cospi_6_64 + step1[4] * cospi_26_64;
|
| - out[5] = dct_const_round_shift(temp1);
|
| - out[13] = dct_const_round_shift(temp2);
|
| + out[5] = fdct_round_shift(temp1);
|
| + out[13] = fdct_round_shift(temp2);
|
| temp1 = step1[3] * -cospi_26_64 + step1[4] * cospi_6_64;
|
| temp2 = step1[2] * -cospi_10_64 + step1[5] * cospi_22_64;
|
| - out[3] = dct_const_round_shift(temp1);
|
| - out[11] = dct_const_round_shift(temp2);
|
| + out[3] = fdct_round_shift(temp1);
|
| + out[11] = fdct_round_shift(temp2);
|
| temp1 = step1[1] * -cospi_18_64 + step1[6] * cospi_14_64;
|
| temp2 = step1[0] * -cospi_2_64 + step1[7] * cospi_30_64;
|
| - out[7] = dct_const_round_shift(temp1);
|
| - out[15] = dct_const_round_shift(temp2);
|
| + out[7] = fdct_round_shift(temp1);
|
| + out[15] = fdct_round_shift(temp2);
|
| }
|
| // Do next column (which is a transposed row in second/horizontal pass)
|
| in++;
|
| @@ -503,14 +509,14 @@
|
| s6 = cospi_26_64 * x6 + cospi_6_64 * x7;
|
| s7 = cospi_6_64 * x6 - cospi_26_64 * x7;
|
|
|
| - x0 = dct_const_round_shift(s0 + s4);
|
| - x1 = dct_const_round_shift(s1 + s5);
|
| - x2 = dct_const_round_shift(s2 + s6);
|
| - x3 = dct_const_round_shift(s3 + s7);
|
| - x4 = dct_const_round_shift(s0 - s4);
|
| - x5 = dct_const_round_shift(s1 - s5);
|
| - x6 = dct_const_round_shift(s2 - s6);
|
| - x7 = dct_const_round_shift(s3 - s7);
|
| + x0 = fdct_round_shift(s0 + s4);
|
| + x1 = fdct_round_shift(s1 + s5);
|
| + x2 = fdct_round_shift(s2 + s6);
|
| + x3 = fdct_round_shift(s3 + s7);
|
| + x4 = fdct_round_shift(s0 - s4);
|
| + x5 = fdct_round_shift(s1 - s5);
|
| + x6 = fdct_round_shift(s2 - s6);
|
| + x7 = fdct_round_shift(s3 - s7);
|
|
|
| // stage 2
|
| s0 = x0;
|
| @@ -526,10 +532,10 @@
|
| x1 = s1 + s3;
|
| x2 = s0 - s2;
|
| x3 = s1 - s3;
|
| - x4 = dct_const_round_shift(s4 + s6);
|
| - x5 = dct_const_round_shift(s5 + s7);
|
| - x6 = dct_const_round_shift(s4 - s6);
|
| - x7 = dct_const_round_shift(s5 - s7);
|
| + x4 = fdct_round_shift(s4 + s6);
|
| + x5 = fdct_round_shift(s5 + s7);
|
| + x6 = fdct_round_shift(s4 - s6);
|
| + x7 = fdct_round_shift(s5 - s7);
|
|
|
| // stage 3
|
| s2 = cospi_16_64 * (x2 + x3);
|
| @@ -537,10 +543,10 @@
|
| s6 = cospi_16_64 * (x6 + x7);
|
| s7 = cospi_16_64 * (x6 - x7);
|
|
|
| - x2 = dct_const_round_shift(s2);
|
| - x3 = dct_const_round_shift(s3);
|
| - x6 = dct_const_round_shift(s6);
|
| - x7 = dct_const_round_shift(s7);
|
| + x2 = fdct_round_shift(s2);
|
| + x3 = fdct_round_shift(s3);
|
| + x6 = fdct_round_shift(s6);
|
| + x7 = fdct_round_shift(s7);
|
|
|
| output[0] = x0;
|
| output[1] = - x4;
|
| @@ -693,16 +699,16 @@
|
| t1 = (x0 - x1) * cospi_16_64;
|
| t2 = x3 * cospi_8_64 + x2 * cospi_24_64;
|
| t3 = x3 * cospi_24_64 - x2 * cospi_8_64;
|
| - out[0] = dct_const_round_shift(t0);
|
| - out[4] = dct_const_round_shift(t2);
|
| - out[8] = dct_const_round_shift(t1);
|
| - out[12] = dct_const_round_shift(t3);
|
| + out[0] = fdct_round_shift(t0);
|
| + out[4] = fdct_round_shift(t2);
|
| + out[8] = fdct_round_shift(t1);
|
| + out[12] = fdct_round_shift(t3);
|
|
|
| // Stage 2
|
| t0 = (s6 - s5) * cospi_16_64;
|
| t1 = (s6 + s5) * cospi_16_64;
|
| - t2 = dct_const_round_shift(t0);
|
| - t3 = dct_const_round_shift(t1);
|
| + t2 = fdct_round_shift(t0);
|
| + t3 = fdct_round_shift(t1);
|
|
|
| // Stage 3
|
| x0 = s4 + t2;
|
| @@ -715,21 +721,21 @@
|
| t1 = x1 * cospi_12_64 + x2 * cospi_20_64;
|
| t2 = x2 * cospi_12_64 + x1 * -cospi_20_64;
|
| t3 = x3 * cospi_28_64 + x0 * -cospi_4_64;
|
| - out[2] = dct_const_round_shift(t0);
|
| - out[6] = dct_const_round_shift(t2);
|
| - out[10] = dct_const_round_shift(t1);
|
| - out[14] = dct_const_round_shift(t3);
|
| + out[2] = fdct_round_shift(t0);
|
| + out[6] = fdct_round_shift(t2);
|
| + out[10] = fdct_round_shift(t1);
|
| + out[14] = fdct_round_shift(t3);
|
| }
|
|
|
| // step 2
|
| temp1 = (step1[5] - step1[2]) * cospi_16_64;
|
| temp2 = (step1[4] - step1[3]) * cospi_16_64;
|
| - step2[2] = dct_const_round_shift(temp1);
|
| - step2[3] = dct_const_round_shift(temp2);
|
| + step2[2] = fdct_round_shift(temp1);
|
| + step2[3] = fdct_round_shift(temp2);
|
| temp1 = (step1[4] + step1[3]) * cospi_16_64;
|
| temp2 = (step1[5] + step1[2]) * cospi_16_64;
|
| - step2[4] = dct_const_round_shift(temp1);
|
| - step2[5] = dct_const_round_shift(temp2);
|
| + step2[4] = fdct_round_shift(temp1);
|
| + step2[5] = fdct_round_shift(temp2);
|
|
|
| // step 3
|
| step3[0] = step1[0] + step2[3];
|
| @@ -744,12 +750,12 @@
|
| // step 4
|
| temp1 = step3[1] * -cospi_8_64 + step3[6] * cospi_24_64;
|
| temp2 = step3[2] * -cospi_24_64 - step3[5] * cospi_8_64;
|
| - step2[1] = dct_const_round_shift(temp1);
|
| - step2[2] = dct_const_round_shift(temp2);
|
| + step2[1] = fdct_round_shift(temp1);
|
| + step2[2] = fdct_round_shift(temp2);
|
| temp1 = step3[2] * -cospi_8_64 + step3[5] * cospi_24_64;
|
| temp2 = step3[1] * cospi_24_64 + step3[6] * cospi_8_64;
|
| - step2[5] = dct_const_round_shift(temp1);
|
| - step2[6] = dct_const_round_shift(temp2);
|
| + step2[5] = fdct_round_shift(temp1);
|
| + step2[6] = fdct_round_shift(temp2);
|
|
|
| // step 5
|
| step1[0] = step3[0] + step2[1];
|
| @@ -764,23 +770,23 @@
|
| // step 6
|
| temp1 = step1[0] * cospi_30_64 + step1[7] * cospi_2_64;
|
| temp2 = step1[1] * cospi_14_64 + step1[6] * cospi_18_64;
|
| - out[1] = dct_const_round_shift(temp1);
|
| - out[9] = dct_const_round_shift(temp2);
|
| + out[1] = fdct_round_shift(temp1);
|
| + out[9] = fdct_round_shift(temp2);
|
|
|
| temp1 = step1[2] * cospi_22_64 + step1[5] * cospi_10_64;
|
| temp2 = step1[3] * cospi_6_64 + step1[4] * cospi_26_64;
|
| - out[5] = dct_const_round_shift(temp1);
|
| - out[13] = dct_const_round_shift(temp2);
|
| + out[5] = fdct_round_shift(temp1);
|
| + out[13] = fdct_round_shift(temp2);
|
|
|
| temp1 = step1[3] * -cospi_26_64 + step1[4] * cospi_6_64;
|
| temp2 = step1[2] * -cospi_10_64 + step1[5] * cospi_22_64;
|
| - out[3] = dct_const_round_shift(temp1);
|
| - out[11] = dct_const_round_shift(temp2);
|
| + out[3] = fdct_round_shift(temp1);
|
| + out[11] = fdct_round_shift(temp2);
|
|
|
| temp1 = step1[1] * -cospi_18_64 + step1[6] * cospi_14_64;
|
| temp2 = step1[0] * -cospi_2_64 + step1[7] * cospi_30_64;
|
| - out[7] = dct_const_round_shift(temp1);
|
| - out[15] = dct_const_round_shift(temp2);
|
| + out[7] = fdct_round_shift(temp1);
|
| + out[15] = fdct_round_shift(temp2);
|
| }
|
|
|
| static void fadst16(const int16_t *input, int16_t *output) {
|
| @@ -821,22 +827,22 @@
|
| s14 = x14 * cospi_29_64 + x15 * cospi_3_64;
|
| s15 = x14 * cospi_3_64 - x15 * cospi_29_64;
|
|
|
| - x0 = dct_const_round_shift(s0 + s8);
|
| - x1 = dct_const_round_shift(s1 + s9);
|
| - x2 = dct_const_round_shift(s2 + s10);
|
| - x3 = dct_const_round_shift(s3 + s11);
|
| - x4 = dct_const_round_shift(s4 + s12);
|
| - x5 = dct_const_round_shift(s5 + s13);
|
| - x6 = dct_const_round_shift(s6 + s14);
|
| - x7 = dct_const_round_shift(s7 + s15);
|
| - x8 = dct_const_round_shift(s0 - s8);
|
| - x9 = dct_const_round_shift(s1 - s9);
|
| - x10 = dct_const_round_shift(s2 - s10);
|
| - x11 = dct_const_round_shift(s3 - s11);
|
| - x12 = dct_const_round_shift(s4 - s12);
|
| - x13 = dct_const_round_shift(s5 - s13);
|
| - x14 = dct_const_round_shift(s6 - s14);
|
| - x15 = dct_const_round_shift(s7 - s15);
|
| + x0 = fdct_round_shift(s0 + s8);
|
| + x1 = fdct_round_shift(s1 + s9);
|
| + x2 = fdct_round_shift(s2 + s10);
|
| + x3 = fdct_round_shift(s3 + s11);
|
| + x4 = fdct_round_shift(s4 + s12);
|
| + x5 = fdct_round_shift(s5 + s13);
|
| + x6 = fdct_round_shift(s6 + s14);
|
| + x7 = fdct_round_shift(s7 + s15);
|
| + x8 = fdct_round_shift(s0 - s8);
|
| + x9 = fdct_round_shift(s1 - s9);
|
| + x10 = fdct_round_shift(s2 - s10);
|
| + x11 = fdct_round_shift(s3 - s11);
|
| + x12 = fdct_round_shift(s4 - s12);
|
| + x13 = fdct_round_shift(s5 - s13);
|
| + x14 = fdct_round_shift(s6 - s14);
|
| + x15 = fdct_round_shift(s7 - s15);
|
|
|
| // stage 2
|
| s0 = x0;
|
| @@ -864,14 +870,14 @@
|
| x5 = s1 - s5;
|
| x6 = s2 - s6;
|
| x7 = s3 - s7;
|
| - x8 = dct_const_round_shift(s8 + s12);
|
| - x9 = dct_const_round_shift(s9 + s13);
|
| - x10 = dct_const_round_shift(s10 + s14);
|
| - x11 = dct_const_round_shift(s11 + s15);
|
| - x12 = dct_const_round_shift(s8 - s12);
|
| - x13 = dct_const_round_shift(s9 - s13);
|
| - x14 = dct_const_round_shift(s10 - s14);
|
| - x15 = dct_const_round_shift(s11 - s15);
|
| + x8 = fdct_round_shift(s8 + s12);
|
| + x9 = fdct_round_shift(s9 + s13);
|
| + x10 = fdct_round_shift(s10 + s14);
|
| + x11 = fdct_round_shift(s11 + s15);
|
| + x12 = fdct_round_shift(s8 - s12);
|
| + x13 = fdct_round_shift(s9 - s13);
|
| + x14 = fdct_round_shift(s10 - s14);
|
| + x15 = fdct_round_shift(s11 - s15);
|
|
|
| // stage 3
|
| s0 = x0;
|
| @@ -895,18 +901,18 @@
|
| x1 = s1 + s3;
|
| x2 = s0 - s2;
|
| x3 = s1 - s3;
|
| - x4 = dct_const_round_shift(s4 + s6);
|
| - x5 = dct_const_round_shift(s5 + s7);
|
| - x6 = dct_const_round_shift(s4 - s6);
|
| - x7 = dct_const_round_shift(s5 - s7);
|
| + x4 = fdct_round_shift(s4 + s6);
|
| + x5 = fdct_round_shift(s5 + s7);
|
| + x6 = fdct_round_shift(s4 - s6);
|
| + x7 = fdct_round_shift(s5 - s7);
|
| x8 = s8 + s10;
|
| x9 = s9 + s11;
|
| x10 = s8 - s10;
|
| x11 = s9 - s11;
|
| - x12 = dct_const_round_shift(s12 + s14);
|
| - x13 = dct_const_round_shift(s13 + s15);
|
| - x14 = dct_const_round_shift(s12 - s14);
|
| - x15 = dct_const_round_shift(s13 - s15);
|
| + x12 = fdct_round_shift(s12 + s14);
|
| + x13 = fdct_round_shift(s13 + s15);
|
| + x14 = fdct_round_shift(s12 - s14);
|
| + x15 = fdct_round_shift(s13 - s15);
|
|
|
| // stage 4
|
| s2 = (- cospi_16_64) * (x2 + x3);
|
| @@ -918,14 +924,14 @@
|
| s14 = (- cospi_16_64) * (x14 + x15);
|
| s15 = cospi_16_64 * (x14 - x15);
|
|
|
| - x2 = dct_const_round_shift(s2);
|
| - x3 = dct_const_round_shift(s3);
|
| - x6 = dct_const_round_shift(s6);
|
| - x7 = dct_const_round_shift(s7);
|
| - x10 = dct_const_round_shift(s10);
|
| - x11 = dct_const_round_shift(s11);
|
| - x14 = dct_const_round_shift(s14);
|
| - x15 = dct_const_round_shift(s15);
|
| + x2 = fdct_round_shift(s2);
|
| + x3 = fdct_round_shift(s3);
|
| + x6 = fdct_round_shift(s6);
|
| + x7 = fdct_round_shift(s7);
|
| + x10 = fdct_round_shift(s10);
|
| + x11 = fdct_round_shift(s11);
|
| + x14 = fdct_round_shift(s14);
|
| + x15 = fdct_round_shift(s15);
|
|
|
| output[0] = x0;
|
| output[1] = - x8;
|
|
|