<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 31, 2020 at 11:25 AM Aruna Matheswaran <<a href="mailto:aruna@multicorewareinc.com">aruna@multicorewareinc.com</a>> wrote:<br></div><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 Aruna Matheswaran <<a href="mailto:aruna@multicorewareinc.com" target="_blank">aruna@multicorewareinc.com</a>><br>
# Date 1582707110 -19800<br>
#      Wed Feb 26 14:21:50 2020 +0530<br>
# Node ID 7ae7c9767f14b7d093c2023235066b370aecc4ce<br>
# Parent  74170d9678e1a7f5f57b20c8404f8601814254d8<br>
analysis-save/load: Validate cu-tree info only at reuse-level 10<br>
<br>
diff -r 74170d9678e1 -r 7ae7c9767f14 source/encoder/encoder.cpp<br>
--- a/source/encoder/encoder.cpp        Wed Feb 19 15:13:05 2020 +0530<br>
+++ b/source/encoder/encoder.cpp        Wed Feb 26 14:21:50 2020 +0530<br>
@@ -3694,20 +3694,6 @@<br>
     if (p->analysisLoad && !p->analysisLoadReuseLevel)<br>
         p->analysisLoadReuseLevel = 5;<br>
<br>
-    if ((p->bAnalysisType == DEFAULT) && p->rc.cuTree)<br>
-    {<br>
-        if (p->analysisSaveReuseLevel && p->analysisSaveReuseLevel < 10)<br>
-        {<br>
-            x265_log(p, X265_LOG_WARNING, "cu-tree works only with analysis-save-reuse-level 10, Disabling cu-tree\n");<br>
-            p->rc.cuTree = 0;<br>
-        }<br>
-        if (p->analysisLoadReuseLevel && p->analysisLoadReuseLevel < 10)<br>
-        {<br>
-            x265_log(p, X265_LOG_WARNING, "cu-tree works only with analysis-load-reuse-level 10, Disabling cu-tree\n");<br>
-            p->rc.cuTree = 0;<br>
-        }<br>
-    }<br>
-<br></blockquote><div>[KS] If reuse level is <10 we no longer throw warning/disable cutree. We neither reuse cutree offsets. I don't think that is expected.</div><div>[KS] As you are enabling cutree for other reuse levels, ensure to add this test case to our regression</div><div><br></div><div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
     if ((p->analysisLoad || p->analysisSave) && (p->bDistributeModeAnalysis || p->bDistributeMotionEstimation))<br>
     {<br>
         x265_log(p, X265_LOG_WARNING, "Analysis load/save options incompatible with pmode/pme, Disabling pmode/pme\n");<br>
@@ -5039,13 +5025,13 @@<br>
     X265_PARAM_VALIDATE(saveParam->lookaheadDepth, sizeof(int), 1, &m_param->lookaheadDepth, rc - lookahead);<br>
     X265_PARAM_VALIDATE(saveParam->chunkStart, sizeof(int), 1, &m_param->chunkStart, chunk-start);<br>
     X265_PARAM_VALIDATE(saveParam->chunkEnd, sizeof(int), 1, &m_param->chunkEnd, chunk-end);<br>
-    X265_PARAM_VALIDATE(saveParam->cuTree,sizeof(int),1,&m_param->rc.cuTree, cutree - offset);<br>
     X265_PARAM_VALIDATE(saveParam->ctuDistortionRefine, sizeof(int), 1, &m_param->ctuDistortionRefine, ctu - distortion);<br>
<br>
     int sourceHeight, sourceWidth;<br>
     if (writeFlag)<br>
     {<br>
         X265_PARAM_VALIDATE(saveParam->analysisReuseLevel, sizeof(int), 1, &m_param->analysisSaveReuseLevel, analysis - save - reuse - level);<br>
+        X265_PARAM_VALIDATE(saveParam->cuTree, sizeof(int), 1, &m_param->rc.cuTree, cutree-offset);<br>
         sourceHeight = m_param->sourceHeight - m_conformanceWindow.bottomOffset;<br>
         sourceWidth = m_param->sourceWidth - m_conformanceWindow.rightOffset;<br>
         X265_PARAM_VALIDATE(saveParam->sourceWidth, sizeof(int), 1, &sourceWidth, res-width);<br>
@@ -5080,6 +5066,15 @@<br>
             return -1;<br>
         }<br>
<br>
+        int bcutree;<br>
+        X265_FREAD(&bcutree, sizeof(int), 1, m_analysisFileIn, &(saveParam->cuTree));<br>
+        if (loadLevel == 10 && m_param->rc.cuTree && (!bcutree || saveLevel < 2))<br>
+        {<br>
+            x265_log(NULL, X265_LOG_ERROR, "Error reading cu-tree info. Disabling cutree offsets. \n");<br>
+            m_param->rc.cuTree = 0;<br>
+            return -1;<br>
+        }<br>
+<br></blockquote><div>[KS] Isn't this applicable to all reuse levels? As I see that we write and read cutree offsets for all levels</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
         bool error = false;<br>
         int curSourceHeight = m_param->sourceHeight - m_conformanceWindow.bottomOffset;<br>
         int curSourceWidth = m_param->sourceWidth - m_conformanceWindow.rightOffset;<br></blockquote><div>

 [KS] Have you tested this patch disabling lookahead? </div><div>  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
_______________________________________________<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/listinfo/x265-devel</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" 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>