[x265] [PATCH 4 of 6] reduce memory access to absCoeff[firstC2FlagIdx]

Deepthi Nandakumar deepthi at multicorewareinc.com
Wed Jun 10 08:49:24 CEST 2015


On Tue, Jun 9, 2015 at 11:36 PM, Min Chen <chenm003 at 163.com> wrote:

> # HG changeset patch
> # User Min Chen <chenm003 at 163.com>
> # Date 1433872873 25200
> # Node ID 04c9567aa2bb7b549cd6a3514a1ef29d64724638
> # Parent  d82b6f9e08e39b784ba8240e1843b9d6371dcee4
> reduce memory access to absCoeff[firstC2FlagIdx]
> ---
>  source/encoder/entropy.cpp |   22 +++++++++++-----------
>  1 files changed, 11 insertions(+), 11 deletions(-)
>
> diff -r d82b6f9e08e3 -r 04c9567aa2bb source/encoder/entropy.cpp
> --- a/source/encoder/entropy.cpp        Tue Jun 09 11:01:08 2015 -0700
> +++ b/source/encoder/entropy.cpp        Tue Jun 09 11:01:13 2015 -0700
> @@ -1699,28 +1699,29 @@
>              uint8_t *baseCtxMod = bIsLuma ?
> &m_contextState[OFF_ONE_FLAG_CTX + 4 * ctxSet] :
> &m_contextState[OFF_ONE_FLAG_CTX + NUM_ONE_FLAG_CTX_LUMA + 4 * ctxSet];
>
>              uint32_t numC1Flag = X265_MIN(numNonZero, C1FLAG_NUMBER);
> -            int firstC2FlagIdx = -1;
> +            int firstC2Flag = -1;
>
>              X265_CHECK(numC1Flag > 0, "numC1Flag check failure\n");
>              idx = 0;
>              do
>              {
> -                uint32_t symbol = absCoeff[idx] > 1;
> -                encodeBin(symbol, baseCtxMod[c1]);
> +                uint32_t symbol1 = absCoeff[idx] > 1;
> +                uint32_t symbol2 = absCoeff[idx] > 2;
> +                encodeBin(symbol1, 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;
> +                if ((firstC2Flag < 0) & symbol)
> +                    firstC2Flag = (int)symbol2;
>

This will not compile with icpc.


>  #else
> -                if (symbol)
> +                if (symbol1)
>                  {
>                      c1 = 0;
> -                    if (firstC2FlagIdx < 0)
> -                        firstC2FlagIdx = (int)idx;
> +                    if (firstC2Flag < 0)
> +                        firstC2Flag = (int)symbol2;
>                  }
>  #endif
>                  c1 += ((c1 >> 1) ^ c1) & 1;
> @@ -1733,9 +1734,8 @@
>              {
>                  baseCtxMod = bIsLuma ? &m_contextState[OFF_ABS_FLAG_CTX +
> ctxSet] : &m_contextState[OFF_ABS_FLAG_CTX + NUM_ABS_FLAG_CTX_LUMA +
> ctxSet];
>
> -                X265_CHECK((firstC2FlagIdx != -1), "firstC2FlagIdx check
> failure\n");
> -                uint32_t symbol = absCoeff[firstC2FlagIdx] > 2;
> -                encodeBin(symbol, baseCtxMod[0]);
> +                X265_CHECK((firstC2Flag != -1), "firstC2FlagIdx check
> failure\n");
> +                encodeBin(firstC2Flag, baseCtxMod[0]);
>              }
>
>              const int hiddenShift = (bHideFirstSign && signHidden) ? 1 :
> 0;
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20150610/5c129ffd/attachment.html>


More information about the x265-devel mailing list