[x265] [PATCH] presets: Updating presets to improve coding efficiency and speed

Pradeep Ramachandran pradeep at multicorewareinc.com
Mon Dec 21 09:41:40 CET 2015


# HG changeset patch
# User Pradeep Ramachandran <pradeep at multicorewareinc.com>
# Date 1450687279 -19800
#      Mon Dec 21 14:11:19 2015 +0530
# Node ID df793ec188d2cb6ea9dc886296ccb4c7448e4523
# Parent  0315c0c389c99185cbaa73a0e8acfe9ef60dd817
presets: Updating presets to improve  coding efficiency and speed.

This commit results in vast improvements in encoding speed and efficiency for
several presests. Most important features are increasing # references for
some presets and enabling limit-refs and limit-mode to limit impact on speed.

diff -r 0315c0c389c9 -r df793ec188d2 doc/reST/cli.rst
--- a/doc/reST/cli.rst	Thu Dec 17 23:27:58 2015 +0530
+++ b/doc/reST/cli.rst	Mon Dec 21 14:11:19 2015 +0530
@@ -685,7 +685,7 @@
 	(within your decoder level limits) if you enable one or
 	both of these flags.
 
-	This feature is EXPERIMENTAL and functional at all RD levels.
+	Default 3.
 
 .. option:: --limit-modes, --no-limit-modes
     
diff -r 0315c0c389c9 -r df793ec188d2 doc/reST/presets.rst
--- a/doc/reST/presets.rst	Thu Dec 17 23:27:58 2015 +0530
+++ b/doc/reST/presets.rst	Mon Dec 21 14:11:19 2015 +0530
@@ -22,7 +22,7 @@
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 |                     | ultrafast | superfast | veryfast | faster | fast | medium | slow | slower | veryslow | placebo |
 +=====================+===========+===========+==========+========+======+========+======+========+==========+=========+
-| ctu                 |   32      |    32     |   32     |  64    |  64  |   64   |  64  |  64    |   64     |   64    |
+| ctu                 |   32      |    32     |   64     |  64    |  64  |   64   |  64  |  64    |   64     |   64    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | min-cu-size         |   16      |     8     |    8     |   8    |   8  |    8   |   8  |   8    |    8     |    8    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
@@ -36,7 +36,9 @@
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | scenecut            |    0      |    40     |   40     |  40    |  40  |   40   |  40  |   40   |   40     |   40    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
-| ref                 |    1      |     1     |    1     |   1    |  2   |    3   |  3   |   3    |    5     |    5    |
+| ref                 |    1      |     1     |    2     |   2    |  3   |    3   |  4   |   4    |    5     |    5    |
++---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
+| limit-refs          |    0      |     0     |    3     |   3    |  3   |    3   |  3   |   2    |    1     |    0    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | me                  |   dia     |   hex     |   hex    |  hex   | hex  |   hex  | star |  star  |   star   |   star  |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
@@ -48,6 +50,8 @@
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | amp                 |    0      |     0     |    0     |   0    |  0   |    0   |  0   |   1    |    1     |    1    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
+| limit-refs          |    0      |     0     |    0     |   0    |  0   |    0   |  1   |   1    |    1     |    0    |
++---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | max-merge           |    2      |     2     |    2     |   2    |  2   |    2   |  3   |   3    |    4     |    5    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | early-skip          |    1      |     1     |    1     |   1    |  0   |    0   |  0   |   0    |    0     |    0    |
@@ -66,7 +70,7 @@
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | aq-mode             |    0      |     0     |    1     |   1    |  1   |    1   |  1   |   1    |    1     |    1    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
-| cuTree              |    0      |     0     |    0     |   0    |  1   |    1   |  1   |   1    |    1     |    1    |
+| cuTree              |    1      |     1     |    1     |   1    |  1   |    1   |  1   |   1    |    1     |    1    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
 | rdLevel             |    2      |     2     |    2     |   2    |  2   |    3   |  4   |   6    |    6     |    6    |
 +---------------------+-----------+-----------+----------+--------+------+--------+------+--------+----------+---------+
