diff --git a/ffpresets/libx264-baseline.ffpreset b/ffpresets/libx264-baseline.ffpreset
index ee7654bdec2a52b023c3e0cdfc58787358fd7d78..a23b746ded90a9e8491301602c283ce61e47811c 100644
--- a/ffpresets/libx264-baseline.ffpreset
+++ b/ffpresets/libx264-baseline.ffpreset
@@ -1,4 +1,4 @@
 coder=0
 bf=0
-flags2=-wpred-dct8x8
+flags2=-wpred-dct8x8+mbtree
 wpredp=0
diff --git a/ffpresets/libx264-default.ffpreset b/ffpresets/libx264-default.ffpreset
index 75191e21b3a5a5cfc19ffb765beeaaf0a52919bc..a10c6332403f719f9db098397f595f87c5f08a4f 100644
--- a/ffpresets/libx264-default.ffpreset
+++ b/ffpresets/libx264-default.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=3
 directpred=1
 trellis=1
-flags2=+mixed_refs+wpred+dct8x8+fastpskip
+flags2=+mixed_refs+wpred+dct8x8+fastpskip+mbtree
 wpredp=2
diff --git a/ffpresets/libx264-fastfirstpass.ffpreset b/ffpresets/libx264-fastfirstpass.ffpreset
index 7278f771e19f4c4dc000821af1214d5a1ace8526..7cf6faae4148a2ceedc9da72ca0f0a8522a131fb 100644
--- a/ffpresets/libx264-fastfirstpass.ffpreset
+++ b/ffpresets/libx264-fastfirstpass.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=1
 directpred=3
 trellis=0
-flags2=-bpyramid-wpred-mixed_refs-dct8x8+fastpskip
+flags2=-bpyramid-wpred-mixed_refs-dct8x8+fastpskip+mbtree
 wpredp=2
diff --git a/ffpresets/libx264-hq.ffpreset b/ffpresets/libx264-hq.ffpreset
index 9c14d8f55406ac4ccfc9f8d98f7d804ae7a51274..eafc52e410db99b5a83a5395c6b3732fc172108e 100644
--- a/ffpresets/libx264-hq.ffpreset
+++ b/ffpresets/libx264-hq.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=4
 directpred=3
 trellis=1
-flags2=+wpred+mixed_refs+dct8x8+fastpskip
+flags2=+wpred+mixed_refs+dct8x8+fastpskip+mbtree
 wpredp=2
diff --git a/ffpresets/libx264-ipod320.ffpreset b/ffpresets/libx264-ipod320.ffpreset
index 943b52134836b9f13ed4aecdb6ab4d6ea5188bac..b10205025e507b974ef07e1caa302a0a9055e389 100644
--- a/ffpresets/libx264-ipod320.ffpreset
+++ b/ffpresets/libx264-ipod320.ffpreset
@@ -1,6 +1,6 @@
 coder=0
 bf=0
-flags2=-wpred-dct8x8
+flags2=-wpred-dct8x8+mbtree
 level=13
 maxrate=768000
 bufsize=3000000
diff --git a/ffpresets/libx264-ipod640.ffpreset b/ffpresets/libx264-ipod640.ffpreset
index 1ed3d9fb288e1c17c6720c5bfa868a4eec84a28d..aa731dccc535aa09b8793b67e3182a6e0d20ac9c 100644
--- a/ffpresets/libx264-ipod640.ffpreset
+++ b/ffpresets/libx264-ipod640.ffpreset
@@ -1,7 +1,7 @@
 coder=0
 bf=0
 refs=1
-flags2=-wpred-dct8x8
+flags2=-wpred-dct8x8+mbtree
 level=30
 maxrate=10000000
 bufsize=10000000
diff --git a/ffpresets/libx264-lossless_fast.ffpreset b/ffpresets/libx264-lossless_fast.ffpreset
index ea08d3c00b52a32a2b442dcd03ee2f77bc24c910..9bbabf5f7cd321fc39ddc115b83eb8368abdd9a3 100644
--- a/ffpresets/libx264-lossless_fast.ffpreset
+++ b/ffpresets/libx264-lossless_fast.ffpreset
@@ -15,6 +15,6 @@ qmin=10
 qmax=51
 qdiff=4
 directpred=1
-flags2=+fastpskip
+flags2=+fastpskip+mbtree
 cqp=0
 wpredp=0
diff --git a/ffpresets/libx264-lossless_max.ffpreset b/ffpresets/libx264-lossless_max.ffpreset
index 8c049c9c9369c10f96334351b664b1bf954821e7..d4ba018b75091b3dbb7a703f27abc05bf4ab88ca 100644
--- a/ffpresets/libx264-lossless_max.ffpreset
+++ b/ffpresets/libx264-lossless_max.ffpreset
@@ -16,6 +16,6 @@ qmax=51
 qdiff=4
 refs=16
 directpred=1
-flags2=+mixed_refs+dct8x8+fastpskip
+flags2=+mixed_refs+dct8x8+fastpskip+mbtree
 cqp=0
 wpredp=2
diff --git a/ffpresets/libx264-lossless_medium.ffpreset b/ffpresets/libx264-lossless_medium.ffpreset
index 558be6c931177fc28eeeef91bf486d4d42131139..c4133c2279f7ccdde2bd6f4d7fcc700e4cbda99a 100644
--- a/ffpresets/libx264-lossless_medium.ffpreset
+++ b/ffpresets/libx264-lossless_medium.ffpreset
@@ -15,6 +15,6 @@ qmin=10
 qmax=51
 qdiff=4
 directpred=1
