[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