diff -r 0315c0c389c9 -r df793ec188d2 source/common/param.cpp
--- a/source/common/param.cpp	Thu Dec 17 23:27:58 2015 +0530
+++ b/source/common/param.cpp	Mon Dec 21 14:11:19 2015 +0530
@@ -159,7 +159,7 @@
     param->subpelRefine = 2;
     param->searchRange = 57;
     param->maxNumMergeCand = 2;
-    param->limitReferences = 0;
+    param->limitReferences = 3;
     param->limitModes = 0;
     param->bEnableWeightedPred = 1;
     param->bEnableWeightedBiPred = 0;
@@ -279,9 +279,9 @@
             param->bEnableWeightedPred = 0;
             param->rdLevel = 2;
             param->maxNumReferences = 1;
+            param->limitReferences = 0;
             param->rc.aqStrength = 0.0;
             param->rc.aqMode = X265_AQ_NONE;
-            param->rc.cuTree = 0;
             param->rc.qgSize = 32;
             param->bEnableFastIntra = 1;
         }
@@ -296,9 +296,9 @@
             param->bEnableWeightedPred = 0;
             param->rdLevel = 2;
             param->maxNumReferences = 1;
+            param->limitReferences = 0;
             param->rc.aqStrength = 0.0;
             param->rc.aqMode = X265_AQ_NONE;
-            param->rc.cuTree = 0;
             param->rc.qgSize = 32;
             param->bEnableSAO = 0;
             param->bEnableFastIntra = 1;
@@ -306,13 +306,11 @@
         else if (!strcmp(preset, "veryfast"))
         {
             param->lookaheadDepth = 15;
-            param->maxCUSize = 32;
             param->bFrameAdaptive = 0;
             param->subpelRefine = 1;
             param->bEnableEarlySkip = 1;
             param->rdLevel = 2;
-            param->maxNumReferences = 1;
-            param->rc.cuTree = 0;
+            param->maxNumReferences = 2;
             param->rc.qgSize = 32;
             param->bEnableFastIntra = 1;
         }
@@ -322,8 +320,7 @@
             param->bFrameAdaptive = 0;
             param->bEnableEarlySkip = 1;
             param->rdLevel = 2;
-            param->maxNumReferences = 1;
-            param->rc.cuTree = 0;
+            param->maxNumReferences = 2;
             param->bEnableFastIntra = 1;
         }
         else if (!strcmp(preset, "fast"))
@@ -331,7 +328,7 @@
             param->lookaheadDepth = 15;
             param->bFrameAdaptive = 0;
             param->rdLevel = 2;
-            param->maxNumReferences = 2;
+            param->maxNumReferences = 3;
             param->bEnableFastIntra = 1;
         }
         else if (!strcmp(preset, "medium"))
@@ -348,6 +345,7 @@
             param->subpelRefine = 3;
             param->maxNumMergeCand = 3;
             param->searchMethod = X265_STAR_SEARCH;
+            param->maxNumReferences = 4;
             param->lookaheadSlices = 4; // limit parallelism as already enough work exists
         }
         else if (!strcmp(preset, "slower"))
@@ -365,6 +363,8 @@
             param->subpelRefine = 3;
             param->maxNumMergeCand = 3;
             param->searchMethod = X265_STAR_SEARCH;
+            param->maxNumReferences = 4;
+            param->limitReferences = 2;
             param->bIntraInBFrames = 1;
             param->lookaheadSlices = 4; // limit parallelism as already enough work exists
         }
@@ -384,6 +384,7 @@
             param->maxNumMergeCand = 4;
             param->searchMethod = X265_STAR_SEARCH;
             param->maxNumReferences = 5;
+            param->limitReferences = 1;
             param->bIntraInBFrames = 1;
             param->lookaheadSlices = 0; // disabled for best quality
         }
@@ -405,6 +406,7 @@
             param->searchMethod = X265_STAR_SEARCH;
             param->bEnableTransformSkip = 1;
             param->maxNumReferences = 5;
+            param->limitReferences = 0;
             param->rc.bEnableSlowFirstPass = 1;
             param->bIntraInBFrames = 1;
             param->lookaheadSlices = 0; // disabled for best quality


More information about the x265-devel mailing list