1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00
Originally committed as revision 6020 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2006-08-18 10:43:23 +00:00
parent b4902c11c1
commit cf5aed5bad

View File

@ -504,56 +504,44 @@ static always_inline void fdct_row_mmx(const int16_t *in, int16_t *out, const in
void ff_fdct_mmx(int16_t *block) void ff_fdct_mmx(int16_t *block)
{ {
int64_t align_tmp[16] ATTR_ALIGN(8); int64_t align_tmp[16] ATTR_ALIGN(8);
int16_t * const block_tmp= (int16_t*)align_tmp; int16_t * block1= (int16_t*)align_tmp;
int16_t *block1, *out; const int16_t *table= tab_frw_01234567;
const int16_t *table;
int i; int i;
block1 = block_tmp;
fdct_col(block, block1, 0); fdct_col(block, block1, 0);
fdct_col(block, block1, 4); fdct_col(block, block1, 4);
block1 = block_tmp;
table = tab_frw_01234567;
out = block;
for(i=8;i>0;i--) { for(i=8;i>0;i--) {
fdct_row_mmx(block1, out, table); fdct_row_mmx(block1, block, table);
block1 += 8; block1 += 8;
table += 32; table += 32;
out += 8; block += 8;
} }
} }
void ff_fdct_mmx2(int16_t *block) void ff_fdct_mmx2(int16_t *block)
{ {
int64_t align_tmp[16] ATTR_ALIGN(8); int64_t align_tmp[16] ATTR_ALIGN(8);
int16_t * const block_tmp= (int16_t*)align_tmp; int16_t *block1= (int16_t*)align_tmp;
int16_t *block1, *out; const int16_t *table= tab_frw_01234567;
const int16_t *table;
int i; int i;
block1 = block_tmp;
fdct_col(block, block1, 0); fdct_col(block, block1, 0);
fdct_col(block, block1, 4); fdct_col(block, block1, 4);
block1 = block_tmp;
table = tab_frw_01234567;
out = block;
for(i=8;i>0;i--) { for(i=8;i>0;i--) {
fdct_row_mmx2(block1, out, table); fdct_row_mmx2(block1, block, table);
block1 += 8; block1 += 8;
table += 32; table += 32;
out += 8; block += 8;
} }
} }
void ff_fdct_sse2(int16_t *block) void ff_fdct_sse2(int16_t *block)
{ {
int64_t align_tmp[16] ATTR_ALIGN(16); int64_t align_tmp[16] ATTR_ALIGN(16);
int16_t * const block_tmp= (int16_t*)align_tmp; int16_t * const block1= (int16_t*)align_tmp;
int16_t *block1;
block1 = block_tmp;
fdct_col(block, block1, 0); fdct_col(block, block1, 0);
fdct_col(block, block1, 4); fdct_col(block, block1, 4);