<div dir="ltr">This is an output changing commit for --limit-tu 3 and --limit-tu 4.</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><br>Thanks,<br><br>Bhavna Hariharan<br></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Wed, Feb 14, 2018 at 3:46 PM,  <span dir="ltr"><<a href="mailto:bhavna@multicorewareinc.com" target="_blank">bhavna@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">bhavna@multicorewareinc.com</a>><br>
# Date 1518603329 -19800<br>
#      Wed Feb 14 15:45:29 2018 +0530<br>
# Node ID 36ab263cc891e0cb5d3dd5ce2c80e3<wbr>5faa0ce996<br>
# Parent  01b685d6fa33aaab2b7f53aa1e1a2a<wbr>ec0a954025<br>
limitTU: Save intra CU's TU depth when analysis save/load is enabled<br>
<br>
This patch will cause a output mismatch between analysis save and load when<br>
limit-tu 3/4 is enabled. This change is expected as the load run will have only<br>
the best mode's TU information. For CUs where the neighbour's TU depth is<br>
unavailable, load encode will evaluate all TU detphs.<br>
<br>
diff -r 01b685d6fa33 -r 36ab263cc891 doc/reST/cli.rst<br>
--- a/doc/reST/cli.rst  Sat Feb 10 06:16:45 2018 +0100<br>
+++ b/doc/reST/cli.rst  Wed Feb 14 15:45:29 2018 +0530<br>
@@ -1029,7 +1029,13 @@<br>
        Level 4 - uses the depth of the neighbouring/ co-located CUs TU depth<br>
        to limit the 1st subTU depth. The 1st subTU depth is taken as the<br>
        limiting depth for the other subTUs.<br>
-<br>
+<br>
+       Enabling levels 3 or 4 may cause a mismatch in the output bitstreams<br>
+       between option:`--analysis-save` and option:`--analysis-load`<br>
+       as all neighbouring CUs TU depth may not be available in the<br>
+       option:`--analysis-load` run as only the best mode's information is<br>
+       available to it.<br>
+<br>
        Default: 0<br>
<br>
 .. option:: --nr-intra <integer>, --nr-inter <integer><br>
diff -r 01b685d6fa33 -r 36ab263cc891 source/encoder/analysis.cpp<br>
--- a/source/encoder/analysis.cpp       Sat Feb 10 06:16:45 2018 +0100<br>
+++ b/source/encoder/analysis.cpp       Wed Feb 14 15:45:29 2018 +0530<br>
@@ -647,13 +647,12 @@<br>
         cacheCost[cuIdx] = md.bestMode->rdCost;<br>
     }<br>
<br>
-    /* Save Intra CUs TU depth only when analysis mode is OFF */<br>
-    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4 && (!m_param->analysisSave && !m_param->analysisLoad))<br>
+    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4)<br>
     {<br>
         CUData* ctu = md.bestMode->cu.m_encData-><wbr>getPicCTU(parentCTU.m_cuAddr);<br>
         int8_t maxTUDepth = -1;<br>
         for (uint32_t i = 0; i < cuGeom.numPartitions; i++)<br>
-            maxTUDepth = X265_MAX(maxTUDepth, md.pred[PRED_INTRA].cu.m_<wbr>tuDepth[i]);<br>
+            maxTUDepth = X265_MAX(maxTUDepth, md.bestMode->cu.m_tuDepth[i]);<br>
         ctu->m_refTuDepth[cuGeom.<wbr>geomRecurId] = maxTUDepth;<br>
     }<br>
<br>
diff -r 01b685d6fa33 -r 36ab263cc891 source/test/regression-tests.<wbr>txt<br>
--- a/source/test/regression-<wbr>tests.txt  Sat Feb 10 06:16:45 2018 +0100<br>
+++ b/source/test/regression-<wbr>tests.txt  Wed Feb 14 15:45:29 2018 +0530<br>
@@ -23,7 +23,7 @@<br>
 BasketballDrive_1920x1080_50.<wbr>y4m,--preset slower --lossless --chromaloc 3 --subme 0 --limit-tu 4<br>
 BasketballDrive_1920x1080_50.<wbr>y4m,--preset slower --no-cutree --analysis-save x265_analysis.dat --analysis-reuse-level 10 --bitrate 7000 --limit-tu 0::--preset slower --no-cutree --analysis-load x265_analysis.dat --analysis-reuse-level 10 --bitrate 7000 --limit-tu 0<br>
 BasketballDrive_1920x1080_50.<wbr>y4m,--preset veryslow --crf 4 --cu-lossless --pmode --limit-refs 1 --aq-mode 3 --limit-tu 3<br>
-BasketballDrive_1920x1080_50.<wbr>y4m,--preset veryslow --no-cutree --analysis-save x265_analysis.dat --bitrate 7000 --tskip-fast --limit-tu 4::--preset veryslow --no-cutree --analysis-load x265_analysis.dat --bitrate 7000  --tskip-fast --limit-tu 4<br>
+BasketballDrive_1920x1080_50.<wbr>y4m,--preset veryslow --no-cutree --analysis-save x265_analysis.dat --bitrate 7000 --tskip-fast --limit-tu 2::--preset veryslow --no-cutree --analysis-load x265_analysis.dat --bitrate 7000  --tskip-fast --limit-tu 2<br>
 BasketballDrive_1920x1080_50.<wbr>y4m,--preset veryslow --recon-y4m-exec "ffplay -i pipe:0 -autoexit"<br>
 Coastguard-4k.y4m,--preset ultrafast --recon-y4m-exec "ffplay -i pipe:0 -autoexit"<br>
 Coastguard-4k.y4m,--preset superfast --tune grain --overscan=crop<br>
</blockquote></div><br></div>