|
|
|
@ -24,16 +24,15 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include "libavcodec/dsputil.h" |
|
|
|
|
#include "dsputil_mmx.h" |
|
|
|
|
#include "mmx.h" |
|
|
|
|
|
|
|
|
|
#define IdctAdjustBeforeShift 8 |
|
|
|
|
|
|
|
|
|
/* (12 * 4) 2-byte memory locations ( = 96 bytes total)
|
|
|
|
|
* idct_constants[0..15] = Mask table (M(I)) |
|
|
|
|
* idct_constants[16..43] = Cosine table (C(I)) |
|
|
|
|
* idct_constants[44..47] = 8 |
|
|
|
|
*/ |
|
|
|
|
static uint16_t idct_constants[(4 + 7 + 1) * 4]; |
|
|
|
|
static uint16_t idct_constants[(4 + 7) * 4]; |
|
|
|
|
static const uint16_t idct_cosine_table[7] = { |
|
|
|
|
64277, 60547, 54491, 46341, 36410, 25080, 12785 |
|
|
|
|
}; |
|
|
|
@ -269,9 +268,6 @@ void ff_vp3_dsp_init_mmx(void) |
|
|
|
|
p = idct_constants + ((j + 3) << 2); |
|
|
|
|
p[0] = p[1] = p[2] = p[3] = idct_cosine_table[j - 1]; |
|
|
|
|
} while (++j <= 7); |
|
|
|
|
|
|
|
|
|
idct_constants[44] = idct_constants[45] = |
|
|
|
|
idct_constants[46] = idct_constants[47] = IdctAdjustBeforeShift; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ff_vp3_idct_mmx(int16_t *output_data) |
|
|
|
@ -286,7 +282,7 @@ void ff_vp3_idct_mmx(int16_t *output_data) |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#define C(x) (idct_constants + 16 + (x - 1) * 4) |
|
|
|
|
#define Eight (idct_constants + 44) |
|
|
|
|
#define Eight (&ff_pw_8) |
|
|
|
|
|
|
|
|
|
/* at this point, function has completed dequantization + dezigzag +
|
|
|
|
|
* partial transposition; now do the idct itself */ |
|
|
|
|