<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 12, 2016 at 9:51 AM, 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:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Some more points.<div><br></div><div>1. Is there anything to prevent limit-tu 1 and 2 being used together, say as limit-tu 3? </div></div></blockquote><div><br>limit-tu 1 and 2 use different approaches to limit recursion. limit-tu 1 perform breadth first traversal to compute total split cost of TUs in a depth. But limit-tu 2 has to traverse full TU depth for the first subTU to determine the maximum depth that other subTUs can use to limit recursion. So, it is not possible to have level 3 combining 1 and 2.<br><br> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>2. It's recommended that limit-tu is conservative when performing early skip for TU recursion. There have been suspicions that large TUs are responsible for smoothening artifacts, and if limit-tu is too aggressive, it could definitely worsen this. </div></div></blockquote><div><br>We could avoid choosing large TUs but at the expense of loosing the performance benefit of limitTU that we see now. However we can try to bias it to not choose a 32x32 TU block and see the performance numbers. <br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div></div><div class="gmail_extra"><div><div class="gmail-h5"><br><div class="gmail_quote">On Mon, Oct 10, 2016 at 11:46 AM, 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:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra">Is this condition ever satisfied? Minimum value of a coeff, to be counted in numSig is 1 (since it's uint16).<br></div></blockquote></div></div></div></div></blockquote><div><br>True. There is a bug in energy calculation that allowed this condition to get satisfied. We will send patch fixing the issue soon.<br><br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra"><div><div class="gmail-h5"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote">On Sat, Oct 8, 2016 at 5:07 PM, Bhavna Hariharan <span dir="ltr"><<a href="mailto:bhavna@multicorewareinc.com" target="_blank">bhavna@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><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"><div><div class="gmail-m_-8677499661235934732m_943530746410276078h5">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:1px solid rgb(204,204,204);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:1px solid rgb(204,204,204);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:1px solid rgb(204,204,204);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></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><span><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);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:1px solid rgb(204,204,204);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></span>Regards,<br><br><div>Bhavna Hariharan </div></div><br></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><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-8677499661235934732m_943530746410276078gmail_signature">Deepthi</div>
</div><div class="gmail-m_-8677499661235934732HOEnZb"><div class="gmail-m_-8677499661235934732h5">
</div></div></blockquote></div><br><br clear="all"><div><br></div></div></div><span class="gmail-HOEnZb"><font color="#888888">-- <br><div class="gmail-m_-8677499661235934732gmail_signature">Deepthi</div>
</font></span></div>
<br>______________________________<wbr>_________________<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/<wbr>listinfo/x265-devel</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(0,0,0)">Regards,<br>Kavitha</span></div></div></div></div>
</div></div>