[FFmpeg-cvslog] libx264: add 'mbtree' private option.

Anton Khirnov git at videolan.org
Thu Sep 1 00:03:06 CEST 2011


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Aug 27 10:16:14 2011 +0200| [0dc5e12f1e16d22aca861d42de9c4fd400df46ae] | committer: Anton Khirnov

libx264: add 'mbtree' private option.

Deprecate CODEC_FLAG2_MBTREE

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0dc5e12f1e16d22aca861d42de9c4fd400df46ae
---

 libavcodec/avcodec.h |    2 +-
 libavcodec/libx264.c |    6 +++++-
 libavcodec/options.c |    2 ++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index b0317d5..f59b850 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -631,8 +631,8 @@ typedef struct RcOverride{
 #if FF_API_LAME_GLOBAL_OPTS
 #define CODEC_FLAG2_BIT_RESERVOIR 0x00020000 ///< Use a bit reservoir when encoding if possible
 #endif
-#define CODEC_FLAG2_MBTREE        0x00040000 ///< Use macroblock tree ratecontrol (x264 only)
 #if FF_API_X264_GLOBAL_OPTS
+#define CODEC_FLAG2_MBTREE        0x00040000 ///< Use macroblock tree ratecontrol (x264 only)
 #define CODEC_FLAG2_PSY           0x00080000 ///< Use psycho visual optimizations.
 #define CODEC_FLAG2_SSIM          0x00100000 ///< Compute SSIM during encoding, error[] values are undefined.
 #define CODEC_FLAG2_INTRA_REFRESH 0x00200000 ///< Use periodic insertion of intra blocks instead of keyframes.
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index 2ea6614..8614ec5 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -58,6 +58,7 @@ typedef struct X264Context {
     int dct8x8;
     int fast_pskip;
     int aud;
+    int mbtree;
 } X264Context;
 
 static void X264_log(void *p, int level, const char *fmt, va_list args)
@@ -304,7 +305,6 @@ static av_cold int X264_init(AVCodecContext *avctx)
             (float)avctx->rc_initial_buffer_occupancy / avctx->rc_buffer_size;
     }
 
-    x4->params.rc.b_mb_tree               = !!(avctx->flags2 & CODEC_FLAG2_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;
@@ -331,6 +331,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
     x4->params.analyse.b_fast_pskip       = avctx->flags2 & CODEC_FLAG2_FASTPSKIP;
     x4->params.b_aud                      = avctx->flags2 & CODEC_FLAG2_AUD;
     x4->params.analyse.b_psy              = avctx->flags2 & CODEC_FLAG2_PSY;
+    x4->params.rc.b_mb_tree               = !!(avctx->flags2 & CODEC_FLAG2_MBTREE);
 #endif
 
     if (x4->aq_mode >= 0)
@@ -364,6 +365,8 @@ static av_cold int X264_init(AVCodecContext *avctx)
         x4->params.analyse.b_fast_pskip       = x4->fast_pskip;
     if (x4->aud >= 0)
         x4->params.b_aud                      = x4->aud;
+    if (x4->mbtree >= 0)
+        x4->params.rc.b_mb_tree               = x4->mbtree;
 
     if (x4->fastfirstpass)
         x264_param_apply_fastfirstpass(&x4->params);
@@ -460,6 +463,7 @@ static const AVOption options[] = {
     { "8x8dct",        "High profile 8x8 transform.",                     OFFSET(dct8x8),        FF_OPT_TYPE_INT,    {-1 }, -1, 1, VE},
     { "fast-pskip",    NULL,                                              OFFSET(fast_pskip),    FF_OPT_TYPE_INT,    {-1 }, -1, 1, VE},
     { "aud",           "Use access unit delimiters.",                     OFFSET(aud),           FF_OPT_TYPE_INT,    {-1 }, -1, 1, VE},
+    { "mbtree",        "Use macroblock tree ratecontrol.",                OFFSET(mbtree),        FF_OPT_TYPE_INT,    {-1 }, -1, 1, VE},
     { NULL },
 };
 
diff --git a/libavcodec/options.c b/libavcodec/options.c
index e7e7983..4ad86e6 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -434,7 +434,9 @@ static const AVOption options[]={
 #if FF_API_LAME_GLOBAL_OPTS
 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_BIT_RESERVOIR }, INT_MIN, INT_MAX, A|E, "flags2"},
 #endif
+#if FF_API_X264_GLOBAL_OPTS
 {"mbtree", "use macroblock tree ratecontrol (x264 only)", 0, FF_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_MBTREE }, INT_MIN, INT_MAX, V|E, "flags2"},
+#endif
 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), FF_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX},
 {"channel_layout", NULL, OFFSET(channel_layout), FF_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|E|D, "channel_layout"},
 {"request_channel_layout", NULL, OFFSET(request_channel_layout), FF_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|D, "request_channel_layout"},



More information about the ffmpeg-cvslog mailing list