-flags2=+fastpskip
+flags2=+fastpskip+mbtree
 cqp=0
 wpredp=2
diff --git a/ffpresets/libx264-lossless_slow.ffpreset b/ffpresets/libx264-lossless_slow.ffpreset
index ff641cf40f1d93369c28281c4e3e5ed48a4d4bbe..1421b9560337dc2a37ed625924afee5ed44ae121 100644
--- a/ffpresets/libx264-lossless_slow.ffpreset
+++ b/ffpresets/libx264-lossless_slow.ffpreset
@@ -16,6 +16,6 @@ qmax=51
 qdiff=4
 refs=2
 directpred=1
-flags2=+dct8x8+fastpskip
+flags2=+dct8x8+fastpskip+mbtree
 cqp=0
 wpredp=2
diff --git a/ffpresets/libx264-lossless_slower.ffpreset b/ffpresets/libx264-lossless_slower.ffpreset
index 854f74b2365b3bcb65a5fdefc1d34b4ac40a25d5..942445921e18acaba676c56a8f897050b6caed02 100644
--- a/ffpresets/libx264-lossless_slower.ffpreset
+++ b/ffpresets/libx264-lossless_slower.ffpreset
@@ -16,6 +16,6 @@ qmax=51
 qdiff=4
 refs=4
 directpred=1
-flags2=+mixed_refs+dct8x8+fastpskip
+flags2=+mixed_refs+dct8x8+fastpskip+mbtree
 cqp=0
 wpredp=2
diff --git a/ffpresets/libx264-lossless_ultrafast.ffpreset b/ffpresets/libx264-lossless_ultrafast.ffpreset
index 1c429f21ffcc5dd0bb0585aa4e5704bb2a7029a1..3c44488e8d8ebf78cd17d84266c5a15f80700364 100644
--- a/ffpresets/libx264-lossless_ultrafast.ffpreset
+++ b/ffpresets/libx264-lossless_ultrafast.ffpreset
@@ -15,5 +15,5 @@ qmin=10
 qmax=51
 qdiff=4
 directpred=1
-flags2=+fastpskip
+flags2=+fastpskip+mbtree
 cqp=0
diff --git a/ffpresets/libx264-main.ffpreset b/ffpresets/libx264-main.ffpreset
index d1dc7ddae947420b4b726842106a173f3ea2109b..0868c53cffb53e1b42fc2bf0ae93a2faa97d940a 100644
--- a/ffpresets/libx264-main.ffpreset
+++ b/ffpresets/libx264-main.ffpreset
@@ -1 +1 @@
-flags2=-dct8x8
+flags2=-dct8x8+mbtree
diff --git a/ffpresets/libx264-max.ffpreset b/ffpresets/libx264-max.ffpreset
index 667ba85fefeb205afdba9110c3461637c30dd20d..4289ab531ee449aca0670c2857742da3faea5b80 100644
--- a/ffpresets/libx264-max.ffpreset
+++ b/ffpresets/libx264-max.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=16
 directpred=3
 trellis=2
-flags2=+wpred+mixed_refs+dct8x8-fastpskip
+flags2=+wpred+mixed_refs+dct8x8-fastpskip+mbtree
 wpredp=2
diff --git a/ffpresets/libx264-normal.ffpreset b/ffpresets/libx264-normal.ffpreset
index ee790b6434d72134e17be9a2d69fa3dce77b73df..dd7991bab4c68167c2cf92cd99407a5345341e51 100644
--- a/ffpresets/libx264-normal.ffpreset
+++ b/ffpresets/libx264-normal.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=2
 directpred=3
 trellis=0
-flags2=+wpred+dct8x8+fastpskip
+flags2=+wpred+dct8x8+fastpskip+mbtree
 wpredp=2
diff --git a/ffpresets/libx264-slowfirstpass.ffpreset b/ffpresets/libx264-slowfirstpass.ffpreset
index fe073310dea1dd80d12ee9da799cd801f940c0c8..ba49065c14133d46a609071bc51b0d767d98e24b 100644
--- a/ffpresets/libx264-slowfirstpass.ffpreset
+++ b/ffpresets/libx264-slowfirstpass.ffpreset
@@ -18,5 +18,5 @@ bf=3
 refs=1
 directpred=3
 trellis=0
-flags2=+wpred+dct8x8+fastpskip
+flags2=+wpred+dct8x8+fastpskip+mbtree
 wpredp=2
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index f4fe7d676a88d3d11205db8654434a7a9e01c712..90f29963dae54463764f6976a2085915d9699ce5 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -580,6 +580,7 @@ typedef struct RcOverride{
 #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_MBTREE        0x00040000 ///< Use macroblock tree ratecontrol (x264 only)
 
 /* Unsupported options :
  *              Syntax Arithmetic coding (SAC)
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index 05c29805db2739f3dc638d7bd02a2bf84694f9c1..1fec3eded1763b9acf290aa7145cdac18f37f824 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -266,6 +266,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
     } else
         x4->params.rc.f_vbv_buffer_init = 0.9;
 
+    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;
diff --git a/libavcodec/options.c b/libavcodec/options.c
index fa64294a0d72699d90e5c9ab86b0dc4696d556dc..d224c41618629292a7395e77c1298eb1bb4497ba 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -391,6 +391,7 @@ static const AVOption options[]={
 {"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"},
+{"mbtree", "use macroblock tree ratecontrol (x264 only)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_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"},