# HG changeset patch
# User Kavitha Sampath <kavi...@multicorewareinc.com>
# Date 1499769682 -19800
#      Tue Jul 11 16:11:22 2017 +0530
# Node ID 0111b64fadfbe424c1144399134952d960dba43d
# Parent  81f17d9c7c273e4b282be66bf8bcd193e25a1d2e
Introduce refine-intra level 3

diff -r 81f17d9c7c27 -r 0111b64fadfb doc/reST/cli.rst
--- a/doc/reST/cli.rst  Mon Jul 24 12:58:03 2017 +0530
+++ b/doc/reST/cli.rst  Tue Jul 11 16:11:22 2017 +0530
@@ -893,7 +893,7 @@
        This option should be coupled with analysis-reuse-mode option, 
--analysis-reuse-level 10.
        The ctu size of load should be double the size of save. Default 0.
 
-.. option:: --refine-intra <0|1|2>
+.. option:: --refine-intra <0..3>
        
        Enables refinement of intra blocks in current encode. 
        
@@ -907,6 +907,8 @@
        (a) only depth when angular mode is chosen by the save encode.
        (b) depth and mode when other intra modes are chosen by the save encode.
        
+       Level 3 - Perform analysis of intra modes for depth reused from first 
encode.
+       
        Default 0.
        
 .. option:: --refine-inter <0..3>
diff -r 81f17d9c7c27 -r 0111b64fadfb source/common/param.cpp
--- a/source/common/param.cpp   Mon Jul 24 12:58:03 2017 +0530
+++ b/source/common/param.cpp   Tue Jul 11 16:11:22 2017 +0530
@@ -1320,8 +1320,8 @@
         "Supported values for bCTUInfo are 0, 1, 2, 4, 6");
     CHECK(param->interRefine > 3 || param->interRefine < 0,
         "Invalid refine-inter value, refine-inter levels 0 to 3 supported");
-    CHECK(param->intraRefine > 2 || param->intraRefine < 0,
-        "Invalid refine-intra value, refine-intra levels 0 to 2 supported");
+    CHECK(param->intraRefine > 3 || param->intraRefine < 0,
+        "Invalid refine-intra value, refine-intra levels 0 to 3 supported");
 #if !X86_64
     CHECK(param->searchMethod == X265_SEA && (param->sourceWidth > 840 || 
param->sourceHeight > 480),
         "SEA motion search does not support resolutions greater than 480p in 
32 bit build");
diff -r 81f17d9c7c27 -r 0111b64fadfb source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp       Mon Jul 24 12:58:03 2017 +0530
+++ b/source/encoder/analysis.cpp       Tue Jul 11 16:11:22 2017 +0530
@@ -511,7 +511,9 @@
             Mode& mode = md.pred[0];
             md.bestMode = &mode;
             mode.cu.initSubCU(parentCTU, cuGeom, qp);
-            if (m_param->intraRefine != 2 || 
parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] <= 1)
+            bool reuseModes = !((m_param->intraRefine == 3) ||
+                                (m_param->intraRefine == 2 && 
parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] > DC_IDX));
+            if (reuseModes)
             {
                 memcpy(mode.cu.m_lumaIntraDir, parentCTU.m_lumaIntraDir + 
cuGeom.absPartIdx, cuGeom.numPartitions);
                 memcpy(mode.cu.m_chromaIntraDir, parentCTU.m_chromaIntraDir + 
cuGeom.absPartIdx, cuGeom.numPartitions);
@@ -2271,7 +2273,9 @@
         PartSize size = (PartSize)parentCTU.m_partSize[cuGeom.absPartIdx];
         if (parentCTU.isIntra(cuGeom.absPartIdx))
         {
-            if (m_param->intraRefine != 2 || 
parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] <= 1)
+            bool reuseModes = !((m_param->intraRefine == 3) ||
+                                (m_param->intraRefine == 2 && 
parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] > DC_IDX));
+            if (reuseModes)
             {
                 memcpy(mode.cu.m_lumaIntraDir, parentCTU.m_lumaIntraDir + 
cuGeom.absPartIdx, cuGeom.numPartitions);
                 memcpy(mode.cu.m_chromaIntraDir, parentCTU.m_chromaIntraDir + 
cuGeom.absPartIdx, cuGeom.numPartitions);
# HG changeset patch
# User Kavitha Sampath <kavi...@multicorewareinc.com>
# Date 1499769682 -19800
#      Tue Jul 11 16:11:22 2017 +0530
# Node ID 0111b64fadfbe424c1144399134952d960dba43d
# Parent  81f17d9c7c273e4b282be66bf8bcd193e25a1d2e
Introduce refine-intra level 3

diff -r 81f17d9c7c27 -r 0111b64fadfb doc/reST/cli.rst
--- a/doc/reST/cli.rst	Mon Jul 24 12:58:03 2017 +0530
+++ b/doc/reST/cli.rst	Tue Jul 11 16:11:22 2017 +0530
@@ -893,7 +893,7 @@
        This option should be coupled with analysis-reuse-mode option, --analysis-reuse-level 10.
        The ctu size of load should be double the size of save. Default 0.
 
-.. option:: --refine-intra <0|1|2>
+.. option:: --refine-intra <0..3>
 	
 	Enables refinement of intra blocks in current encode. 
 	
@@ -907,6 +907,8 @@
 	(a) only depth when angular mode is chosen by the save encode.
 	(b) depth and mode when other intra modes are chosen by the save encode.
 	
+	Level 3 - Perform analysis of intra modes for depth reused from first encode.
+	
 	Default 0.
 	
 .. option:: --refine-inter <0..3>
diff -r 81f17d9c7c27 -r 0111b64fadfb source/common/param.cpp
--- a/source/common/param.cpp	Mon Jul 24 12:58:03 2017 +0530
+++ b/source/common/param.cpp	Tue Jul 11 16:11:22 2017 +0530
@@ -1320,8 +1320,8 @@
         "Supported values for bCTUInfo are 0, 1, 2, 4, 6");
     CHECK(param->interRefine > 3 || param->interRefine < 0,
         "Invalid refine-inter value, refine-inter levels 0 to 3 supported");
