# HG changeset patch
# User Bhavna Hariharan <bha...@multicorewareinc.com>
# Date 1518603329 -19800
#      Wed Feb 14 15:45:29 2018 +0530
# Node ID 36ab263cc891e0cb5d3dd5ce2c80e35faa0ce996
# Parent  01b685d6fa33aaab2b7f53aa1e1a2aec0a954025
limitTU: Save intra CU's TU depth when analysis save/load is enabled

This patch will cause a output mismatch between analysis save and load when
limit-tu 3/4 is enabled. This change is expected as the load run will have only
the best mode's TU information. For CUs where the neighbour's TU depth is
unavailable, load encode will evaluate all TU detphs.

diff -r 01b685d6fa33 -r 36ab263cc891 doc/reST/cli.rst
--- a/doc/reST/cli.rst  Sat Feb 10 06:16:45 2018 +0100
+++ b/doc/reST/cli.rst  Wed Feb 14 15:45:29 2018 +0530
@@ -1029,7 +1029,13 @@
        Level 4 - uses the depth of the neighbouring/ co-located CUs TU depth 
        to limit the 1st subTU depth. The 1st subTU depth is taken as the 
        limiting depth for the other subTUs.
-
+       
+       Enabling levels 3 or 4 may cause a mismatch in the output bitstreams 
+       between option:`--analysis-save` and option:`--analysis-load`
+       as all neighbouring CUs TU depth may not be available in the 
+       option:`--analysis-load` run as only the best mode's information is 
+       available to it.
+       
        Default: 0
 
 .. option:: --nr-intra <integer>, --nr-inter <integer>
diff -r 01b685d6fa33 -r 36ab263cc891 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp       Sat Feb 10 06:16:45 2018 +0100
+++ b/source/encoder/analysis.cpp       Wed Feb 14 15:45:29 2018 +0530
@@ -647,13 +647,12 @@
         cacheCost[cuIdx] = md.bestMode->rdCost;
     }
 
-    /* Save Intra CUs TU depth only when analysis mode is OFF */
-    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4 && 
(!m_param->analysisSave && !m_param->analysisLoad))
+    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4)
     {
         CUData* ctu = md.bestMode->cu.m_encData->getPicCTU(parentCTU.m_cuAddr);
         int8_t maxTUDepth = -1;
         for (uint32_t i = 0; i < cuGeom.numPartitions; i++)
-            maxTUDepth = X265_MAX(maxTUDepth, 
md.pred[PRED_INTRA].cu.m_tuDepth[i]);
+            maxTUDepth = X265_MAX(maxTUDepth, md.bestMode->cu.m_tuDepth[i]);
         ctu->m_refTuDepth[cuGeom.geomRecurId] = maxTUDepth;
     }
 
diff -r 01b685d6fa33 -r 36ab263cc891 source/test/regression-tests.txt
--- a/source/test/regression-tests.txt  Sat Feb 10 06:16:45 2018 +0100
+++ b/source/test/regression-tests.txt  Wed Feb 14 15:45:29 2018 +0530
@@ -23,7 +23,7 @@
 BasketballDrive_1920x1080_50.y4m,--preset slower --lossless --chromaloc 3 
--subme 0 --limit-tu 4
 BasketballDrive_1920x1080_50.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
 BasketballDrive_1920x1080_50.y4m,--preset veryslow --crf 4 --cu-lossless 
--pmode --limit-refs 1 --aq-mode 3 --limit-tu 3
-BasketballDrive_1920x1080_50.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
+BasketballDrive_1920x1080_50.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
 BasketballDrive_1920x1080_50.y4m,--preset veryslow --recon-y4m-exec "ffplay -i 
pipe:0 -autoexit"
 Coastguard-4k.y4m,--preset ultrafast --recon-y4m-exec "ffplay -i pipe:0 
-autoexit"
 Coastguard-4k.y4m,--preset superfast --tune grain --overscan=crop
