<div dir="ltr">okay. I will send the document as a patch.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 22, 2015 at 9:54 PM, Steve Borho <span dir="ltr"><<a href="mailto:steve@borho.org" target="_blank">steve@borho.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Apr 22, 2015 at 1:44 AM, Divya Manivannan<br>
<<a href="mailto:divya@multicorewareinc.com">divya@multicorewareinc.com</a>> wrote:<br>
> # HG changeset patch<br>
> # User Divya Manivannan <<a href="mailto:divya@multicorewareinc.com">divya@multicorewareinc.com</a>><br>
> # Date 1429684176 -19800<br>
> #      Wed Apr 22 11:59:36 2015 +0530<br>
> # Node ID 584211b333ac9640d81423b3f60a18956425e27c<br>
> # Parent  86268e498680951069c48b681eef830b0aa37873<br>
> sao: remove saoCuOrgE3_2Rows function and modify saoCuOrgE3 primitive to handle width=16 seperately<br>
<br>
</span>queued<br>
<div><div class="h5"><br>
> diff -r 86268e498680 -r 584211b333ac source/common/loopfilter.cpp<br>
> --- a/source/common/loopfilter.cpp      Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/common/loopfilter.cpp      Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -122,25 +122,6 @@<br>
>      }<br>
>  }<br>
><br>
> -void processSaoCUE3_2Rows(pixel *rec, int8_t *upBuff1, int8_t *offsetEo, intptr_t stride, int startX, int endX, int8_t* upBuff)<br>
> -{<br>
> -    int8_t signDown;<br>
> -    int8_t edgeType;<br>
> -<br>
> -    for (int y = 0; y < 2; y++)<br>
> -    {<br>
> -        for (int x = startX + 1; x < endX; x++)<br>
> -        {<br>
> -            signDown = signOf(rec[x] - rec[x + stride]);<br>
> -            edgeType = signDown + upBuff1[x] + 2;<br>
> -            upBuff1[x - 1] = -signDown;<br>
> -            rec[x] = x265_clip(rec[x] + offsetEo[edgeType]);<br>
> -        }<br>
> -        upBuff1[endX - 1] = upBuff[y];<br>
> -        rec += stride + 1;<br>
> -    }<br>
> -}<br>
> -<br>
>  void processSaoCUB0(pixel* rec, const int8_t* offset, int ctuWidth, int ctuHeight, intptr_t stride)<br>
>  {<br>
>      #define SAO_BO_BITS 5<br>
> @@ -164,8 +145,8 @@<br>
>      p.saoCuOrgE1 = processSaoCUE1;<br>
>      p.saoCuOrgE1_2Rows = processSaoCUE1_2Rows;<br>
>      p.saoCuOrgE2 = processSaoCUE2;<br>
> -    p.saoCuOrgE3 = processSaoCUE3;<br>
> -    p.saoCuOrgE3_2Rows = processSaoCUE3_2Rows;<br>
> +    p.saoCuOrgE3[0] = processSaoCUE3;<br>
> +    p.saoCuOrgE3[1] = processSaoCUE3;<br>
>      p.saoCuOrgB0 = processSaoCUB0;<br>
>      p.sign = calSign;<br>
>  }<br>
> diff -r 86268e498680 -r 584211b333ac source/common/primitives.h<br>
> --- a/source/common/primitives.h        Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/common/primitives.h        Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -172,7 +172,6 @@<br>
>  typedef void (*saoCuOrgE1_t)(pixel* rec, int8_t* upBuff1, int8_t* offsetEo, intptr_t stride, int width);<br>
>  typedef void (*saoCuOrgE2_t)(pixel* rec, int8_t* pBufft, int8_t* pBuff1, int8_t* offsetEo, int lcuWidth, intptr_t stride);<br>
>  typedef void (*saoCuOrgE3_t)(pixel* rec, int8_t* upBuff1, int8_t* m_offsetEo, intptr_t stride, int startX, int endX);<br>
> -typedef void (*saoCuOrgE3_2Rows_t)(pixel* rec, int8_t* upBuff1, int8_t* m_offsetEo, intptr_t stride, int startX, int endX, int8_t* upBuff);<br>
>  typedef void (*saoCuOrgB0_t)(pixel* rec, const int8_t* offsetBo, int ctuWidth, int ctuHeight, intptr_t stride);<br>
>  typedef void (*sign_t)(int8_t *dst, const pixel *src1, const pixel *src2, const int endX);<br>
>  typedef void (*planecopy_cp_t) (const uint8_t* src, intptr_t srcStride, pixel* dst, intptr_t dstStride, int width, int height, int shift);<br>
> @@ -278,8 +277,7 @@<br>
>      saoCuOrgE0_t          saoCuOrgE0;<br>
>      saoCuOrgE1_t          saoCuOrgE1, saoCuOrgE1_2Rows;<br>
>      saoCuOrgE2_t          saoCuOrgE2;<br>
> -    saoCuOrgE3_t          saoCuOrgE3;<br>
> -    saoCuOrgE3_2Rows_t    saoCuOrgE3_2Rows;<br>
> +    saoCuOrgE3_t          saoCuOrgE3[2];<br>
<br>
</div></div>please send a patch which documents why there are two versions of this<br>
primitive.<br>
<div><div class="h5"><br>
>      saoCuOrgB0_t          saoCuOrgB0;<br>
><br>
>      downscale_t           frameInitLowres;<br>
> diff -r 86268e498680 -r 584211b333ac source/common/x86/asm-primitives.cpp<br>
> --- a/source/common/x86/asm-primitives.cpp      Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/common/x86/asm-primitives.cpp      Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -1519,8 +1519,8 @@<br>
>          p.saoCuOrgE1 = x265_saoCuOrgE1_sse4;<br>
>          p.saoCuOrgE1_2Rows = x265_saoCuOrgE1_2Rows_sse4;<br>
>          p.saoCuOrgE2 = x265_saoCuOrgE2_sse4;<br>
> -        p.saoCuOrgE3 = x265_saoCuOrgE3_sse4;<br>
> -        p.saoCuOrgE3_2Rows = x265_saoCuOrgE3_2Rows_sse4;<br>
> +        p.saoCuOrgE3[0] = x265_saoCuOrgE3_sse4;<br>
> +        p.saoCuOrgE3[1] = x265_saoCuOrgE3_sse4;<br>
>          p.saoCuOrgB0 = x265_saoCuOrgB0_sse4;<br>
><br>
>          LUMA_ADDAVG(sse4);<br>
> @@ -1728,7 +1728,7 @@<br>
>          p.saoCuOrgE0 = x265_saoCuOrgE0_avx2;<br>
>          p.saoCuOrgE1 = x265_saoCuOrgE1_avx2;<br>
>          p.saoCuOrgE1_2Rows = x265_saoCuOrgE1_2Rows_avx2;<br>
> -        p.saoCuOrgE3 = x265_saoCuOrgE3_avx2;<br>
> +        p.saoCuOrgE3[0] = x265_saoCuOrgE3_avx2;<br>
>          p.saoCuOrgB0 = x265_saoCuOrgB0_avx2;<br>
><br>
>          <a href="http://p.cu" target="_blank">p.cu</a>[BLOCK_4x4].psy_cost_ss = x265_psyCost_ss_4x4_avx2;<br>
> diff -r 86268e498680 -r 584211b333ac source/common/x86/loopfilter.asm<br>
> --- a/source/common/x86/loopfilter.asm  Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/common/x86/loopfilter.asm  Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -582,135 +582,6 @@<br>
>      movhps          [r1 + r5 - 1], xm7<br>
>      RET<br>
><br>
> -;=============================================================================================================================<br>
> -;void saoCuOrgE3_2Rows(pixel *rec, int8_t *upBuff1, int8_t *m_offsetEo, intptr_t stride, int startX, int endX, int8_t* upBuff)<br>
> -;=============================================================================================================================<br>
> -INIT_XMM sse4<br>
> -cglobal saoCuOrgE3_2Rows, 3, 7, 8<br>
> -    mov             r3d, r3m<br>
> -    mov             r4d, r4m<br>
> -    movu            m5, [r2]<br>
> -    mov             r2d, r5m<br>
> -    mov             r6,  r6m<br>
> -<br>
> -    movh            m7, [r0 + r2]<br>
> -    movhps          m7, [r1 + r2 - 1]<br>
> -<br>
> -    inc             r4d<br>
> -    add             r0, r4<br>
> -    add             r1, r4<br>
> -<br>
> -    sub             r2d, r4d<br>
> -    pxor            m0, m0                      ; m0 = 0<br>
> -    mova            m6, [pb_2]                  ; m6 = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]<br>
> -<br>
> -.loop:<br>
> -    movu            m1, [r0]                    ; m1 = pRec[x]<br>
> -    movu            m2, [r0 + r3]               ; m2 = pRec[x + iStride]<br>
> -<br>
> -    psubusb         m3, m2, m1<br>
> -    psubusb         m4, m1, m2<br>
> -    pcmpeqb         m3, m0<br>
> -    pcmpeqb         m4, m0<br>
> -    pcmpeqb         m2, m1<br>
> -<br>
> -    pabsb           m3, m3<br>
> -    por             m4, m3<br>
> -    pandn           m2, m4                      ; m2 = iSignDown<br>
> -<br>
> -    movu            m3, [r1]                    ; m3 = m_iUpBuff1<br>
> -<br>
> -    paddb           m3, m2<br>
> -    paddb           m3, m6                      ; m3 = uiEdgeType<br>
> -<br>
> -    pshufb          m4, m5, m3<br>
> -<br>
> -    psubb           m3, m0, m2<br>
> -    movu            [r1 - 1], m3<br>
> -<br>
> -    pmovzxbw        m2, m1<br>
> -    punpckhbw       m1, m0<br>
> -    pmovsxbw        m3, m4<br>
> -    punpckhbw       m4, m4<br>
> -    psraw           m4, 8<br>
> -<br>
> -    paddw           m2, m3<br>
> -    paddw           m1, m4<br>
> -    packuswb        m2, m1<br>
> -    movu            [r0], m2<br>
> -<br>
> -    add             r0, 16<br>
> -    add             r1, 16<br>
> -    sub             r2, 16<br>
> -    jg              .loop<br>
> -<br>
> -    add             r0, r2<br>
> -    add             r1, r2<br>
> -    movh            [r0], m7<br>
> -    movhps          [r1 - 1], m7<br>
> -<br>
> -    mov             r5d, r5m<br>
> -    mov             r2b, byte[r6]<br>
> -    mov             byte[r1 - 1], r2b<br>
> -<br>
> -    sub             r0, r5<br>
> -    lea             r0, [r0 + r3 + 1]<br>
> -<br>
> -    movh            m7, [r0 + r5]<br>
> -    movhps          m7, [r1 - 1]<br>
> -<br>
> -    sub             r1, r5<br>
> -    add             r0, r4<br>
> -    add             r1, r4<br>
> -    sub             r5d, r4d<br>
> -<br>
> -.loop1:<br>
> -    movu            m1, [r0]                    ; m1 = pRec[x]<br>
> -    movu            m2, [r0 + r3]               ; m2 = pRec[x + iStride]<br>
> -<br>
> -    psubusb         m3, m2, m1<br>
> -    psubusb         m4, m1, m2<br>
> -    pcmpeqb         m3, m0<br>
> -    pcmpeqb         m4, m0<br>
> -    pcmpeqb         m2, m1<br>
> -<br>
> -    pabsb           m3, m3<br>
> -    por             m4, m3<br>
> -    pandn           m2, m4                      ; m2 = iSignDown<br>
> -<br>
> -    movu            m3, [r1]                    ; m3 = m_iUpBuff1<br>
> -<br>
> -    paddb           m3, m2<br>
> -    paddb           m3, m6                      ; m3 = uiEdgeType<br>
> -<br>
> -    pshufb          m4, m5, m3<br>
> -<br>
> -    psubb           m3, m0, m2<br>
> -    movu            [r1 - 1], m3<br>
> -<br>
> -    pmovzxbw        m2, m1<br>
> -    punpckhbw       m1, m0<br>
> -    pmovsxbw        m3, m4<br>
> -    punpckhbw       m4, m4<br>
> -    psraw           m4, 8<br>
> -<br>
> -    paddw           m2, m3<br>
> -    paddw           m1, m4<br>
> -    packuswb        m2, m1<br>
> -    movu            [r0], m2<br>
> -<br>
> -    add             r0, 16<br>
> -    add             r1, 16<br>
> -    sub             r5, 16<br>
> -    jg              .loop1<br>
> -<br>
> -    movh            [r0 + r5], m7<br>
> -    movhps          [r1 + r5 - 1], m7<br>
> -<br>
> -    mov             r2b, byte[r6 + 1]<br>
> -    mov             byte[r1 + r5 - 1], r2b<br>
> -    RET<br>
> -<br>
>  ;=====================================================================================<br>
>  ; void saoCuOrgB0(pixel* rec, const pixel* offset, int lcuWidth, int lcuHeight, int stride)<br>
>  ;=====================================================================================<br>
> diff -r 86268e498680 -r 584211b333ac source/common/x86/loopfilter.h<br>
> --- a/source/common/x86/loopfilter.h    Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/common/x86/loopfilter.h    Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -34,7 +34,6 @@<br>
>  void x265_saoCuOrgE2_sse4(pixel* rec, int8_t* pBufft, int8_t* pBuff1, int8_t* offsetEo, int lcuWidth, intptr_t stride);<br>
>  void x265_saoCuOrgE3_sse4(pixel *rec, int8_t *upBuff1, int8_t *m_offsetEo, intptr_t stride, int startX, int endX);<br>
>  void x265_saoCuOrgE3_avx2(pixel *rec, int8_t *upBuff1, int8_t *m_offsetEo, intptr_t stride, int startX, int endX);<br>
> -void x265_saoCuOrgE3_2Rows_sse4(pixel *rec, int8_t *upBuff1, int8_t *m_offsetEo, intptr_t stride, int startX, int endX, int8_t* upBuff);<br>
>  void x265_saoCuOrgB0_sse4(pixel* rec, const int8_t* offsetBo, int ctuWidth, int ctuHeight, intptr_t stride);<br>
>  void x265_saoCuOrgB0_avx2(pixel* rec, const int8_t* offsetBo, int ctuWidth, int ctuHeight, intptr_t stride);<br>
>  void x265_calSign_sse4(int8_t *dst, const pixel *src1, const pixel *src2, const int endX);<br>
> diff -r 86268e498680 -r 584211b333ac source/encoder/sao.cpp<br>
> --- a/source/encoder/sao.cpp    Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/encoder/sao.cpp    Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -516,41 +516,20 @@<br>
>              if (rpelx == picWidth)<br>
>                  upBuff1[ctuWidth - 1] = lastSign;<br>
><br>
> -            int diff = endY - startY;<br>
> -            for (y = 0; y < (diff >> 1); y++)<br>
> -            {<br>
> -                int8_t signDown, signDown0, upBuff[2];<br>
> -                int edgeType1;<br>
> -<br>
> -                signDown = signOf(rec[startX] - tmpL[y * 2 + 1 + startY]);<br>
> -                edgeType1 = signDown + upBuff1[startX] + 2;<br>
> -                rec[startX] = m_clipTable[rec[startX] + m_offsetEo[edgeType1]];<br>
> -<br>
> -                signDown = signOf(rec[startX + stride] - tmpL[y * 2 + 2 + startY]);<br>
> -                signDown0 = signOf(rec[startX + 1] - rec[startX + stride]);<br>
> -                edgeType1 = signDown - signDown0 + 2;<br>
> -                upBuff1[startX - 1] = -signDown;<br>
> -<br>
> -                upBuff[0] = signOf(rec[endX - 1 + stride] - rec[endX]);<br>
> -                upBuff[1] = signOf(rec[endX - 1 + 2 * stride] - rec[endX + stride]);<br>
> -<br>
> -                primitives.saoCuOrgE3_2Rows(rec, upBuff1, m_offsetEo, stride - 1, startX, endX, upBuff);<br>
> -<br>
> -                rec[startX + stride] = m_clipTable[rec[startX + stride] + m_offsetEo[edgeType1]];<br>
> -<br>
> -                rec += 2 * stride;<br>
> -            }<br>
> -            if (diff & 1)<br>
> -            {<br>
> -                int8_t signDown1 = signOf(rec[startX] - tmpL[y * 2 + 1 + startY]);<br>
> -                int edgeType = signDown1 + upBuff1[startX] + 2;<br>
> -                upBuff1[startX - 1] = -signDown1;<br>
> -                rec[startX] = m_clipTable[rec[startX] + m_offsetEo[edgeType]];<br>
> -<br>
> -                primitives.saoCuOrgE3(rec, upBuff1, m_offsetEo, stride - 1, startX, endX);<br>
> -<br>
> -                upBuff1[endX - 1] = signOf(rec[endX - 1 + stride] - rec[endX]);<br>
> -            }<br>
> +            for (y = startY; y < endY; y++)<br>
> +            {<br>
> +                x = startX;<br>
> +                int8_t signDown = signOf(rec[x] - tmpL[y + 1]);<br>
> +                int edgeType = signDown + upBuff1[x] + 2;<br>
> +                upBuff1[x - 1] = -signDown;<br>
> +                rec[x] = m_clipTable[rec[x] + m_offsetEo[edgeType]];<br>
> +<br>
> +                primitives.saoCuOrgE3[endX > 16](rec, upBuff1, m_offsetEo, stride - 1, startX, endX);<br>
> +<br>
> +                upBuff1[endX - 1] = signOf(rec[endX - 1 + stride] - rec[endX]);<br>
> +<br>
> +                rec += stride;<br>
> +            }<br>
>          }<br>
><br>
>          break;<br>
> diff -r 86268e498680 -r 584211b333ac source/test/pixelharness.cpp<br>
> --- a/source/test/pixelharness.cpp      Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/test/pixelharness.cpp      Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -66,7 +66,7 @@<br>
>          sbuf2[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; //max(SHORT_MIN, min(rand(), SMAX));<br>
>          ibuf1[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1;<br>
>          psbuf1[i] = psbuf4[i] = (rand() % 65) - 32;                   // range is between -32 to 32<br>
> -        psbuf2[i] = psbuf5[i] = psbuf6[i] = psbuf7[i] = (rand() % 3) - 1; // possible values {-1,0,1}<br>
> +        psbuf2[i] = psbuf5[i] = (rand() % 3) - 1;                     // possible values {-1,0,1}<br>
>          psbuf3[i] = (rand() % 129) - 128;<br>
>          sbuf3[i] = rand() % PIXEL_MAX; // for blockcopy only<br>
>      }<br>
> @@ -1011,34 +1011,34 @@<br>
>      return true;<br>
>  }<br>
><br>
> -bool PixelHarness::check_saoCuOrgE3_2Rows_t(saoCuOrgE3_2Rows_t ref, saoCuOrgE3_2Rows_t opt)<br>
> -{<br>
> -    ALIGN_VAR_16(pixel, ref_dest[64 * 64]);<br>
> -    ALIGN_VAR_16(pixel, opt_dest[64 * 64]);<br>
> -<br>
> -    memset(ref_dest, 0xCD, sizeof(ref_dest));<br>
> -    memset(opt_dest, 0xCD, sizeof(opt_dest));<br>
> -<br>
> -    int j = 0;<br>
> -<br>
> -    for (int i = 0; i < ITERS; i++)<br>
> -    {<br>
> -        int stride = 16 * (rand() % 4 + 1);<br>
> -        int start = rand() % 2;<br>
> -        int end = (16 * (rand() % 4 + 1)) - rand() % 2;<br>
> -<br>
> -        ref(ref_dest, psbuf2 + j, psbuf1 + j, stride, start, end, psbuf6 + j);<br>
> -        checked(opt, opt_dest, psbuf5 + j, psbuf1 + j, stride, start, end, psbuf7 + j);<br>
> -<br>
> -        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)) || memcmp(psbuf2, psbuf5, BUFFSIZE))<br>
> -            return false;<br>
> -<br>
> -        reportfail();<br>
> -        j += INCR;<br>
> -    }<br>
> -<br>
> -    return true;<br>
> -}<br>
> +bool PixelHarness::check_saoCuOrgE3_32_t(saoCuOrgE3_t ref, saoCuOrgE3_t opt)<br>
> +{<br>
> +    ALIGN_VAR_16(pixel, ref_dest[64 * 64]);<br>
> +    ALIGN_VAR_16(pixel, opt_dest[64 * 64]);<br>
> +<br>
> +    memset(ref_dest, 0xCD, sizeof(ref_dest));<br>
> +    memset(opt_dest, 0xCD, sizeof(opt_dest));<br>
> +<br>
> +    int j = 0;<br>
> +<br>
> +    for (int i = 0; i < ITERS; i++)<br>
> +    {<br>
> +        int stride = 32 * (rand() % 2 + 1);<br>
> +        int start = rand() % 2;<br>
> +        int end = (32 * (rand() % 2 + 1)) - rand() % 2;<br>
> +<br>
> +        ref(ref_dest, psbuf2 + j, psbuf1 + j, stride, start, end);<br>
> +        checked(opt, opt_dest, psbuf5 + j, psbuf1 + j, stride, start, end);<br>
> +<br>
> +        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)) || memcmp(psbuf2, psbuf5, BUFFSIZE))<br>
> +            return false;<br>
> +<br>
> +        reportfail();<br>
> +        j += INCR;<br>
> +    }<br>
> +<br>
> +    return true;<br>
> +}<br>
><br>
>  bool PixelHarness::check_planecopy_sp(planecopy_sp_t ref, planecopy_sp_t opt)<br>
>  {<br>
> @@ -1788,20 +1788,20 @@<br>
>          }<br>
>      }<br>
><br>
> -    if (opt.saoCuOrgE3)<br>
> +    if (opt.saoCuOrgE3[0])<br>
>      {<br>
> -        if (!check_saoCuOrgE3_t(ref.saoCuOrgE3, opt.saoCuOrgE3))<br>
> +        if (!check_saoCuOrgE3_t(ref.saoCuOrgE3[0], opt.saoCuOrgE3[0]))<br>
>          {<br>
> -            printf("SAO_EO_3 failed\n");<br>
> +            printf("SAO_EO_3[0] failed\n");<br>
>              return false;<br>
>          }<br>
>      }<br>
><br>
> -    if (opt.saoCuOrgE3_2Rows)<br>
> +    if (opt.saoCuOrgE3[1])<br>
>      {<br>
> -        if (!check_saoCuOrgE3_2Rows_t(ref.saoCuOrgE3_2Rows, opt.saoCuOrgE3_2Rows))<br>
> +        if (!check_saoCuOrgE3_32_t(ref.saoCuOrgE3[1], opt.saoCuOrgE3[1]))<br>
>          {<br>
> -            printf("SAO_EO_3_2Rows failed\n");<br>
> +            printf("SAO_EO_3[1] failed\n");<br>
>              return false;<br>
>          }<br>
>      }<br>
> @@ -2192,16 +2192,16 @@<br>
>          REPORT_SPEEDUP(opt.saoCuOrgE2, ref.saoCuOrgE2, pbuf1, psbuf1, psbuf2, psbuf3, 64, 64);<br>
>      }<br>
><br>
> -    if (opt.saoCuOrgE3)<br>
> +    if (opt.saoCuOrgE3[0])<br>
>      {<br>
> -        HEADER0("SAO_EO_3");<br>
> -        REPORT_SPEEDUP(opt.saoCuOrgE3, ref.saoCuOrgE3, pbuf1, psbuf2, psbuf1, 64, 0, 64);<br>
> +        HEADER0("SAO_EO_3[0]");<br>
> +        REPORT_SPEEDUP(opt.saoCuOrgE3[0], ref.saoCuOrgE3[0], pbuf1, psbuf2, psbuf1, 64, 0, 64);<br>
>      }<br>
><br>
> -    if (opt.saoCuOrgE3_2Rows)<br>
> +    if (opt.saoCuOrgE3[1])<br>
>      {<br>
> -        HEADER0("SAO_EO_3_2Rows");<br>
> -        REPORT_SPEEDUP(opt.saoCuOrgE3_2Rows, ref.saoCuOrgE3_2Rows, pbuf1, psbuf2, psbuf1, 64, 0, 64, psbuf6);<br>
> +        HEADER0("SAO_EO_3[1]");<br>
> +        REPORT_SPEEDUP(opt.saoCuOrgE3[1], ref.saoCuOrgE3[1], pbuf1, psbuf2, psbuf1, 64, 0, 64);<br>
>      }<br>
><br>
>      if (opt.saoCuOrgB0)<br>
> diff -r 86268e498680 -r 584211b333ac source/test/pixelharness.h<br>
> --- a/source/test/pixelharness.h        Wed Apr 22 00:00:39 2015 -0500<br>
> +++ b/source/test/pixelharness.h        Wed Apr 22 11:59:36 2015 +0530<br>
> @@ -51,8 +51,6 @@<br>
>      int8_t   psbuf3[BUFFSIZE];<br>
>      int8_t   psbuf4[BUFFSIZE];<br>
>      int8_t   psbuf5[BUFFSIZE];<br>
> -    int8_t   psbuf6[BUFFSIZE];<br>
> -    int8_t   psbuf7[BUFFSIZE];<br>
><br>
>      int16_t  sbuf1[BUFFSIZE];<br>
>      int16_t  sbuf2[BUFFSIZE];<br>
> @@ -100,7 +98,7 @@<br>
>      bool check_saoCuOrgE1_t(saoCuOrgE1_t ref, saoCuOrgE1_t opt);<br>
>      bool check_saoCuOrgE2_t(saoCuOrgE2_t ref, saoCuOrgE2_t opt);<br>
>      bool check_saoCuOrgE3_t(saoCuOrgE3_t ref, saoCuOrgE3_t opt);<br>
> -    bool check_saoCuOrgE3_2Rows_t(saoCuOrgE3_2Rows_t ref, saoCuOrgE3_2Rows_t opt);<br>
> +    bool check_saoCuOrgE3_32_t(saoCuOrgE3_t ref, saoCuOrgE3_t opt);<br>
>      bool check_saoCuOrgB0_t(saoCuOrgB0_t ref, saoCuOrgB0_t opt);<br>
>      bool check_planecopy_sp(planecopy_sp_t ref, planecopy_sp_t opt);<br>
>      bool check_planecopy_cp(planecopy_cp_t ref, planecopy_cp_t opt);<br>
</div></div>> _______________________________________________<br>
> x265-devel mailing list<br>
> <a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
> <a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Steve Borho<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</font></span></blockquote></div><br></div>