diff --git a/ffmpeg.c b/ffmpeg.c index a5b54cb978..dc37cb19c1 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 b06f7ca80d..8f82e300f9 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 cc32198279..c242bcbb10 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 22a99a9d51..998ed6a45e 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