[x265] initLambda: avoid use of pow() to reduce platform dependency [CHANGES OUTPUTS]
Steve Borho
steve at borho.org
Thu Apr 24 06:14:29 CEST 2014
On Wed, Apr 23, 2014 at 7:43 PM, Satoshi Nakagawa <nakagawa424 at oki.com> wrote:
> # HG changeset patch
> # User Satoshi Nakagawa <nakagawa424 at oki.com>
> # Date 1398260609 -32400
> # Wed Apr 23 22:43:29 2014 +0900
> # Node ID d6226ce3db3da5d6b01819d364a91329aa3e2a64
> # Parent ea597d46f30e97600641051c9a8f96435545e09a
> initLambda: avoid use of pow() to reduce platform dependency [CHANGES OUTPUTS]
>
> diff -r ea597d46f30e -r d6226ce3db3d source/Lib/TLibCommon/TComRom.cpp
> --- a/source/Lib/TLibCommon/TComRom.cpp Wed Apr 23 01:56:45 2014 -0500
> +++ b/source/Lib/TLibCommon/TComRom.cpp Wed Apr 23 22:43:29 2014 +0900
> @@ -131,12 +131,25 @@
>
> static void initLambda(double scale)
> {
> + // pow(2, (double)q / 6 - 2);
> + static const double lambda_base[6] =
> + {
> + 0.25,
> + 0.28061551207734324536,
> + 0.31498026247371829119,
> + 0.35355339059327376220,
> + 0.39685026299204986869,
> + 0.44544935907016965237,
> + };
> +
> for (int q = 0; q <= MAX_MAX_QP; q++)
> {
> - double lambda = pow(2, (double)q / 6 - 2);
> + int p = q / 6;
> + int r = q % 6;
> + double lambda = lambda_base[r] * (double)(1 << p);
>
> x265_lambda_tab[q] = lambda;
> - x265_lambda2_tab[q] = pow(lambda, 2) * scale;
> + x265_lambda2_tab[q] = lambda * lambda * scale;
> }
> }
This table was only writeable because we were evaluating different
scale factors. Now that we've settled on 0.85, it could be
hard-coded.
--
Steve Borho
More information about the x265-devel
mailing list