<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div><br></div>At 2019-09-23 12:50:22, "Akil" <akil@multicorewareinc.com> wrote:<br> <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><div dir="ltr"><div># HG changeset patch<br># User Akil Ayyappan<<a href="mailto:akil@multicorewareinc.com">akil@multicorewareinc.com</a>><br># Date 1568370446 -19800<br>#      Fri Sep 13 15:57:26 2019 +0530<br># Node ID 531f6b03eed0a40a38d3589dec03f14743293146<br># Parent  c4b098f973e6b0ee4aee3bf0d7b54da4e2734d42<br>Adaptive Frame duplication<br>+    uint32_t y = 0;<br>+<br>+    /* Consume rows in ever narrower chunks of height */<br>+    for (int size = BLOCK_64x64; size >= BLOCK_4x4 && y < height; size--)<br>+    {<br>+        uint32_t rowHeight = 1 << (size + 2);<br>+<br>+        for (; y + rowHeight <= height; y += rowHeight)<br>+        {<br>+            uint32_t y1, x = 0;<br>+<br>+            /* Consume each row using the largest square blocks possible */<br>+            if (size == BLOCK_64x64 && !(stride & 31))<br>+                for (; x + 64 <= width; x += 64)<br>+                    ssd += <a href="http://primitives.cu">primitives.cu</a>[BLOCK_64x64].sse_pp(fenc + x, stride, rec + x, stride);<br>+<br>+            if (size >= BLOCK_32x32 && !(stride & 15))<br>+                for (; x + 32 <= width; x += 32)<br>+                    for (y1 = 0; y1 + 32 <= rowHeight; y1 += 32)<br>+                        ssd += <a href="http://primitives.cu">primitives.cu</a>[BLOCK_32x32].sse_pp(fenc + y1 * stride + x, stride, rec + y1 * stride + x, stride);<br>+<br>+            if (size >= BLOCK_16x16)<br>+                for (; x + 16 <= width; x += 16)<br>+                    for (y1 = 0; y1 + 16 <= rowHeight; y1 += 16)<br>+                        ssd += <a href="http://primitives.cu">primitives.cu</a>[BLOCK_16x16].sse_pp(fenc + y1 * stride + x, stride, rec + y1 * stride + x, stride);<br>+<br>+            if (size >= BLOCK_8x8)<br>+                for (; x + 8 <= width; x += 8)<br>+                    for (y1 = 0; y1 + 8 <= rowHeight; y1 += 8)<br>+                        ssd += <a href="http://primitives.cu">primitives.cu</a>[BLOCK_8x8].sse_pp(fenc + y1 * stride + x, stride, rec + y1 * stride + x, stride);<br>+<br>+            for (; x + 4 <= width; x += 4)<br>+                for (y1 = 0; y1 + 4 <= rowHeight; y1 += 4)<br>+                    ssd += <a href="http://primitives.cu">primitives.cu</a>[BLOCK_4x4].sse_pp(fenc + y1 * stride + x, stride, rec + y1 * stride + x, stride);<br>+<br>+            fenc += stride * rowHeight;<br>+            rec += stride * rowHeight;<br>+        }<br>+    }<br>+<br>+    return ssd;<br>+}<br></div><div><br></div><div>You try to processing block as big as possible, however, this code styles is less readable.</div><div><div>Suggest put trick in optimized version other than inside C model.</div></div><div><br></div><div><br></div></div>
</blockquote></div>