51133a7d |
#!/bin/sh
#
# automatic regression test for ffmpeg
#
#
#set -x |
d9d7653e |
|
51133a7d |
set -e
|
2189dbc4 |
. $(dirname $0)/regression-funcs.sh |
89d5dfd5 |
|
4383ed5c |
eval do_$test=y
rm -f "$logfile" |
51133a7d |
|
67cbe681 |
# generate reference for quality check |
c676895f |
if [ -n "$do_vref" ]; then |
70378ea1 |
do_ffmpeg $raw_ref -f image2 -vcodec pgmyuv -i $raw_src -an -f rawvideo |
c676895f |
fi
if [ -n "$do_aref" ]; then |
70378ea1 |
do_ffmpeg $pcm_ref -ab 128k -ac 2 -ar 44100 -f s16le -i $pcm_src -f wav |
4383ed5c |
fi |
67cbe681 |
|
51133a7d |
if [ -n "$do_mpeg" ] ; then |
0fc3a831 |
# mpeg1 |
2728fd90 |
do_video_encoding mpeg1.mpg "-qscale 10 -f mpeg1video" |
1de61a18 |
do_video_decoding |
922bc38d |
fi
if [ -n "$do_mpeg2" ] ; then |
0fc3a831 |
# mpeg2 |
2728fd90 |
do_video_encoding mpeg2.mpg "-qscale 10 -vcodec mpeg2video -f mpeg1video" |
1de61a18 |
do_video_decoding |
83dddc4a |
|
49f1ac5a |
# mpeg2 encoding intra vlc qprd |
2728fd90 |
do_video_encoding mpeg2ivlc-qprd.mpg "-vb 500k -bf 2 -trellis 1 -flags +qprd+mv0 -flags2 +ivlc -cmp 2 -subcmp 2 -mbd rd -vcodec mpeg2video -f mpeg2video" |
1de61a18 |
do_video_decoding |
307eb248 |
|
2cce68f8 |
#mpeg2 4:2:2 encoding |
2728fd90 |
do_video_encoding mpeg2_422.mpg "-vb 1000k -bf 2 -trellis 1 -flags +qprd+mv0+ildct+ilme -flags2 +ivlc -mbd rd -vcodec mpeg2video -pix_fmt yuv422p -f mpeg2video" |
2cce68f8 |
do_video_decoding
|
0fc3a831 |
# mpeg2 |
2728fd90 |
do_video_encoding mpeg2.mpg "-qscale 10 -vcodec mpeg2video -idct int -dct int -f mpeg1video" |
5e5ac8e0 |
do_video_decoding "-idct int" |
6486ad57 |
|
83dddc4a |
# mpeg2 encoding interlaced |
2728fd90 |
do_video_encoding mpeg2i.mpg "-qscale 10 -vcodec mpeg2video -f mpeg1video -flags +ildct+ilme" |
1de61a18 |
do_video_decoding |
51133a7d |
fi
|
9c3d33d6 |
if [ -n "$do_mpeg2thread" ] ; then
# mpeg2 encoding interlaced |
2728fd90 |
do_video_encoding mpeg2thread.mpg "-qscale 10 -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -threads 2" |
1de61a18 |
do_video_decoding |
307eb248 |
# mpeg2 encoding interlaced using intra vlc |
2728fd90 |
do_video_encoding mpeg2threadivlc.mpg "-qscale 10 -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -flags2 +ivlc -threads 2" |
1de61a18 |
do_video_decoding |
7f8038ce |
# mpeg2 encoding interlaced
file=${outfile}mpeg2reuse.mpg |
eeadaa6b |
do_ffmpeg $file $DEC_OPTS -me_threshold 256 -i ${target_path}/${outfile}mpeg2thread.mpg $ENC_OPTS -sameq -me_threshold 256 -mb_threshold 1024 -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -threads 4 |
1de61a18 |
do_video_decoding |
9c3d33d6 |
fi
|
6ebd933b |
if [ -n "$do_msmpeg4v2" ] ; then |
2728fd90 |
do_video_encoding msmpeg4v2.avi "-qscale 10 -an -vcodec msmpeg4v2" |
1de61a18 |
do_video_decoding |
6ebd933b |
fi
|
51133a7d |
if [ -n "$do_msmpeg4" ] ; then |
2728fd90 |
do_video_encoding msmpeg4.avi "-qscale 10 -an -vcodec msmpeg4" |
1de61a18 |
do_video_decoding |
51133a7d |
fi
|
b5f20892 |
if [ -n "$do_msvideo1" ] ; then |
6841c8c5 |
do_video_encoding msvideo1.avi "-an -vcodec msvideo1" |
b5f20892 |
do_video_decoding "" "-pix_fmt yuv420p"
fi
|
6ebd933b |
if [ -n "$do_wmv1" ] ; then |
2728fd90 |
do_video_encoding wmv1.avi "-qscale 10 -an -vcodec wmv1" |
1de61a18 |
do_video_decoding |
6ebd933b |
fi
|
e23d5712 |
if [ -n "$do_wmv2" ] ; then |
2728fd90 |
do_video_encoding wmv2.avi "-qscale 10 -an -vcodec wmv2" |
1de61a18 |
do_video_decoding |
e23d5712 |
fi
|
61b262a9 |
if [ -n "$do_h261" ] ; then |
2728fd90 |
do_video_encoding h261.avi "-qscale 11 -s 352x288 -an -vcodec h261" |
1de61a18 |
do_video_decoding |
61b262a9 |
fi
|
51133a7d |
if [ -n "$do_h263" ] ; then |
2728fd90 |
do_video_encoding h263.avi "-qscale 10 -s 352x288 -an -vcodec h263" |
1de61a18 |
do_video_decoding |
6e2d5f1a |
fi
if [ -n "$do_h263p" ] ; then |
2728fd90 |
do_video_encoding h263p.avi "-qscale 2 -flags +umv+aiv+aic -s 352x288 -an -vcodec h263p -ps 300" |
1de61a18 |
do_video_decoding |
51133a7d |
fi
if [ -n "$do_mpeg4" ] ; then |
2728fd90 |
do_video_encoding odivx.mp4 "-flags +mv4 -mbd bits -qscale 10 -an -vcodec mpeg4" |
aeeb0cac |
do_video_decoding |
51133a7d |
fi
|
e629ab68 |
if [ -n "$do_huffyuv" ] ; then |
2728fd90 |
do_video_encoding huffyuv.avi "-an -vcodec huffyuv -pix_fmt yuv422p -sws_flags neighbor+bitexact" |
3e3c638e |
do_video_decoding "" "-strict -2 -pix_fmt yuv420p -sws_flags neighbor+bitexact" |
e629ab68 |
fi
|
1dbb6d90 |
if [ -n "$do_rc" ] ; then |
2728fd90 |
do_video_encoding mpeg4-rc.avi "-b 400k -bf 2 -an -vcodec mpeg4" |
aeeb0cac |
do_video_decoding |
1dbb6d90 |
fi
if [ -n "$do_mpeg4adv" ] ; then |
2728fd90 |
do_video_encoding mpeg4-adv.avi "-qscale 9 -flags +mv4+part+aic -trellis 1 -mbd bits -ps 200 -an -vcodec mpeg4" |
1de61a18 |
do_video_decoding |
2d1e5071 |
|
2728fd90 |
do_video_encoding mpeg4-qprd.avi "-b 450k -bf 2 -trellis 1 -flags +mv4+qprd+mv0 -cmp 2 -subcmp 2 -mbd rd -an -vcodec mpeg4" |
2d1e5071 |
do_video_decoding
|
2728fd90 |
do_video_encoding mpeg4-adap.avi "-b 550k -bf 2 -flags +mv4+mv0 -trellis 1 -cmp 1 -subcmp 2 -mbd rd -scplx_mask 0.3 -an -vcodec mpeg4" |
2d1e5071 |
do_video_decoding |
1dbb6d90 |
|
2728fd90 |
do_video_encoding mpeg4-Q.avi "-qscale 7 -flags +mv4+qpel -mbd 2 -bf 2 -cmp 1 -subcmp 2 -an -vcodec mpeg4" |
1de61a18 |
do_video_decoding |
aab9cdcf |
fi
|
45ddd8b0 |
if [ -n "$do_mpeg4thread" ] ; then |
2728fd90 |
do_video_encoding mpeg4-thread.avi "-b 500k -flags +mv4+part+aic -trellis 1 -mbd bits -ps 200 -bf 2 -an -vcodec mpeg4 -threads 2" |
1de61a18 |
do_video_decoding |
9c3d33d6 |
fi
|
7ebfc0ea |
if [ -n "$do_error" ] ; then |
2728fd90 |
do_video_encoding error-mpeg4-adv.avi "-qscale 7 -flags +mv4+part+aic -mbd rd -ps 250 -error 10 -an -vcodec mpeg4" |
1de61a18 |
do_video_decoding |
7ebfc0ea |
fi
|
be408b67 |
if [ -n "$do_mpeg4nr" ] ; then |
2728fd90 |
do_video_encoding mpeg4-nr.avi "-qscale 8 -flags +mv4 -mbd rd -nr 200 -an -vcodec mpeg4" |
1de61a18 |
do_video_decoding |
be408b67 |
fi
|
cfadadec |
if [ -n "$do_mpeg1b" ] ; then |
2728fd90 |
do_video_encoding mpeg1b.mpg "-qscale 8 -bf 3 -ps 200 -an -vcodec mpeg1video -f mpeg1video" |
1de61a18 |
do_video_decoding |
cfadadec |
fi
|
51133a7d |
if [ -n "$do_mjpeg" ] ; then |
2728fd90 |
do_video_encoding mjpeg.avi "-qscale 9 -an -vcodec mjpeg -pix_fmt yuvj420p" |
5e5ac8e0 |
do_video_decoding "" "-pix_fmt yuv420p" |
51133a7d |
fi
|
3b37408b |
if [ -n "$do_ljpeg" ] ; then |
2728fd90 |
do_video_encoding ljpeg.avi "-an -vcodec ljpeg -strict -1" |
1de61a18 |
do_video_decoding |
3b37408b |
fi
|
b4e021e8 |
if [ -n "$do_jpegls" ] ; then |
2728fd90 |
do_video_encoding jpegls.avi "-an -vcodec jpegls -vtag MJPG -sws_flags neighbor+full_chroma_int+accurate_rnd+bitexact" |
3e3c638e |
do_video_decoding "" "-pix_fmt yuv420p -sws_flags area+bitexact" |
b4e021e8 |
fi
|
51133a7d |
if [ -n "$do_rv10" ] ; then |
2728fd90 |
do_video_encoding rv10.rm "-qscale 10 -an" |
1de61a18 |
do_video_decoding |
51133a7d |
fi
|
c50cd09d |
if [ -n "$do_rv20" ] ; then |
2728fd90 |
do_video_encoding rv20.rm "-qscale 10 -vcodec rv20 -an" |
1de61a18 |
do_video_decoding |
c50cd09d |
fi
|
9ca9fce1 |
if [ -n "$do_asv1" ] ; then |
2728fd90 |
do_video_encoding asv1.avi "-qscale 10 -an -vcodec asv1" |
1de61a18 |
do_video_decoding |
9ca9fce1 |
fi
|
8d876a43 |
if [ -n "$do_asv2" ] ; then |
2728fd90 |
do_video_encoding asv2.avi "-qscale 10 -an -vcodec asv2" |
1de61a18 |
do_video_decoding |
8d876a43 |
fi
|
bbdd42d3 |
if [ -n "$do_flv" ] ; then |
2728fd90 |
do_video_encoding flv.flv "-qscale 10 -an -vcodec flv" |
1de61a18 |
do_video_decoding |
bbdd42d3 |
fi
|
f3203047 |
if [ -n "$do_ffv1" ] ; then |
2728fd90 |
do_video_encoding ffv1.avi "-strict -2 -an -vcodec ffv1" |
1de61a18 |
do_video_decoding |
d13eef3d |
fi
if [ -n "$do_snow" ] ; then |
2728fd90 |
do_video_encoding snow.avi "-strict -2 -an -vcodec snow -qscale 2 -flags +qpel -me_method iter -dia_size 2 -cmp 12 -subcmp 12 -s 128x64" |
5e5ac8e0 |
do_video_decoding "" "-s 352x288" |
e03c822a |
fi |
d13eef3d |
|
e03c822a |
if [ -n "$do_snowll" ] ; then |
2728fd90 |
do_video_encoding snow53.avi "-strict -2 -an -vcodec snow -qscale .001 -pred 1 -flags +mv4+qpel" |
1de61a18 |
do_video_decoding |
f3203047 |
fi
|
8fce2707 |
if [ -n "$do_dv" ] ; then |
2728fd90 |
do_video_encoding dv.dv "-dct int -s pal -an" |
5e5ac8e0 |
do_video_decoding "" "-s cif" |
77c3fb90 |
|
2728fd90 |
do_video_encoding dv411.dv "-dct int -s pal -an -pix_fmt yuv411p -sws_flags area+accurate_rnd+bitexact" |
3e3c638e |
do_video_decoding "" "-s cif -sws_flags area+accurate_rnd+bitexact" |
8fce2707 |
fi
|
0b297700 |
if [ -n "$do_dv50" ] ; then |
2728fd90 |
do_video_encoding dv50.dv "-dct int -s pal -pix_fmt yuv422p -an -sws_flags neighbor+bitexact" |
3e3c638e |
do_video_decoding "" "-s cif -pix_fmt yuv420p -sws_flags neighbor+bitexact" |
0b297700 |
fi
|
96fdb624 |
if [ -n "$do_dnxhd_1080i" ] ; then |
60820866 |
# FIXME: interlaced raw DNxHD decoding is broken |
2728fd90 |
do_video_encoding dnxhd-1080i.mov "-vcodec dnxhd -flags +ildct -s hd1080 -b 120M -pix_fmt yuv422p -vframes 5 -an" |
7cbc2e60 |
do_video_decoding "" "-s cif -pix_fmt yuv420p" |
96fdb624 |
fi |
60820866 |
|
96fdb624 |
if [ -n "$do_dnxhd_720p" ] ; then |
2728fd90 |
do_video_encoding dnxhd-720p.dnxhd "-s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an" |
7cbc2e60 |
do_video_decoding "" "-s cif -pix_fmt yuv420p" |
96fdb624 |
fi |
3fdd8276 |
|
96fdb624 |
if [ -n "$do_dnxhd_720p_rd" ] ; then |
2728fd90 |
do_video_encoding dnxhd-720p-rd.dnxhd "-threads 4 -mbd rd -s hd720 -b 90M -pix_fmt yuv422p -vframes 5 -an" |
7cbc2e60 |
do_video_decoding "" "-s cif -pix_fmt yuv420p" |
a5083f66 |
fi
|
b86bd1f1 |
if [ -n "$do_svq1" ] ; then |
2728fd90 |
do_video_encoding svq1.mov "-an -vcodec svq1 -qscale 3 -pix_fmt yuv410p" |
5e5ac8e0 |
do_video_decoding "" "-pix_fmt yuv420p" |
b86bd1f1 |
fi
|
d2f8f410 |
if [ -n "$do_flashsv" ] ; then |
2728fd90 |
do_video_encoding flashsv.flv "-an -vcodec flashsv -sws_flags neighbor+full_chroma_int+accurate_rnd+bitexact" |
3e3c638e |
do_video_decoding "" "-pix_fmt yuv420p -sws_flags area+accurate_rnd+bitexact" |
d2f8f410 |
fi
|
500bf397 |
if [ -n "$do_flashsv2" ] ; then |
6841c8c5 |
do_video_encoding flashsv2.flv "-an -vcodec flashsv2 -sws_flags neighbor+full_chroma_int+accurate_rnd+bitexact -strict experimental" |
500bf397 |
#do_video_decoding "" "-pix_fmt yuv420p -sws_flags area+accurate_rnd+bitexact"
fi
|
ae5e8caa |
if [ -n "$do_roq" ] ; then |
2728fd90 |
do_video_encoding roqav.roq "-vframes 5" |
ae5e8caa |
do_video_decoding "" "-pix_fmt yuv420p"
fi
|
82c76cee |
if [ -n "$do_qtrle" ] ; then |
2728fd90 |
do_video_encoding qtrle.mov "-an -vcodec qtrle" |
31df5cb6 |
do_video_decoding "" "-pix_fmt yuv420p" |
82c76cee |
fi |
83630f79 |
if [ -n "$do_qtrlegray" ] ; then
do_video_encoding qtrlegray.mov "-an -vcodec qtrle -pix_fmt gray"
do_video_decoding "" "-pix_fmt yuv420p"
fi |
82c76cee |
|
59b847d3 |
if [ -n "$do_rgb" ] ; then |
2728fd90 |
do_video_encoding rgb.avi "-an -vcodec rawvideo -pix_fmt bgr24" |
59b847d3 |
do_video_decoding "" "-pix_fmt yuv420p"
fi
if [ -n "$do_yuv" ] ; then |
2728fd90 |
do_video_encoding yuv.avi "-an -vcodec rawvideo -pix_fmt yuv420p" |
59b847d3 |
do_video_decoding "" "-pix_fmt yuv420p"
fi
|
51133a7d |
if [ -n "$do_mp2" ] ; then |
2728fd90 |
do_audio_encoding mp2.mp2 |
fb132953 |
do_audio_decoding |
976709ee |
$tiny_psnr $pcm_dst $pcm_ref 2 1924 >> $logfile |
51133a7d |
fi
|
6fd96d1a |
if [ -n "$do_ac3_fixed" ] ; then |
2728fd90 |
do_audio_encoding ac3.rm "-vn -acodec ac3_fixed" |
f77dddfc |
# binaries configured with --disable-sse decode ac3 differently |
ede935a1 |
#do_audio_decoding
#$tiny_psnr $pcm_dst $pcm_ref 2 1024 >> $logfile |
51133a7d |
fi
|
311be1fb |
if [ -n "$do_g726" ] ; then |
2728fd90 |
do_audio_encoding g726.wav "-ab 32k -ac 1 -ar 8000 -acodec g726" |
fb132953 |
do_audio_decoding |
311be1fb |
fi
|
f02ab814 |
if [ -n "$do_adpcm_ima_wav" ] ; then |
2728fd90 |
do_audio_encoding adpcm_ima.wav "-acodec adpcm_ima_wav" |
fb132953 |
do_audio_decoding |
f02ab814 |
fi
|
9dc92a38 |
if [ -n "$do_adpcm_ima_qt" ] ; then |
2728fd90 |
do_audio_encoding adpcm_qt.aiff "-acodec adpcm_ima_qt" |
9dc92a38 |
do_audio_decoding
fi
|
f02ab814 |
if [ -n "$do_adpcm_ms" ] ; then |
2728fd90 |
do_audio_encoding adpcm_ms.wav "-acodec adpcm_ms" |
fb132953 |
do_audio_decoding |
f02ab814 |
fi
|
d8cbeba1 |
if [ -n "$do_adpcm_yam" ] ; then |
2728fd90 |
do_audio_encoding adpcm_yam.wav "-acodec adpcm_yamaha" |
fb132953 |
do_audio_decoding |
d8cbeba1 |
fi
|
b529ab37 |
if [ -n "$do_adpcm_swf" ] ; then |
2728fd90 |
do_audio_encoding adpcm_swf.flv "-acodec adpcm_swf" |
b529ab37 |
do_audio_decoding
fi
|
9797ce58 |
if [ -n "$do_alac" ] ; then |
2728fd90 |
do_audio_encoding alac.m4a "-acodec alac -compression_level 1" |
9797ce58 |
do_audio_decoding
fi
|
aeb2904e |
if [ -n "$do_flac" ] ; then |
2728fd90 |
do_audio_encoding flac.flac "-acodec flac -compression_level 2" |
fb132953 |
do_audio_decoding |
aeb2904e |
fi
|
4b294c18 |
if [ -n "$do_wmav1" ] ; then |
2728fd90 |
do_audio_encoding wmav1.asf "-acodec wmav1" |
ecfc5e0b |
do_ffmpeg_nomd5 $pcm_dst $DEC_OPTS -i $target_path/$file -f wav |
6d3d8dae |
$tiny_psnr $pcm_dst $pcm_ref 2 8192 >> $logfile |
4b294c18 |
fi
if [ -n "$do_wmav2" ] ; then |
2728fd90 |
do_audio_encoding wmav2.asf "-acodec wmav2" |
ecfc5e0b |
do_ffmpeg_nomd5 $pcm_dst $DEC_OPTS -i $target_path/$file -f wav |
6d3d8dae |
$tiny_psnr $pcm_dst $pcm_ref 2 8192 >> $logfile
fi
|
0786943a |
#if [ -n "$do_vorbis" ] ; then |
3160138f |
# vorbis |
90b5b51e |
#disabled because it is broken |
2728fd90 |
#do_audio_encoding vorbis.asf "-acodec vorbis" |
0786943a |
#do_audio_decoding
#fi |
6d3d8dae |
|
4f5c72e8 |
do_audio_enc_dec() { |
2728fd90 |
do_audio_encoding $3.$1 "$4 -sample_fmt $2 -acodec $3" |
4f5c72e8 |
do_audio_decoding
}
if [ -n "$do_pcm" ] ; then
do_audio_enc_dec wav s16 pcm_alaw
do_audio_enc_dec wav s16 pcm_mulaw |
5e8ecfde |
do_audio_enc_dec mov u8 pcm_s8
do_audio_enc_dec wav u8 pcm_u8 |
4f5c72e8 |
do_audio_enc_dec mov s16 pcm_s16be
do_audio_enc_dec wav s16 pcm_s16le |
38511b9a |
do_audio_enc_dec mkv s16 pcm_s16be
do_audio_enc_dec mkv s16 pcm_s16le |
5e8ecfde |
do_audio_enc_dec mov s32 pcm_s24be
do_audio_enc_dec wav s32 pcm_s24le
#do_audio_enc_dec ??? s32 pcm_u24be #no compatible muxer or demuxer
#do_audio_enc_dec ??? s32 pcm_u24le #no compatible muxer or demuxer
do_audio_enc_dec mov s32 pcm_s32be
do_audio_enc_dec wav s32 pcm_s32le
#do_audio_enc_dec ??? s32 pcm_u32be #no compatible muxer or demuxer
#do_audio_enc_dec ??? s32 pcm_u32le #no compatible muxer or demuxer |
4f5c72e8 |
do_audio_enc_dec au flt pcm_f32be |
6f18fe8c |
do_audio_enc_dec wav flt pcm_f32le
do_audio_enc_dec au dbl pcm_f64be
do_audio_enc_dec wav dbl pcm_f64le |
4f5c72e8 |
do_audio_enc_dec wav s16 pcm_zork
do_audio_enc_dec 302 s16 pcm_s24daud "-ac 6 -ar 96000"
fi |