From 167029a73a0ffd482131dc0615958da54e3f1b3f Mon Sep 17 00:00:00 2001 From: David Conrad Date: Sat, 30 Aug 2008 19:41:42 +0000 Subject: [PATCH] Use ff_pw_8 in MMX/SSE VP3 IDCT Originally committed as revision 15053 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/i386/vp3dsp_mmx.c | 10 +++------- libavcodec/i386/vp3dsp_sse2.c | 11 ++--------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/libavcodec/i386/vp3dsp_mmx.c b/libavcodec/i386/vp3dsp_mmx.c index 00a6d27207..e0fb394e71 100644 --- a/libavcodec/i386/vp3dsp_mmx.c +++ b/libavcodec/i386/vp3dsp_mmx.c @@ -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 */ diff --git a/libavcodec/i386/vp3dsp_sse2.c b/libavcodec/i386/vp3dsp_sse2.c index e888bcfd69..b6568c7ed4 100644 --- a/libavcodec/i386/vp3dsp_sse2.c +++ b/libavcodec/i386/vp3dsp_sse2.c @@ -24,6 +24,7 @@ */ #include "libavcodec/dsputil.h" +#include "dsputil_mmx.h" #include "mmx.h" static DECLARE_ALIGNED_16(const unsigned short, SSE2_dequant_const[]) = @@ -37,14 +38,6 @@ static DECLARE_ALIGNED_16(const unsigned short, SSE2_dequant_const[]) = 0,0,65535,65535, 0,0,0,0 // 0x0000 0000 0000 0000 FFFF FFFF 0000 0000 }; -static DECLARE_ALIGNED_16(const unsigned int, eight_data[]) = -{ - 0x00080008, - 0x00080008, - 0x00080008, - 0x00080008 -}; - static DECLARE_ALIGNED_16(const unsigned short, SSE2_idct_data[7 * 8]) = { 64277,64277,64277,64277,64277,64277,64277,64277, @@ -803,7 +796,7 @@ void ff_vp3_idct_sse2(int16_t *input_data) unsigned char *input_bytes = (unsigned char *)input_data; unsigned char *output_data_bytes = (unsigned char *)input_data; const unsigned char *idct_data_bytes = (const unsigned char *)SSE2_idct_data; - const unsigned char *Eight = (const unsigned char *)eight_data; + const unsigned char *Eight = (const unsigned char *)&ff_pw_8; #define eax input_bytes //#define ebx dequant_matrix_bytes