diff --git a/ffmpeg.c b/ffmpeg.c
index a5b54cb9788fce74578ce64096716d387dc37096..dc37cb19c1f4df9886448ad5204ed96de4e3606a 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -120,6 +120,7 @@ static int use_aic = 0;
 static int use_aiv = 0;
 static int use_umv = 0;
 static int use_alt_scan = 0;
+static int use_trell = 0;
 static int do_deinterlace = 0;
 static int do_interlace_dct = 0;
 static int do_interlace_me = 0;
@@ -2395,6 +2396,9 @@ static void opt_output_file(const char *filename)
            	if (use_alt_scan) {
                     video_enc->flags |= CODEC_FLAG_ALT_SCAN;
                 }
+           	if (use_trell) {
+                    video_enc->flags |= CODEC_FLAG_TRELLIS_QUANT;
+                }
                 if (b_frames) {
                     video_enc->max_b_frames = b_frames;
                     video_enc->b_frame_strategy = 0;
@@ -3029,6 +3033,7 @@ const OptionDef options[] = {
     { "aiv", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_aiv}, "enable Alternative inter vlc (h263+)" },
     { "umv", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_umv}, "enable Unlimited Motion Vector (h263+)" },
     { "alt", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_alt_scan}, "enable alternate scantable (mpeg2)" },
+    { "trell", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&use_trell}, "enable trellis quantization" },
     { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" },
     { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" },
     { "top", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_top_field_first}, "top=1/bottom=0/auto=-1 field first", "" },
diff --git a/tests/ffmpeg.regression.ref b/tests/ffmpeg.regression.ref
index b06f7ca80d196ab92ae9a6d87995a1436ae9b7d8..8f82e300f9d2cf9484431b5e14cd112bb3bbb0ff 100644
--- a/tests/ffmpeg.regression.ref
+++ b/tests/ffmpeg.regression.ref
@@ -35,9 +35,9 @@ stddev:  0.00 PSNR:99.99 bytes:7602176
 e9f63126859b97cd23cd1413038f8f7b *./data/a-mpeg4-rc.avi
 90a159074b1b109569914ee63f387860 *./data/out.yuv
 stddev: 10.18 PSNR:27.96 bytes:7145472
-d7d295f97a1e07b633f973d2325880ce *./data/a-mpeg4-adv.avi
-612f79510c8098f1421aa154047e2bf2 *./data/out.yuv
-stddev:  7.25 PSNR:30.91 bytes:7602176
+64b4b917014169294d59fe43ad6b3da9 *./data/a-mpeg4-adv.avi
+8069deacba9756fd25ad37b467eb6365 *./data/out.yuv
+stddev: 10.23 PSNR:27.92 bytes:7602176
 f863f4198521bd76930ea33991b47273 *./data/a-error-mpeg4-adv.avi
 ba7fcd126c7c9fead5a5de71aaaf0624 *./data/out.yuv
 stddev: 16.80 PSNR:23.61 bytes:7602176
diff --git a/tests/regression.sh b/tests/regression.sh
index cc3219827909813775716956b8ac6f1440853cf4..c242bcbb10ba3516864aeb8125f038ef42fef82a 100755
--- a/tests/regression.sh
+++ b/tests/regression.sh
@@ -238,7 +238,7 @@ fi
 if [ -n "$do_mpeg4adv" ] ; then
 # mpeg4
 file=${outfile}mpeg4-adv.avi
-do_ffmpeg $file -y -qscale 9 -4mv -hq -part -ps 200 -aic -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
+do_ffmpeg $file -y -qscale 9 -4mv -hq -part -ps 200 -aic -trell -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
 
 # mpeg4 decoding
 do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst 
diff --git a/tests/rotozoom.regression.ref b/tests/rotozoom.regression.ref
index 22a99a9d516a0fc16f8acfbeb6dc00d3a10413bc..998ed6a45e9a90a015f6515597db0a3e87e62504 100644
--- a/tests/rotozoom.regression.ref
+++ b/tests/rotozoom.regression.ref
@@ -35,9 +35,9 @@ stddev:  0.00 PSNR:99.99 bytes:7602176
 6a469f42ce6946dd4c708f9e51e3da6a *./data/a-mpeg4-rc.avi
 df9de7134d961119705b4e0cabca1f12 *./data/out.yuv
 stddev:  4.20 PSNR:35.64 bytes:7145472
-483504d060b0bd8ac1acfa3a823c2ad7 *./data/a-mpeg4-adv.avi
-08d24bdd7da80cffaf8abaa3e71b1843 *./data/out.yuv
-stddev:  4.96 PSNR:34.20 bytes:7602176
+accf60d11aceecabb3c1997aec6e18b5 *./data/a-mpeg4-adv.avi
+a287b07b812fbeeb5364517303178ac7 *./data/out.yuv
+stddev:  4.77 PSNR:34.54 bytes:7602176
 03ff35856faefb4882eaf4d86d95bea7 *./data/a-error-mpeg4-adv.avi
 8550acff0851ee915bd5800f1e20f37c *./data/out.yuv
 stddev:  9.66 PSNR:28.42 bytes:7602176