[x265] [PATCH] Removed maxCUDepth parameter from CLI option

sumalatha at multicorewareinc.com sumalatha at multicorewareinc.com
Fri Jun 28 08:48:59 CEST 2013


# HG changeset patch
# User sumalatha
# Date 1372402128 -19800
# Node ID f2cf6222811960215ddd67a1b3789613fff5d180
# Parent  02cb4e55ad54c789ee3c1b19a4e32db839b8ba96
Removed maxCUDepth parameter from CLI option

diff -r 02cb4e55ad54 -r f2cf62228119 source/common/common.cpp
--- a/source/common/common.cpp	Fri Jun 28 12:11:14 2013 +0530
+++ b/source/common/common.cpp	Fri Jun 28 12:18:48 2013 +0530
@@ -39,6 +39,7 @@
 #include <sys/time.h>
 #endif
 #include <time.h>
+#include <cmath>
 
 #if HIGH_BIT_DEPTH
 const int x265_bit_depth = 10;
@@ -88,7 +89,6 @@
     param->bipredSearchRange = 4;
     param->internalBitDepth = 8;
     param->maxCUSize = 64;
-    param->maxCUDepth = 4;
     param->tuQTMaxLog2Size = 5;
     param->tuQTMinLog2Size = 2;
     param->tuQTMaxInterDepth = 3;
@@ -152,6 +152,11 @@
     return 1;
 }
 
+uint32_t getMaxCuDepth(uint32_t maxCuSize)
+{   
+    return (uint32_t)(log10(maxCuSize)/log10(2)) - 2;
+}
+
 int x265_check_params(x265_param_t *param)
 {
 #define CONFIRM(expr, msg) check_failed |= _confirm(param, expr, msg)
@@ -177,7 +182,7 @@
             "Search Range must be more than 0");
     CONFIRM(param->keyframeInterval < -1,
             "Keyframe interval must be -1 (open-GOP) 0 (auto) 1 (intra-only) or greater than 1");
-    CONFIRM(param->maxCUdQPDepth > param->maxCUDepth - 1,
+    CONFIRM(param->maxCUdQPDepth > getMaxCuDepth(param->maxCUSize) - 1,
             "Absolute depth for a minimum CuDQP exceeds maximum coding unit depth");
 
     CONFIRM(param->cbQpOffset < -12, "Min. Chroma Cb QP Offset is -12");
@@ -187,13 +192,11 @@
 
     CONFIRM(param->qpAdaptionRange <= 0,
             "QP Adaptation Range must be more than 0");
-    CONFIRM((param->maxCUSize >> param->maxCUDepth) < 4,
-            "Minimum partition width size should be larger than or equal to 8");
     CONFIRM(param->maxCUSize < 16,
             "Maximum partition width size should be larger than or equal to 16");
-    CONFIRM((param->sourceWidth  % (param->maxCUSize >> (param->maxCUDepth - 1))) != 0,
+    CONFIRM((param->sourceWidth  % (param->maxCUSize >> (getMaxCuDepth(param->maxCUSize) - 1))) != 0,
             "Resulting coded frame width must be a multiple of the minimum CU size");
-    CONFIRM((param->sourceHeight % (param->maxCUSize >> (param->maxCUDepth - 1))) != 0,
+    CONFIRM((param->sourceHeight % (param->maxCUSize >> (getMaxCuDepth(param->maxCUSize) - 1))) != 0,
             "Resulting coded frame height must be a multiple of the minimum CU size");
 
     CONFIRM(param->tuQTMinLog2Size < 2,
@@ -205,13 +208,13 @@
 
     CONFIRM(param->tuQTMaxLog2Size < param->tuQTMinLog2Size,
             "QuadtreeTULog2MaxSize must be greater than or equal to m_uiQuadtreeTULog2MinSize.");
-    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> (param->maxCUDepth - 1)),
+    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> (getMaxCuDepth(param->maxCUSize) - 1)),
             "QuadtreeTULog2MinSize must not be greater than minimum CU size"); // HS
-    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> (param->maxCUDepth - 1)),
+    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> (getMaxCuDepth(param->maxCUSize) - 1)),
             "QuadtreeTULog2MinSize must not be greater than minimum CU size"); // HS
-    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> param->maxCUDepth),
+    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> getMaxCuDepth(param->maxCUSize)),
             "Minimum CU width must be greater than minimum transform size.");
-    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> param->maxCUDepth),
+    CONFIRM((1u << param->tuQTMinLog2Size) > (param->maxCUSize >> getMaxCuDepth(param->maxCUSize)),
             "Minimum CU height must be greater than minimum transform size.");
     CONFIRM(param->tuQTMaxInterDepth < 1,
             "QuadtreeTUMaxDepthInter must be greater than or equal to 1");
