Skip to content
Snippets Groups Projects
Commit e7fce5e9 authored by Michael Niedermayer's avatar Michael Niedermayer
Browse files

bitexact hack for the simple mmx idct

Originally committed as revision 886 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 8e779b90
No related branches found
No related tags found
No related merge requests found
......@@ -524,6 +524,28 @@ void dsputil_init_mmx(void)
#endif
}
void gen_idct_put(UINT8 *dest, int line_size, DCTELEM *block);
/**
* this will send coeff matrixes which would have different results for the 16383 type MMX vs C IDCTs to the C IDCT
*/
void bit_exact_idct_put(UINT8 *dest, int line_size, INT16 *block){
if( block[0]>1022 && block[1]==0 && block[4 ]==0 && block[5 ]==0
&& block[8]==0 && block[9]==0 && block[12]==0 && block[13]==0){
int16_t tmp[64];
int i;
for(i=0; i<64; i++)
tmp[i]= block[i];
for(i=0; i<64; i++)
block[i]= tmp[block_permute_op(i)];
simple_idct_put(dest, line_size, block);
}
else
gen_idct_put(dest, line_size, block);
}
/* remove any non bit exact operation (testing purpose). NOTE that
this function should be kept as small as possible because it is
always difficult to test automatically non bit exact cases. */
......@@ -546,5 +568,9 @@ void dsputil_set_bit_exact_mmx(void)
put_no_rnd_pixels_tab[2] = put_no_rnd_pixels_y2_mmx;
avg_pixels_tab[3] = avg_pixels_xy2_mmx;
}
#ifdef SIMPLE_IDCT
if(ff_idct_put==gen_idct_put && ff_idct == simple_idct_mmx)
ff_idct_put= bit_exact_idct_put;
#endif
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment