mirror of https://git.ffmpeg.org/ffmpeg.git
aad0e26f93
The stereo_interpolate functions add h_step to the values h BUF_SIZE times. Within the stereo_interpolate C functions, the values h (h0-h3, h00-h13) are declared as local float variables, but the compiler is free to keep them in a register with extra precision. If the accumulation is rounded to 32 bit float precision after each step, the less significant bits of h_step end up ignored and the sum can deviate, affecting the end result more than the currently set EPS. By clearing the log2(BUF_SIZE) lower bits of h_step, we make sure that the accumulation shouldn't differ significantly, regardless of any extra precision in the accmulating register/variable. This fixes the aacpsdsp checkasm test when built with clang for mingw/x86_32. Signed-off-by: Martin Storsjö <martin@martin.st> |
||
---|---|---|
.. | ||
aarch64 | ||
arm | ||
x86 | ||
.gitignore | ||
Makefile | ||
aacpsdsp.c | ||
af_afir.c | ||
alacdsp.c | ||
audiodsp.c | ||
blockdsp.c | ||
bswapdsp.c | ||
checkasm.c | ||
checkasm.h | ||
exrdsp.c | ||
fixed_dsp.c | ||
flacdsp.c | ||
float_dsp.c | ||
fmtconvert.c | ||
g722dsp.c | ||
h264dsp.c | ||
h264pred.c | ||
h264qpel.c | ||
hevc_add_res.c | ||
hevc_idct.c | ||
hevc_sao.c | ||
huffyuvdsp.c | ||
jpeg2000dsp.c | ||
llviddsp.c | ||
llviddspenc.c | ||
opusdsp.c | ||
pixblockdsp.c | ||
sbrdsp.c | ||
sw_rgb.c | ||
synth_filter.c | ||
utvideodsp.c | ||
v210dec.c | ||
v210enc.c | ||
vf_blend.c | ||
vf_colorspace.c | ||
vf_eq.c | ||
vf_gblur.c | ||
vf_hflip.c | ||
vf_nlmeans.c | ||
vf_threshold.c | ||
videodsp.c | ||
vp8dsp.c | ||
vp9dsp.c |