<div dir="ltr">This patch got pushed accidentally, I think we still need some work here. <br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 6, 2015 at 10:15 AM,  <span dir="ltr"><<a href="mailto:sagar@multicorewareinc.com" target="_blank">sagar@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"># HG changeset patch<br>
# User <a href="mailto:sagar@multicorewareinc.com">sagar@multicorewareinc.com</a><br>
# Date 1446785051 -19800<br>
#      Fri Nov 06 10:14:11 2015 +0530<br>
# Node ID 4013786f7013c20b073cbd58ff02b64af8f4f15f<br>
# Parent  39c35f175c8c515860ae4ea8ec75e15bc115d530<br>
consider skip cost in lookahead cost estimation<br>
<br>
diff -r 39c35f175c8c -r 4013786f7013 source/encoder/slicetype.cpp<br>
--- a/source/encoder/slicetype.cpp      Thu Nov 05 16:01:25 2015 +0530<br>
+++ b/source/encoder/slicetype.cpp      Fri Nov 06 10:14:11 2015 +0530<br>
@@ -2088,6 +2088,7 @@<br>
     for (int i = 0; i < 1 + bBidir; i++)<br>
     {<br>
         int& fencCost = fenc->lowresMvCosts[i][listDist[i]][cuXY];<br>
+        int skipCost = INT_MAX;<br>
<br>
         if (!bDoSearch[i])<br>
         {<br>
@@ -2129,6 +2130,9 @@<br>
                 intptr_t stride = X265_LOWRES_CU_SIZE;<br>
                 pixel *src = fref->lowresMC(pelOffset, mvc[idx], subpelbuf, stride);<br>
                 int cost = tld.me.bufSATD(src, stride);<br>
+                /* Except for mv0 case, everyting else is likely to have enough residual to not trigger the skip. */<br>
+                if (!mvp.notZero() && bBidir)<br>
+                    skipCost = cost;<br></div></div></blockquote><div><br></div><div>I'm not sure this assumption is true at all. HEVC has merge MV candidates that make skip/merge much more cheaper. Where is mvp initialised - is this a bug?<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
                 COPY2_IF_LT(mvpcost, cost, mvp, mvc[idx]);<br>
             }<br>
         }<br>
@@ -2136,6 +2140,11 @@<br>
         /* ME will never return a cost larger than the cost @MVP, so we do not<br>
          * have to check that ME cost is more than the estimated merge cost */<br>
         fencCost = tld.me.motionEstimate(fref, mvmin, mvmax, mvp, 0, NULL, s_merange, *fencMV);<br>
+        if (skipCost < 64 && skipCost < fencCost && bBidir)<br>
+        {<br>
+            fencCost = skipCost;<br>
+            *fencMV = 0;<br>
+        }<br>
         COPY2_IF_LT(bcost, fencCost, listused, i + 1);<br>
     }<br>
<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" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div>Deepthi Nandakumar<br></div>Engineering Manager, x265<br></div>Multicoreware, Inc<br></div></div>
</div></div>