<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">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:0 0 0 .8ex;border-left:1px #ccc 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>Agreed. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc 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><div>One question, why are we comparing actual coefficient values to number of significant coefficients? </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc 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></div><br><br clear="all"><div><br></div>-- <br><div class="m_-3957021980983348970gmail_signature" data-smartmail="gmail_signature">Deepthi</div>
</div></div>