<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 18, 2015 at 10:44 PM, Min Chen <span dir="ltr"><<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Min Chen <<a href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</a>><br>
# Date 1447865926 21600<br>
# Node ID 600706db4e14bd95a5d933418186f86403e897f4<br>
# Parent  e160de7083971f21802517691f9a3a0934765952<br>
optimize SAO statistics initialize<br>
---<br>
 source/encoder/sao.cpp |   52 ++++++++++++++++++++++++-----------------------<br>
 1 files changed, 27 insertions(+), 25 deletions(-)<br>
<br>
diff -r e160de708397 -r 600706db4e14 source/encoder/sao.cpp<br>
--- a/source/encoder/sao.cpp    Wed Nov 18 10:58:43 2015 -0600<br>
+++ b/source/encoder/sao.cpp    Wed Nov 18 10:58:46 2015 -0600<br>
@@ -1156,32 +1156,34 @@<br>
         if (allowMerge[1])<br>
             m_entropyCoder.codeSaoMerge(0);<br>
         m_entropyCoder.store(m_rdContexts.temp);<br>
+<br>
         // reset stats Y, Cb, Cr<br>
-        for (int plane = 0; plane < 3; plane++)<br>
+        X265_CHECK(sizeof(PerPlane) == (sizeof(int32_t) * (NUM_PLANE * MAX_NUM_SAO_TYPE * MAX_NUM_SAO_CLASS)), "Found Padding space in struct PerPlane");<br>
+<br>
+        // TODO: Confirm the address space is continuous<br>
+        memset(m_count, 0, 3 * sizeof(m_count[0]));<br></blockquote><div><br></div><div>Now that we're cleaning this up, m_count is confusing. PerClass is a 2D int array, and we're allocating one per plane? Can we clean this up once and for all in the malloc part itself? <br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+        if (m_param->bSaoNonDeblocked)<br>
         {<br>
-            for (int j = 0; j < MAX_NUM_SAO_TYPE; j++)<br>
-            {<br>
-                for (int k = 0; k < MAX_NUM_SAO_CLASS; k++)<br>
-                {<br>
-                    m_offset[plane][j][k] = 0;<br>
-                    if (m_param->bSaoNonDeblocked)<br>
-                    {<br>
-                        m_count[plane][j][k] = m_countPreDblk[addr][plane][j][k];<br>
-                        m_offsetOrg[plane][j][k] = m_offsetOrgPreDblk[addr][plane][j][k];<br>
-                    }<br>
-                    else<br>
-                    {<br>
-                        m_count[plane][j][k] = 0;<br>
-                        m_offsetOrg[plane][j][k] = 0;<br>
-                    }<br>
-                }<br>
-            }<br>
+            memcpy(m_count, m_countPreDblk[addr], 3 * sizeof(m_count[0]));<br>
+            memcpy(m_offsetOrg, m_offsetOrgPreDblk[addr], 3 * sizeof(m_offsetOrg[0]));<br>
+        }<br>
+        else<br>
+        {<br>
+            memset(m_count, 0, 3 * sizeof(m_count[0]));<br>
+            memset(m_offsetOrg, 0, 3 * sizeof(m_offsetOrg[0]));<br>
+        }<br>
+        const struct SaoCtuParam dummy_initSaoParam = { SAO_MERGE_NONE, -1, 0, {0, 0, 0, 0} };<br>
+        saoParam->ctuParam[0][addr] = dummy_initSaoParam;<br>
+        saoParam->ctuParam[1][addr] = dummy_initSaoParam;<br>
+        saoParam->ctuParam[2][addr] = dummy_initSaoParam;<br>
<br>
-            saoParam->ctuParam[plane][addr].mergeMode = SAO_MERGE_NONE;<br>
-            saoParam->ctuParam[plane][addr].typeIdx   = -1;<br>
-            saoParam->ctuParam[plane][addr].bandPos   = 0;<br>
-            if (saoParam->bSaoFlag[plane > 0])<br>
-                calcSaoStatsCu(addr, plane);<br>
+        if (saoParam->bSaoFlag[0])<br>
+            calcSaoStatsCu(addr, 0);<br>
+<br>
+        if (saoParam->bSaoFlag[1])<br>
+        {<br>
+            calcSaoStatsCu(addr, 1);<br>
+            calcSaoStatsCu(addr, 2);<br>
         }<br>
<br>
         saoComponentParamDist(saoParam, addr, addrUp, addrLeft, &mergeSaoParam[0][0], mergeDist);<br>
<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div><div dir="ltr"><div><div>Deepthi Nandakumar<br></div>Engineering Manager, x265<br></div>Multicoreware, Inc<br></div></div>
</div></div>