[Opencore-amr-commits] [fdk-aac] Do schur_div with a direct 64 bit division ...
Audio codecs extracted from Android Open Source Project
Brought to you by:
mstorsjo
From: Martin Storsjö <mst...@us...> - 2012-09-09 19:21:31
|
Module: fdk-aac Branch: master Commit: 923f3e95f3e332d26f03cf6782f0ab61596ceef2 Author: Jakub Stachowski <qb...@go...> Committer: Martin Storsjo <ma...@ma...> Date: Tue Aug 14 21:59:32 2012 +0200 URL: http://opencore-amr.git.sf.net/git/gitweb.cgi?p=opencore-amr/fdk-aac;a=commit;h=923f3e95f3e332d26f03cf6782f0ab61596ceef2 Do schur_div with a direct 64 bit division instead of a loop on x86 This speeds up HE-AACv2 encoding from 3.85 s to 3.42 s on a Core i7. --- libFDK/src/fixpoint_math.cpp | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/libFDK/src/fixpoint_math.cpp b/libFDK/src/fixpoint_math.cpp index 000820c..7d5fbb5 100644 --- a/libFDK/src/fixpoint_math.cpp +++ b/libFDK/src/fixpoint_math.cpp @@ -443,6 +443,15 @@ FIXP_DBL sqrtFixp(FIXP_DBL op) *****************************************************************************/ +#if defined(__x86__) +FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count) +{ + INT64 tmp=(INT64)num<<31; + LONG div=(tmp/denum)>>(DFRACT_BITS-count); + return (FIXP_DBL)(div) << (DFRACT_BITS-count); +} + +#else FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count) { @@ -469,6 +478,7 @@ FIXP_DBL schur_div(FIXP_DBL num, FIXP_DBL denum, INT count) return (FIXP_DBL)(div << (DFRACT_BITS - count)); } +#endif #endif /* !defined(FUNCTION_schur_div) */ |