@@ -264,14 +267,15 @@
 
     // compute actual CU depth with respect to config depth and max transform size
     g_uiAddCUDepth  = 0;
-    while ((param->maxCUSize >> param->maxCUDepth) > (1u << (param->tuQTMinLog2Size + g_uiAddCUDepth)))
+    while ((param->maxCUSize >> getMaxCuDepth(param->maxCUSize)) > (1u << (param->tuQTMinLog2Size + g_uiAddCUDepth)))
     {
         g_uiAddCUDepth++;
     }
 
-    param->maxCUDepth += g_uiAddCUDepth;
+    uint32_t cuDepth  = getMaxCuDepth(param->maxCUSize);
+    cuDepth += g_uiAddCUDepth;
     g_uiAddCUDepth++;
-    g_uiMaxCUDepth = param->maxCUDepth;
+    g_uiMaxCUDepth = cuDepth;
 
     // set internal bit-depth and constants
 #if HIGH_BIT_DEPTH
@@ -293,7 +297,7 @@
 #if HIGH_BIT_DEPTH
     x265_log(param, X265_LOG_INFO, "Internal bit depth           : %d\n", param->internalBitDepth);
 #endif
-    x265_log(param, X265_LOG_INFO, "CU size / depth              : %d / %d\n", param->maxCUSize, param->maxCUDepth);
+    x265_log(param, X265_LOG_INFO, "CU size                      : %d / %d\n", param->maxCUSize);
     x265_log(param, X265_LOG_INFO, "RQT trans. size (min / max)  : %d / %d\n", 1 << param->tuQTMinLog2Size, 1 << param->tuQTMaxLog2Size);
     x265_log(param, X265_LOG_INFO, "Max RQT depth inter / intra  : %d / %d\n", param->tuQTMaxInterDepth, param->tuQTMaxIntraDepth);
 
diff -r 02cb4e55ad54 -r f2cf62228119 source/common/common.h
--- a/source/common/common.h	Fri Jun 28 12:11:14 2013 +0530
+++ b/source/common/common.h	Fri Jun 28 12:18:48 2013 +0530
@@ -119,7 +119,7 @@
 void x265_set_globals(x265_param_t *param, uint32_t inputBitDepth);
 int64_t x265_mdate(void);
 int dumpBuffer(void * pbuf, size_t bufsize, const char * filename);
-
+uint32_t getMaxCuDepth(uint32_t maxCuSize);
 /* defined in primitives.cpp */
 void x265_setup_primitives(x265_param_t *param, int cpuid = 0);
 
diff -r 02cb4e55ad54 -r f2cf62228119 source/x265.h
--- a/source/x265.h	Fri Jun 28 12:11:14 2013 +0530
+++ b/source/x265.h	Fri Jun 28 12:18:48 2013 +0530
@@ -171,7 +171,7 @@
 
     // coding unit (CU) definition
     uint32_t  maxCUSize;                       ///< max. CU width and height in pixels
-    uint32_t  maxCUDepth;                      ///< max. CU recursion/split depth
+   
 
     // transform unit (TU) definition
     uint32_t  tuQTMaxLog2Size;
diff -r 02cb4e55ad54 -r f2cf62228119 source/x265opts.h
--- a/source/x265opts.h	Fri Jun 28 12:11:14 2013 +0530
+++ b/source/x265opts.h	Fri Jun 28 12:18:48 2013 +0530
@@ -28,7 +28,6 @@
 OPT("wpp",             param->bEnableWavefront,         no_argument, 0, "Enable Wavefront Parallel Processing")
 OPT("no-wpp",          param->bEnableWavefront,         no_argument, 0, "Disable Wavefront Parallel Processing")
 OPT("ctu",             param->maxCUSize,          required_argument, 's', "Maximum CU size (default: 64x64)")
-OPT("cu-depth",        param->maxCUDepth,         required_argument, 'd', "Maximum CU recursion depth (default: 4)")
 OPT("tu-maxlog2",      param->tuQTMaxLog2Size,    required_argument, 0, "Maximum TU size in logarithm base 2")
 OPT("tu-minlog2",      param->tuQTMinLog2Size,    required_argument, 0, "Minimum TU size in logarithm base 2")
 OPT("tu-intra-depth",  param->tuQTMaxIntraDepth,  required_argument, 0, "Max TU recursive depth for intra CUs")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: June_28_sumalatha.patch
Type: text/x-patch
Size: 7234 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20130628/f7f5c13a/attachment.bin>


More information about the x265-devel mailing list