<div dir="ltr"><div class="gmail_extra"><div><div><div dir="ltr"><div><div>Hi Deepthi,</div></div></div></div></div>
<br><div class="gmail_quote">On Fri, Oct 7, 2016 at 1:17 PM, Deepthi Nandakumar <span dir="ltr"><<a href="mailto:deepthipnandakumar@gmail.com" target="_blank">deepthipnandakumar@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Kavitha/Bhavana, excellent job! The test metrics look pretty good. <div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Tue, Oct 4, 2016 at 2:50 PM,  <span dir="ltr"><<a href="mailto:kavitha@multicorewareinc.com" target="_blank">kavitha@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"># HG changeset patch<br>
# User Bhavna Hariharan <<a href="mailto:bhavna@multicorewareinc.com" target="_blank">bhavna@multicorewareinc.com</a>><br>
# Date 1474620761 -19800<br>
#      Fri Sep 23 14:22:41 2016 +0530<br>
# Node ID c018bc0ffc156902b1a9a13ecd6996<wbr>d30d7403df<br>
# Parent  c10ef341f4e65883243f78040f52ed<wbr>06ace99535<br>
limit TU : use cbf and quantization coefficients to limit recursion<br>
<br>
diff -r c10ef341f4e6 -r c018bc0ffc15 source/encoder/search.cpp<br>
--- a/source/encoder/search.cpp Tue Oct 04 13:27:48 2016 +0530<br>
+++ b/source/encoder/search.cpp Fri Sep 23 14:22:41 2016 +0530<br>
@@ -3194,6 +3194,8 @@<br>
                 singlePsyEnergy[TEXT_LUMA][0] = nonZeroPsyEnergyY;<br>
                 cbfFlag[TEXT_LUMA][0] = !!numSigTSkipY;<br>
                 bestTransformMode[TEXT_LUMA][<wbr>0] = 1;<br>
+                if (m_param->limitTU)<br>
+                    numSig[TEXT_LUMA][0] = numSigTSkipY;<br>
                 uint32_t numCoeffY = 1 << (log2TrSize << 1);<br>
                 memcpy(coeffCurY, m_tsCoeff, sizeof(coeff_t) * numCoeffY);<br>
                 <a href="http://primitives.cu" rel="noreferrer" target="_blank">primitives.cu</a>[partSize].copy_<wbr>ss(curResiY, strideResiY, m_tsResidual, trSize);<br>
@@ -3331,6 +3333,21 @@<br>
             fullCost.rdcost = m_rdCost.calcPsyRdCost(fullCos<wbr>t.distortion, fullCost.bits, fullCost.energy);<br>
         else<br>
             fullCost.rdcost = m_rdCost.calcRdCost(fullCost.d<wbr>istortion, fullCost.bits);<br>
+<br>
+        if (m_param->limitTU && bCheckSplit)<br>
+        {<br>
+            // Stop recursion if the TU's energy level is minimal<br>
+            if (cbfFlag[TEXT_LUMA][0] == 0)<br>
+                bCheckSplit = false;<br></blockquote><div><br></div></div></div><div>Agreed. </div><span><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+            else if (numSig[TEXT_LUMA][0] < (cuGeom.numPartitions / 16))<br>
+            {<br>
+                uint32_t energy = 0;<br>
+                for (uint32_t i = 0; i < cuGeom.numPartitions; i++)<br>
+                    energy += abs(coeffCurY[i]);<br>
+                if (energy < numSig[TEXT_LUMA][0])<br></blockquote><div><br></div></span><div>One question, why are we comparing actual coefficient values to number of significant coefficients? </div></div></div></div></blockquote><div><br></div><div>We want to stop recursion when the energy of TU is low. If the value of each of the coefficients is minimal (close to 1), the energy will be less than the number of coefficients. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
+                    bCheckSplit = false;<br>
+            }<br>
+        }<br>
     }<br>
<br>
     // code sub-blocks<br>
______________________________<wbr>_________________<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/l<wbr>istinfo/x265-devel</a><br>
</blockquote></span></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Deepthi</div>
</font></span></div></div>
<br>______________________________<wbr>_________________<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/l<wbr>istinfo/x265-devel</a></blockquote><div><br></div><br>Regards,<br><br><div>Bhavna Hariharan </div></div><br></div></div>