fate: do not collect -benchmark output
[libav.git] / tests / regression-funcs.sh
CommitLineData
f94e56cf
SS
1#!/bin/sh
2#
3# common regression functions for ffmpeg
4#
5#
6
7test="${1#regtest-}"
8test_ref=$2
9raw_src_dir=$3
801b571e
MR
10target_exec=$4
11target_path=$5
7851eb68 12threads=${6:-1}
f94e56cf
SS
13
14datadir="./tests/data"
15target_datadir="${target_path}/${datadir}"
16
17this="$test.$test_ref"
f955d452
MR
18logdir="$datadir/regression/$test_ref"
19logfile="$logdir/$test"
cc3e2472 20outfile="$datadir/$test_ref/"
16cd99bb 21errfile="$datadir/$this.err"
f94e56cf
SS
22
23# various files
43cfefaf 24ffmpeg="$target_exec ${target_path}/ffmpeg"
f94e56cf 25tiny_psnr="tests/tiny_psnr"
f94e56cf
SS
26raw_src="${target_path}/$raw_src_dir/%02d.pgm"
27raw_dst="$datadir/$this.out.yuv"
28raw_ref="$datadir/$test_ref.ref.yuv"
29pcm_src="$target_datadir/asynth1.sw"
30pcm_dst="$datadir/$this.out.wav"
31pcm_ref="$datadir/$test_ref.ref.wav"
32crcfile="$datadir/$this.crc"
33target_crcfile="$target_datadir/$this.crc"
34
d4a7df42 35cleanfiles="$raw_dst $pcm_dst $crcfile"
a4e6fa86
MR
36trap 'rm -f -- $cleanfiles' EXIT
37
c676895f 38mkdir -p "$datadir"
cc3e2472 39mkdir -p "$outfile"
f955d452 40mkdir -p "$logdir"
c676895f 41
c4795e80
MR
42(exec >&3) 2>/dev/null || exec 3>&2
43
44[ "${V-0}" -gt 0 ] && echov=echov || echov=:
16cd99bb
MR
45[ "${V-0}" -gt 1 ] || exec 2>$errfile
46
c4795e80
MR
47echov(){
48 echo "$@" >&3
49}
50
fc8cb398 51. $(dirname $0)/md5.sh
f94e56cf 52
eeadaa6b
MR
53FFMPEG_OPTS="-v 0 -y"
54COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact"
55DEC_OPTS="$COMMON_OPTS -threads $threads"
56ENC_OPTS="$COMMON_OPTS -dct fastint"
f94e56cf 57
f4b1e21a
MR
58run_ffmpeg()
59{
60 $echov $ffmpeg $FFMPEG_OPTS $*
61 $ffmpeg $FFMPEG_OPTS $*
62}
63
f94e56cf
SS
64do_ffmpeg()
65{
66 f="$1"
67 shift
68 set -- $* ${target_path}/$f
d4a7df42 69 run_ffmpeg $*
f94e56cf
SS
70 do_md5sum $f >> $logfile
71 if [ $f = $raw_dst ] ; then
72 $tiny_psnr $f $raw_ref >> $logfile
73 elif [ $f = $pcm_dst ] ; then
74 $tiny_psnr $f $pcm_ref 2 >> $logfile
75 else
76 wc -c $f >> $logfile
77 fi
f94e56cf
SS
78}
79
80do_ffmpeg_nomd5()
81{
82 f="$1"
83 shift
84 set -- $* ${target_path}/$f
d4a7df42 85 run_ffmpeg $*
f94e56cf
SS
86 if [ $f = $raw_dst ] ; then
87 $tiny_psnr $f $raw_ref >> $logfile
88 elif [ $f = $pcm_dst ] ; then
89 $tiny_psnr $f $pcm_ref 2 >> $logfile
90 else
91 wc -c $f >> $logfile
92 fi
f94e56cf
SS
93}
94
95do_ffmpeg_crc()
96{
97 f="$1"
98 shift
a96c176a 99 run_ffmpeg $* -f crc "$target_crcfile"
3d147064 100 echo "$f $(cat $crcfile)" >> $logfile
f94e56cf
SS
101}
102
103do_ffmpeg_nocheck()
104{
105 f="$1"
106 shift
d4a7df42 107 run_ffmpeg $*
f94e56cf
SS
108}
109
110do_video_decoding()
111{
eeadaa6b 112 do_ffmpeg $raw_dst $DEC_OPTS $1 -i $target_path/$file -f rawvideo $ENC_OPTS $2
f94e56cf
SS
113}
114
115do_video_encoding()
116{
117 file=${outfile}$1
eeadaa6b 118 do_ffmpeg $file $DEC_OPTS -f image2 -vcodec pgmyuv -i $raw_src $ENC_OPTS $2
f94e56cf
SS
119}
120
121do_audio_encoding()
122{
123 file=${outfile}$1
eeadaa6b 124 do_ffmpeg $file $DEC_OPTS -ac 2 -f s16le -i $pcm_src -ab 128k $ENC_OPTS $2
f94e56cf
SS
125}
126
127do_audio_decoding()
128{
eeadaa6b 129 do_ffmpeg $pcm_dst $DEC_OPTS -i $target_path/$file -sample_fmt s16 -f wav
f94e56cf 130}