changeset 14916:68582488a5d6

sync to x264 r150: new option 'b_pyramid'
author lorenm
date Fri, 04 Mar 2005 13:11:01 +0000
parents 5146c58fcf24
children 8d652ed85e9e
files DOCS/man/en/mplayer.1 configure libmpcodecs/ve_x264.c
diffstat 3 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Fri Mar 04 07:50:55 2005 +0000
+++ b/DOCS/man/en/mplayer.1	Fri Mar 04 13:11:01 2005 +0000
@@ -7660,6 +7660,20 @@
 A higher b_bias produces more B-frames. (default: 0)
 .
 .TP
+.B (no)b_pyramid
+Allows B-frames to be used as references for predicting other frames.
+For example, consider 3 consecutive B-frames: I0 B1 B2 B3 P4.
+Without this option, B-frames follow the same pattern as MPEG-[124].
+So they are coded in the order I0 P4 B1 B2 B3, and all the B-frames 
+are predicted from I0 and P4.
+With this option, they are coded as I0 P4 B2 B1 B3.
+B2 is the same as above, but B1 is predicted from I0 and B2, and 
+B3 is predicted from B2 and P4.
+This results in slightly improved compression, at no speed cost.
+Requires bframes >= 2.
+Disadvantage: increases decoding delay to 2 frames.
+.
+.TP
 .B (no)deblock
 Use deblocking filter (default: on).
 As it takes very little time compared to its quality gain, it's not
--- a/configure	Fri Mar 04 07:50:55 2005 +0000
+++ b/configure	Fri Mar 04 13:11:01 2005 +0000
@@ -5920,7 +5920,7 @@
 #include <stdint.h>
 #include <stdarg.h>
 #include <x264.h>
-#if X264_BUILD < 0x0013
+#if X264_BUILD < 0x0014
 #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	Fri Mar 04 07:50:55 2005 +0000
+++ b/libmpcodecs/ve_x264.c	Fri Mar 04 13:11:01 2005 +0000
@@ -67,6 +67,7 @@
 static int bframe = 0;
 static int bframe_adaptive = 1;
 static int bframe_bias = 0;
+static int bframe_pyramid = 0;
 static int deblock = 1;
 static int deblockalpha = 0;
 static int deblockbeta = 0;
@@ -106,6 +107,8 @@
     {"b_adapt", &bframe_adaptive, CONF_TYPE_FLAG, 0, 0, 1, NULL},
     {"nob_adapt", &bframe_adaptive, CONF_TYPE_FLAG, 0, 1, 0, NULL},
     {"b_bias", &bframe_bias, CONF_TYPE_INT, CONF_RANGE, -100, 100, NULL},
+    {"b_pyramid", &bframe_pyramid, CONF_TYPE_FLAG, 0, 0, 1, NULL},
+    {"nob_pyramid", &bframe_pyramid, CONF_TYPE_FLAG, 0, 1, 0, NULL},
     {"deblock", &deblock, CONF_TYPE_FLAG, 0, 0, 1, NULL},
     {"nodeblock", &deblock, CONF_TYPE_FLAG, 0, 1, 0, NULL},
     {"deblockalpha", &deblockalpha, CONF_TYPE_INT, CONF_RANGE, -6, 6, NULL},
@@ -160,6 +163,7 @@
     mod->param.i_bframe = bframe;
     mod->param.b_bframe_adaptive = bframe_adaptive;
     mod->param.i_bframe_bias = bframe_bias;
+    mod->param.b_bframe_pyramid = bframe_pyramid;
     mod->param.b_deblocking_filter = deblock;
     mod->param.i_deblocking_filter_alphac0 = deblockalpha;
     mod->param.i_deblocking_filter_beta = deblockbeta;