# HG changeset patch
# User Bhavna Hariharan <bha...@multicorewareinc.com>
# Date 1518603329 -19800
#      Wed Feb 14 15:45:29 2018 +0530
# Node ID 36ab263cc891e0cb5d3dd5ce2c80e35faa0ce996
# Parent  01b685d6fa33aaab2b7f53aa1e1a2aec0a954025
limitTU: Save intra CU's TU depth when analysis save/load is enabled

This patch will cause a output mismatch between analysis save and load when
limit-tu 3/4 is enabled. This change is expected as the load run will have only
the best mode's TU information. For CUs where the neighbour's TU depth is
unavailable, load encode will evaluate all TU detphs.

diff -r 01b685d6fa33 -r 36ab263cc891 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Sat Feb 10 06:16:45 2018 +0100
+++ b/doc/reST/cli.rst	Wed Feb 14 15:45:29 2018 +0530
@@ -1029,7 +1029,13 @@
 	Level 4 - uses the depth of the neighbouring/ co-located CUs TU depth 
 	to limit the 1st subTU depth. The 1st subTU depth is taken as the 
 	limiting depth for the other subTUs.
-
+	
+	Enabling levels 3 or 4 may cause a mismatch in the output bitstreams 
+	between option:`--analysis-save` and option:`--analysis-load`
+	as all neighbouring CUs TU depth may not be available in the 
+	option:`--analysis-load` run as only the best mode's information is 
+	available to it.
+	
 	Default: 0
 
 .. option:: --nr-intra <integer>, --nr-inter <integer>
diff -r 01b685d6fa33 -r 36ab263cc891 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp	Sat Feb 10 06:16:45 2018 +0100
+++ b/source/encoder/analysis.cpp	Wed Feb 14 15:45:29 2018 +0530
@@ -647,13 +647,12 @@
         cacheCost[cuIdx] = md.bestMode->rdCost;
     }
 
-    /* Save Intra CUs TU depth only when analysis mode is OFF */
-    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4 && (!m_param->analysisSave && !m_param->analysisLoad))
+    if ((m_limitTU & X265_TU_LIMIT_NEIGH) && cuGeom.log2CUSize >= 4)
     {
         CUData* ctu = md.bestMode->cu.m_encData->getPicCTU(parentCTU.m_cuAddr);
         int8_t maxTUDepth = -1;
         for (uint32_t i = 0; i < cuGeom.numPartitions; i++)
-            maxTUDepth = X265_MAX(maxTUDepth, md.pred[PRED_INTRA].cu.m_tuDepth[i]);
+            maxTUDepth = X265_MAX(maxTUDepth, md.bestMode->cu.m_tuDepth[i]);
         ctu->m_refTuDepth[cuGeom.geomRecurId] = maxTUDepth;
     }
 
diff -r 01b685d6fa33 -r 36ab263cc891 source/test/regression-tests.txt
--- a/source/test/regression-tests.txt	Sat Feb 10 06:16:45 2018 +0100
+++ b/source/test/regression-tests.txt	Wed Feb 14 15:45:29 2018 +0530
@@ -23,7 +23,7 @@
 BasketballDrive_1920x1080_50.y4m,--preset slower --lossless --chromaloc 3 --subme 0 --limit-tu 4
 BasketballDrive_1920x1080_50.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
 BasketballDrive_1920x1080_50.y4m,--preset veryslow --crf 4 --cu-lossless --pmode --limit-refs 1 --aq-mode 3 --limit-tu 3
-BasketballDrive_1920x1080_50.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
+BasketballDrive_1920x1080_50.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
 BasketballDrive_1920x1080_50.y4m,--preset veryslow --recon-y4m-exec "ffplay -i pipe:0 -autoexit"
 Coastguard-4k.y4m,--preset ultrafast --recon-y4m-exec "ffplay -i pipe:0 -autoexit"
 Coastguard-4k.y4m,--preset superfast --tune grain --overscan=crop
_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to