mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-04 06:08:26 +02:00
bitexact hack for the simple mmx idct
Originally committed as revision 886 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8e779b900f
commit
e7fce5e9fb
@ -524,6 +524,28 @@ void dsputil_init_mmx(void)
|
|||||||
#endif
|
#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
|
/* remove any non bit exact operation (testing purpose). NOTE that
|
||||||
this function should be kept as small as possible because it is
|
this function should be kept as small as possible because it is
|
||||||
always difficult to test automatically non bit exact cases. */
|
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;
|
put_no_rnd_pixels_tab[2] = put_no_rnd_pixels_y2_mmx;
|
||||||
avg_pixels_tab[3] = avg_pixels_xy2_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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user