[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