-    CHECK(param->intraRefine > 2 || param->intraRefine < 0,
-        "Invalid refine-intra value, refine-intra levels 0 to 2 supported");
+    CHECK(param->intraRefine > 3 || param->intraRefine < 0,
+        "Invalid refine-intra value, refine-intra levels 0 to 3 supported");
 #if !X86_64
     CHECK(param->searchMethod == X265_SEA && (param->sourceWidth > 840 || param->sourceHeight > 480),
         "SEA motion search does not support resolutions greater than 480p in 32 bit build");
diff -r 81f17d9c7c27 -r 0111b64fadfb source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp	Mon Jul 24 12:58:03 2017 +0530
+++ b/source/encoder/analysis.cpp	Tue Jul 11 16:11:22 2017 +0530
@@ -511,7 +511,9 @@
             Mode& mode = md.pred[0];
             md.bestMode = &mode;
             mode.cu.initSubCU(parentCTU, cuGeom, qp);
-            if (m_param->intraRefine != 2 || parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] <= 1)
+            bool reuseModes = !((m_param->intraRefine == 3) ||
+                                (m_param->intraRefine == 2 && parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] > DC_IDX));
+            if (reuseModes)
             {
                 memcpy(mode.cu.m_lumaIntraDir, parentCTU.m_lumaIntraDir + cuGeom.absPartIdx, cuGeom.numPartitions);
                 memcpy(mode.cu.m_chromaIntraDir, parentCTU.m_chromaIntraDir + cuGeom.absPartIdx, cuGeom.numPartitions);
@@ -2271,7 +2273,9 @@
         PartSize size = (PartSize)parentCTU.m_partSize[cuGeom.absPartIdx];
         if (parentCTU.isIntra(cuGeom.absPartIdx))
         {
-            if (m_param->intraRefine != 2 || parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] <= 1)
+            bool reuseModes = !((m_param->intraRefine == 3) ||
+                                (m_param->intraRefine == 2 && parentCTU.m_lumaIntraDir[cuGeom.absPartIdx] > DC_IDX));
+            if (reuseModes)
             {
                 memcpy(mode.cu.m_lumaIntraDir, parentCTU.m_lumaIntraDir + cuGeom.absPartIdx, cuGeom.numPartitions);
                 memcpy(mode.cu.m_chromaIntraDir, parentCTU.m_chromaIntraDir + cuGeom.absPartIdx, cuGeom.numPartitions);
_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to