changeset 15557:40d5e0ccce93

sync to x264 r239 (zoned ratecontrol and UMHex ME)
author lorenm
date Tue, 24 May 2005 06:03:37 +0000
parents 7575f4b17b48
children 3aee7daaa8e5
files DOCS/man/en/mplayer.1 configure libmpcodecs/ve_x264.c
diffstat 3 files changed, 30 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Tue May 24 02:41:48 2005 +0000
+++ b/DOCS/man/en/mplayer.1	Tue May 24 06:03:37 2005 +0000
@@ -7957,6 +7957,23 @@
 higher values force it to vary more smoothly.
 .
 .TP
+.B zones=<zone0>[/\:<zone1>[/\:...]]
+User specified quality for specific parts (ending, credits, ...)
+(ABR or two pass).
+Each zone is <start-frame>,<end-frame>,<option> where option may be
+.PD 0
+.RSs
+.IPs "q=<0\-51>"
+quantizer
+.IPs "b=<0.01\-100.0>"
+bitrate multiplier
+.RE
+.PD 1
+Note: The quantizer option is not strictly enforced.
+It affects only the planning stage of ratecontrol, and is still subject
+to overflow compensation and qp_min/qp_max.
+.
+.TP
 .B direct_pred=<0\-2>
 Determines the type of motion prediction used for direct macroblocks
 in B-frames.
@@ -8014,7 +8031,7 @@
 4x4mv is recommended only with subq >= 3.
 .
 .TP
-.B me=<1\-3>
+.B me=<1\-4>
 Select fullpixel motion estimation algorithm.
 .PD 0
 .RSs
@@ -8023,7 +8040,9 @@
 .IPs 2
 hexagon search, radius 2 (default)
 .IPs 3
-Exhaustive search, controlled by me_range (very slow).
+uneven multi-hexagon search
+.IPs 4
+exhaustive search, controlled by me_range (very slow)
 .RE
 .PD 1
 .
--- a/configure	Tue May 24 02:41:48 2005 +0000
+++ b/configure	Tue May 24 06:03:37 2005 +0000
@@ -6052,7 +6052,7 @@
 cat > $TMPC << EOF
 #include <inttypes.h>
 #include <x264.h>
-#if X264_BUILD < 24
+#if X264_BUILD < 27
 #error We do not support old versions of x264. Get the latest from SVN.
 #endif
 int main(void) { x264_encoder_open((void*)0); return 0; }
--- a/libmpcodecs/ve_x264.c	Tue May 24 02:41:48 2005 +0000
+++ b/libmpcodecs/ve_x264.c	Tue May 24 06:03:37 2005 +0000
@@ -93,6 +93,7 @@
 static float qblur = 0.5;
 static float complexity_blur = 20;
 static char *rc_eq = "blurCplx^(1-qComp)";
+static char *zones = NULL;
 static int subq = 5;
 static int me_method = 2;
 static int me_range = 16;
@@ -145,8 +146,9 @@
     {"qcomp", &qcomp, CONF_TYPE_FLOAT, CONF_RANGE, 0, 1, NULL},
     {"qblur", &qblur, CONF_TYPE_FLOAT, CONF_RANGE, 0, 99, NULL},
     {"cplx_blur", &complexity_blur, CONF_TYPE_FLOAT, CONF_RANGE, 0, 999, NULL},
+    {"zones", &zones, CONF_TYPE_STRING, 0, 0, 0, NULL},
     {"subq", &subq, CONF_TYPE_INT, CONF_RANGE, 1, 5, NULL},
-    {"me", &me_method, CONF_TYPE_INT, CONF_RANGE, 1, 3, NULL},
+    {"me", &me_method, CONF_TYPE_INT, CONF_RANGE, 1, 4, NULL},
     {"me_range", &me_range, CONF_TYPE_INT, CONF_RANGE, 4, 64, NULL},
     {"level_idc", &level_idc, CONF_TYPE_INT, CONF_RANGE, 10, 51, NULL},
     {"psnr", &psnr, CONF_TYPE_FLAG, 0, 0, 1, NULL},
@@ -191,7 +193,6 @@
     mod->param.rc.f_qblur = qblur;
     mod->param.rc.f_complexity_blur = complexity_blur;
     mod->param.analyse.i_subpel_refine = subq;
-    mod->param.analyse.i_me_method = subq==1 ? X264_ME_DIA : X264_ME_HEX;
     mod->param.rc.psz_stat_out = passtmpfile;
     mod->param.rc.psz_stat_in = passtmpfile;
     if((pass & 2) && bitrate <= 0)
@@ -233,12 +234,15 @@
     }
     mod->param.rc.f_ip_factor = ip_factor;
     mod->param.rc.f_pb_factor = pb_factor;
+    mod->param.rc.psz_zones = zones;
     switch(me_method) {
         case 1: mod->param.analyse.i_me_method = X264_ME_DIA; break;
         case 2: mod->param.analyse.i_me_method = X264_ME_HEX; break;
-        case 3: mod->param.analyse.i_me_method = X264_ME_ESA;
-                mod->param.analyse.i_me_range = me_range; break;
+        case 3: mod->param.analyse.i_me_method = X264_ME_UMH; break;
+        case 4: mod->param.analyse.i_me_method = X264_ME_ESA; break;
     }
+    if(me_method >= 3)
+        mod->param.analyse.i_me_range = me_range;
     mod->param.analyse.inter = X264_ANALYSE_I4x4;
     if(p4x4mv)
         mod->param.analyse.inter |= X264_ANALYSE_PSUB8x8;