[x265] [PATCH] Add max-ausize-factor option to control the maximum AU size defined in specification

Divya Manivannan divya at multicorewareinc.com
Mon Mar 5 10:42:58 CET 2018


# HG changeset patch
# User Divya Manivannan <divya at multicorewareinc.com>
# Date 1519726842 -19800
#      Tue Feb 27 15:50:42 2018 +0530
# Node ID 59c02e68410fcb2846cd7a021e2639f96e0a9609
# Parent  4c0d8a22625d0b13a9808329cb9bf8c03f7c6035
Add max-ausize-factor option to control the maximum AU size defined in specification

diff -r 4c0d8a22625d -r 59c02e68410f doc/reST/cli.rst
--- a/doc/reST/cli.rst	Thu Jan 25 11:37:21 2018 +0530
+++ b/doc/reST/cli.rst	Tue Feb 27 15:50:42 2018 +0530
@@ -1857,6 +1857,11 @@
 	the more bits it will try to spend on signaling information (motion
 	vectors and splits) and less on residual. This feature is intended
 	for experimentation.
+	
+.. option:: --max-ausize-factor <float>
+
+        It controls the maximum AU size defined in specification. It represents
+        the percentage of maximum AU size used. Default is 1. Range is 0.5 to 1.
 
 Loop filters
 ============
diff -r 4c0d8a22625d -r 59c02e68410f source/CMakeLists.txt
--- a/source/CMakeLists.txt	Thu Jan 25 11:37:21 2018 +0530
+++ b/source/CMakeLists.txt	Tue Feb 27 15:50:42 2018 +0530
@@ -29,7 +29,7 @@
 option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)
 mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
 # X265_BUILD must be incremented each time the public API is changed
-set(X265_BUILD 152)
+set(X265_BUILD 153)
 configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
                "${PROJECT_BINARY_DIR}/x265.def")
 configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
diff -r 4c0d8a22625d -r 59c02e68410f source/common/param.cpp
--- a/source/common/param.cpp	Thu Jan 25 11:37:21 2018 +0530
+++ b/source/common/param.cpp	Tue Feb 27 15:50:42 2018 +0530
@@ -295,6 +295,7 @@
     param->forceFlush = 0;
     param->bDisableLookahead = 0;
     param->bCopyPicToFrame = 1;
+    param->maxAUSizeFactor = 1;
 
     /* DCT Approximations */
     param->bLowPassDct = 0;
@@ -1012,6 +1013,7 @@
         OPT("analysis-save") p->analysisSave = strdup(value);
         OPT("analysis-load") p->analysisLoad = strdup(value);
         OPT("radl") p->radl = atoi(value);
+        OPT("max-ausize-factor") p->maxAUSizeFactor = atof(value);
         else
             return X265_PARAM_BAD_NAME;
     }
@@ -1367,6 +1369,8 @@
         "Invalid refine-inter value, refine-inter levels 0 to 3 supported");
     CHECK(param->intraRefine > 4 || param->intraRefine < 0,
         "Invalid refine-intra value, refine-intra levels 0 to 3 supported");
+    CHECK(param->maxAUSizeFactor < 0.5 || param->maxAUSizeFactor > 1.0,
+        "Supported factor for controlling max AU size is from 0.5 to 1");
 #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");
@@ -1740,6 +1744,7 @@
     BOOL(p->bLowPassDct, "lowpass-dct");
     s += sprintf(s, " refine-mv-type=%d", p->bMVType);
     s += sprintf(s, " copy-pic=%d", p->bCopyPicToFrame);
+    s += sprintf(s, " max-ausize-factor=%.1f", p->maxAUSizeFactor);
 #undef BOOL
     return buf;
 }
diff -r 4c0d8a22625d -r 59c02e68410f source/encoder/ratecontrol.cpp
--- a/source/encoder/ratecontrol.cpp	Thu Jan 25 11:37:21 2018 +0530
+++ b/source/encoder/ratecontrol.cpp	Tue Feb 27 15:50:42 2018 +0530
@@ -1302,6 +1302,7 @@
                 /* 1.5 * MaxLumaSr * (AuCpbRemovalTime[ n ] - AuCpbRemovalTime[ n - 1 ]) / MinCr */
                 rce->frameSizeMaximum = 8 * 1.5 * enc->m_vps.ptl.maxLumaSrForLevel * m_frameDuration / mincr;
             }
+            rce->frameSizeMaximum *= m_param->maxAUSizeFactor;
         }
     }
     if (!m_isAbr && m_2pass && m_param->rc.rateControlMode == X265_RC_CRF)
diff -r 4c0d8a22625d -r 59c02e68410f source/x265.h
--- a/source/x265.h	Thu Jan 25 11:37:21 2018 +0530
+++ b/source/x265.h	Tue Feb 27 15:50:42 2018 +0530
@@ -1548,6 +1548,11 @@
 
     /*Number of RADL pictures allowed in front of IDR*/
     int radl;
+
+    /* This value controls the maximum AU size defined in specification
+     * It represents the percentage of maximum AU size used.
+     * Default is 1 (which is 100%). Range is 0.5 to 1. */
+    double maxAUSizeFactor;
 } x265_param;
 
 /* x265_param_alloc:
diff -r 4c0d8a22625d -r 59c02e68410f source/x265cli.h
--- a/source/x265cli.h	Thu Jan 25 11:37:21 2018 +0530
+++ b/source/x265cli.h	Tue Feb 27 15:50:42 2018 +0530
@@ -293,6 +293,7 @@
     { "refine-mv-type", required_argument, NULL, 0 },
     { "copy-pic",             no_argument, NULL, 0 },
     { "no-copy-pic",          no_argument, NULL, 0 },
+    { "max-ausize-factor", required_argument, NULL, 0 },
     { 0, 0, 0, 0 },
     { 0, 0, 0, 0 },
     { 0, 0, 0, 0 },
@@ -516,6 +517,8 @@
     H1("                                 MAX_MAX_QP+1 floats for lambda table, then again for lambda2 table\n");
     H1("                                 Blank lines and lines starting with hash(#) are ignored\n");
     H1("                                 Comma is considered to be white-space\n");
+    H0("   --max-ausize-factor <float>   This value controls the maximum AU size defined in specification.\n");
+    H0("                                 It represents the percentage of maximum AU size used. Default %.1f\n", param->maxAUSizeFactor);
     H0("\nLoop filters (deblock and SAO):\n");
     H0("   --[no-]deblock                Enable Deblocking Loop Filter, optionally specify tC:Beta offsets Default %s\n", OPT(param->bEnableLoopFilter));
     H0("   --[no-]sao                    Enable Sample Adaptive Offset. Default %s\n", OPT(param->bEnableSAO));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265-clone.patch
Type: text/x-patch
Size: 5591 bytes
Desc: not available
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20180305/6bb66178/attachment-0001.bin>


More information about the x265-devel mailing list