On Mon, Nov 9, 2015 at 5:14 PM, Michael Niedermayer <mich...@niedermayer.cc> wrote: > On Mon, Nov 09, 2015 at 09:38:44AM -0500, Ganesh Ajjanagadde wrote: >> This may be a slightly surprising optimization, but is actually based on >> an understanding of how math libraries compute trigonometric functions. >> Explanation is given here so that future development uses libm more >> effectively >> across the codebase. >> >> All libm's essentially compute transcendental functions via some kind of >> polynomial approximation, be it Taylor-Maclaurin or Chebyshev. >> Correction terms are added via polynomial correction factors when needed >> to squeeze out the last bits of accuracy. Lookup tables are also >> inserted strategically. >> >> In the case of trigonometric functions, periodicity is exploited via >> first doing a range reduction to an interval around zero, and then using >> some polynomial approximation. >> >> This range reduction is the most natural way of doing things - else one >> would need polynomials for ranges in different periods which makes no >> sense whatsoever. >> >> To avoid the need for the range reduction, it is helpful to feed in >> arguments as close to the origin as possible for the trigonometric >> functions. In fact, this also makes sense from an accuracy point of view: >> IEEE floating point has far more resolution for small numbers than big ones. >> >> This patch does this for the Blackman-Nuttall filter, and yields a >> non-negligible speedup. >> >> Sample benchmark (x86-64, Haswell, GNU/Linux) >> test: fate-swr-resample-dblp-2626-44100 >> old: >> 18893514 decicycles in build_filter (loop 1000), 256 runs, 0 skips >> 18599863 decicycles in build_filter (loop 1000), 512 runs, 0 skips >> 18445574 decicycles in build_filter (loop 1000), 1000 runs, 24 skips >> >> new: >> 16290697 decicycles in build_filter (loop 1000), 256 runs, 0 skips >> 16267172 decicycles in build_filter (loop 1000), 512 runs, 0 skips >> 16251105 decicycles in build_filter (loop 1000), 1000 runs, 24 skips >> >> Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> >> --- >> libswresample/resample.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) > > LGTM > > thanks
pushed, thanks > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Many that live deserve death. And some that die deserve life. Can you give > it to them? Then do not be too eager to deal out death in judgement. For > even the very wise cannot see all ends. -- Gandalf > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel