[x265] [PATCH 4 of 5] reduce conditional operators on c1Flag loop in codeCoeffNxN()

Steve Borho steve at borho.org
Tue May 12 03:05:36 CEST 2015


On 05/11, Min Chen wrote:
> # HG changeset patch
> # User Min Chen <chenm003 at 163.com>
> # Date 1431386748 25200
> # Node ID a58a6e5bb3c6c4f2541d0dbd77bd35d6f40c2eb7
> # Parent  d4eda2573100588fb6e32188d592cd648da046e9
> reduce conditional operators on c1Flag loop in codeCoeffNxN()
> ---
>  source/encoder/entropy.cpp |   19 ++++++++++++++-----
>  1 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff -r d4eda2573100 -r a58a6e5bb3c6 source/encoder/entropy.cpp
> --- a/source/encoder/entropy.cpp	Mon May 11 16:25:45 2015 -0700
> +++ b/source/encoder/entropy.cpp	Mon May 11 16:25:48 2015 -0700
> @@ -1769,15 +1769,24 @@
>              {
>                  uint32_t symbol = absCoeff[idx] > 1;
>                  encodeBin(symbol, baseCtxMod[c1]);
> +
> +                // TODO: VC can't work fine on below style, but ICL can generate branch free code
> +#ifdef __INTEL_COMPILER
> +                if (symbol)
> +                    c1 = 0;
> +
> +                if ((firstC2FlagIdx < 0) & symbol)
> +                    firstC2FlagIdx = (int)idx;
> +#else

please also check gcc/mingw for this as well

>                  if (symbol)
>                  {
>                      c1 = 0;
> -
> -                    if (firstC2FlagIdx == -1)
> -                        firstC2FlagIdx = idx;
> +                    if (firstC2FlagIdx < 0)
> +                        firstC2FlagIdx = (int)idx;
>                  }
> -                else if ((c1 < 3) && (c1 > 0))
> -                    c1++;
> +#endif
> +                c1 += ((c1 >> 1) ^ c1) & 1;
> +                X265_CHECK((c1 >= 0) && (c1 <= 3), "c1 check failure\n");
>                  idx++;
>              }
>              while(idx < numC1Flag);
> 
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel

-- 
Steve Borho


More information about the x265-devel mailing list