[FFmpeg-devel] [PATCH] libavcodec interface to no_mbtree option of libx264

Erik Slagter erik
Sun Dec 6 13:25:43 CET 2009


Very trivial patch, please apply:

Index: libavcodec/options.c
===================================================================
--- libavcodec/options.c	(revision 20746)
+++ libavcodec/options.c	(working copy)
@@ -391,6 +391,7 @@
 {"request_channels", "set desired number of audio channels",
OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D},
 {"drc_scale", "percentage of dynamic range compression to apply",
OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D},
 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST,
CODEC_FLAG2_BIT_RESERVOIR, INT_MIN, INT_MAX, A|E, "flags2"},
+{"no_mbtree", "do not use macroblock tree ratecontrol (x264 only)", 0,
FF_OPT_TYPE_CONST, CODEC_FLAG2_NO_MBTREE, INT_MIN, INT_MAX, V|E,
"flags2"},
 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample),
FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
 {"channel_layout", NULL, OFFSET(channel_layout), FF_OPT_TYPE_INT64,
DEFAULT, 0, INT64_MAX, A|E|D, "channel_layout"},
 {"request_channel_layout", NULL, OFFSET(request_channel_layout),
FF_OPT_TYPE_INT64, DEFAULT, 0, INT64_MAX, A|D,
"request_channel_layout"},
Index: libavcodec/avcodec.h
===================================================================
--- libavcodec/avcodec.h	(revision 20746)
+++ libavcodec/avcodec.h	(working copy)
@@ -580,6 +580,7 @@
 #define CODEC_FLAG2_CHUNKS        0x00008000 ///< Input bitstream might
be truncated at a packet boundaries instead of only at frame boundaries.
 #define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2
nonlinear quantizer.
 #define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir
when encoding if possible
+#define CODEC_FLAG2_NO_MBTREE     0x00040000 ///< Do not use macroblock
tree ratecontrol (x264 only)
 
 /* Unsupported options :
  *              Syntax Arithmetic coding (SAC)
Index: libavcodec/libx264.c
===================================================================
--- libavcodec/libx264.c	(revision 20746)
+++ libavcodec/libx264.c	(working copy)
@@ -266,6 +266,7 @@
     } else
         x4->params.rc.f_vbv_buffer_init = 0.9;
 
+    x4->params.rc.b_mb_tree               = !(avctx->flags2 &
CODEC_FLAG2_NO_MBTREE);
     x4->params.rc.f_ip_factor             = 1 /
fabs(avctx->i_quant_factor);
     x4->params.rc.f_pb_factor             = avctx->b_quant_factor;
     x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset;
-------------- next part --------------
Index: libavcodec/options.c
===================================================================
--- libavcodec/options.c	(revision 20746)
+++ libavcodec/options.c	(working copy)
@@ -391,6 +391,7 @@
 {"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D},
 {"drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D},
 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BIT_RESERVOIR, INT_MIN, INT_MAX, A|E, "flags2"},
+{"no_mbtree", "do not use macroblock tree ratecontrol (x264 only)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NO_MBTREE, INT_MIN, INT_MAX, V|E, "flags2"},
 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
 {"channel_layout", NULL, OFFSET(channel_layout), FF_OPT_TYPE_INT64, DEFAULT, 0, INT64_MAX, A|E|D, "channel_layout"},
 {"request_channel_layout", NULL, OFFSET(request_channel_layout), FF_OPT_TYPE_INT64, DEFAULT, 0, INT64_MAX, A|D, "request_channel_layout"},
Index: libavcodec/avcodec.h
===================================================================
--- libavcodec/avcodec.h	(revision 20746)
+++ libavcodec/avcodec.h	(working copy)
@@ -580,6 +580,7 @@
 #define CODEC_FLAG2_CHUNKS        0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries.
 #define CODEC_FLAG2_NON_LINEAR_QUANT 0x00010000 ///< Use MPEG-2 nonlinear quantizer.
 #define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible
+#define CODEC_FLAG2_NO_MBTREE     0x00040000 ///< Do not use macroblock tree ratecontrol (x264 only)
 
 /* Unsupported options :
  *              Syntax Arithmetic coding (SAC)
Index: libavcodec/libx264.c
===================================================================
--- libavcodec/libx264.c	(revision 20746)
+++ libavcodec/libx264.c	(working copy)
@@ -266,6 +266,7 @@
     } else
         x4->params.rc.f_vbv_buffer_init = 0.9;
 
+    x4->params.rc.b_mb_tree               = !(avctx->flags2 & CODEC_FLAG2_NO_MBTREE);
     x4->params.rc.f_ip_factor             = 1 / fabs(avctx->i_quant_factor);
     x4->params.rc.f_pb_factor             = avctx->b_quant_factor;
     x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset;



More information about the ffmpeg-devel mailing list