# HG changeset patch
# User Gopu Govindaswamy <[email protected]>
# Date 1426224600 -19800
#      Fri Mar 13 11:00:00 2015 +0530
# Node ID b0b5cd19b384d889094606326c07ad7bae24b18b
# Parent  3187844f4a7f86b1751eaddbb0f0ed926f767eeb
dqp: add param --max-dqp-depth for maxCuDQPDepth

make maxCuDQPDepth set through the param --max-dqp-depth, currently
the default maxCuDQPDepth is 0 then the CuDQP signaled once per CTU, this param
enable the CuDQP signaled for sub-LCU-level also, minimum maxCuDQPDepth is 0
and max maxCuDQPDepth equal to maxCUDepth, always the CuDQP signaled
if currentDepth is less than or equal to maxCuDQPDepth

diff -r 3187844f4a7f -r b0b5cd19b384 source/common/param.cpp
--- a/source/common/param.cpp   Mon Mar 09 14:35:20 2015 +0530
+++ b/source/common/param.cpp   Fri Mar 13 11:00:00 2015 +0530
@@ -210,6 +210,7 @@
     param->rc.zones = NULL;
     param->rc.bEnableSlowFirstPass = 0;
     param->rc.bStrictCbr = 0;
+    param->rc.maxCuDQPDepth = 0;
 
     /* Video Usability Information (VUI) */
     param->vui.aspectRatioIdc = 0;
@@ -838,6 +839,7 @@
     OPT2("pools", "numa-pools") p->numaPools = strdup(value);
     OPT("lambda-file") p->rc.lambdaFileName = strdup(value);
     OPT("analysis-file") p->analysisFileName = strdup(value);
+    OPT("max-dqp-depth") p->rc.maxCuDQPDepth = atoi(value);
     else
         return X265_PARAM_BAD_NAME;
 #undef OPT
diff -r 3187844f4a7f -r b0b5cd19b384 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp        Mon Mar 09 14:35:20 2015 +0530
+++ b/source/encoder/encoder.cpp        Fri Mar 13 11:00:00 2015 +0530
@@ -1546,15 +1546,11 @@
     bool bIsVbv = m_param->rc.vbvBufferSize > 0 && m_param->rc.vbvMaxBitrate > 
0;
 
     if (!m_param->bLossless && (m_param->rc.aqMode || bIsVbv))
-    {
         pps->bUseDQP = true;
-        pps->maxCuDQPDepth = 0; /* TODO: make configurable? */
-    }
     else
-    {
         pps->bUseDQP = false;
-        pps->maxCuDQPDepth = 0;
-    }
+
+    pps->maxCuDQPDepth = m_param->rc.maxCuDQPDepth;
 
     pps->chromaQpOffset[0] = m_param->cbQpOffset;
     pps->chromaQpOffset[1] = m_param->crQpOffset;
@@ -1773,6 +1769,17 @@
         p->analysisMode = X265_ANALYSIS_OFF;
         x265_log(p, X265_LOG_WARNING, "Analysis save and load mode not 
supported for distributed mode analysis\n");
     }
+    bool bIsVbv = m_param->rc.vbvBufferSize > 0 && m_param->rc.vbvMaxBitrate > 
0;
+    if (!m_param->bLossless && (m_param->rc.aqMode || bIsVbv))
+    {
+        if (p->rc.maxCuDQPDepth > (NUM_CU_DEPTH - 1))
+        {
+            p->rc.maxCuDQPDepth = 0;
+            x265_log(p, X265_LOG_WARNING, "The maxCUDQPDepth should be less 
than maxCUDepth setting maxCUDQPDepth = %d \n", 0);
+        }
+    }
+    else
+        p->rc.maxCuDQPDepth = 0;
 }
 
 void Encoder::allocAnalysis(x265_analysis_data* analysis)
diff -r 3187844f4a7f -r b0b5cd19b384 source/x265.h
--- a/source/x265.h     Mon Mar 09 14:35:20 2015 +0530
+++ b/source/x265.h     Fri Mar 13 11:00:00 2015 +0530
@@ -977,6 +977,13 @@
         /* Enable stricter conditions to check bitrate deviations in CBR mode. 
May compromise 
          * quality to maintain bitrate adherence */
         int bStrictCbr;
+
+        /* Max depth of a minimum CuDQP for sub-LCU-level delta QP
+         * the default maxCuDQPDepth is 0 then the CuDQP signaled once per 
CTU, this param
+         * enable the CuDQP signaled for sub-LCU-level also, minimum 
maxCuDQPDepth is 0
+         * and max maxCuDQPDepth is equal to maxCUDepth, always the CuDQP 
signaled
+         * if currentDepth is less than or equal to maxCuDQPDepth */
+        int maxCuDQPDepth;
     } rc;
 
     /*== Video Usability Information ==*/
diff -r 3187844f4a7f -r b0b5cd19b384 source/x265cli.h
--- a/source/x265cli.h  Mon Mar 09 14:35:20 2015 +0530
+++ b/source/x265cli.h  Fri Mar 13 11:00:00 2015 +0530
@@ -202,6 +202,7 @@
     { "strict-cbr",           no_argument, NULL, 0 },
     { "temporal-layers",      no_argument, NULL, 0 },
     { "no-temporal-layers",   no_argument, NULL, 0 },
+    { "max-dqp-depth",  required_argument, NULL, 0 },
     { 0, 0, 0, 0 },
     { 0, 0, 0, 0 },
     { 0, 0, 0, 0 },
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to