[x265] [PATCH] limitTU: Save intra CU's TU depth when analysis save/load is enabled
bhavna at multicorewareinc.com
bhavna at multicorewareinc.com
Wed Feb 14 11:16:30 CET 2018
# HG changeset patch
# User Bhavna Hariharan <bhavna at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265.patch
Type: text/x-patch
Size: 3736 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20180214/6953488f/attachment-0001.bin>
More information about the x265-devel
mailing list