ffmpeg / tests / regression-funcs.sh @ e211e255
History | View | Annotate | Download (3.02 KB)
1 |
#!/bin/sh |
---|---|
2 |
# |
3 |
# common regression functions for ffmpeg |
4 |
# |
5 |
# |
6 |
|
7 |
test="${1#regtest-}" |
8 |
test_ref=$2 |
9 |
raw_src_dir=$3 |
10 |
target_exec=$4 |
11 |
target_path=$5 |
12 |
|
13 |
datadir="./tests/data" |
14 |
target_datadir="${target_path}/${datadir}" |
15 |
|
16 |
this="$test.$test_ref" |
17 |
logdir="$datadir/regression/$test_ref" |
18 |
logfile="$logdir/$test" |
19 |
outfile="$datadir/$test_ref/" |
20 |
errfile="$datadir/$this.err" |
21 |
|
22 |
# various files |
23 |
ffmpeg="$target_exec ${target_path}/ffmpeg" |
24 |
tiny_psnr="tests/tiny_psnr" |
25 |
benchfile="$datadir/$this.bench" |
26 |
bench="$datadir/$this.bench.tmp" |
27 |
bench2="$datadir/$this.bench2.tmp" |
28 |
raw_src="${target_path}/$raw_src_dir/%02d.pgm" |
29 |
raw_dst="$datadir/$this.out.yuv" |
30 |
raw_ref="$datadir/$test_ref.ref.yuv" |
31 |
pcm_src="$target_datadir/asynth1.sw" |
32 |
pcm_dst="$datadir/$this.out.wav" |
33 |
pcm_ref="$datadir/$test_ref.ref.wav" |
34 |
crcfile="$datadir/$this.crc" |
35 |
target_crcfile="$target_datadir/$this.crc" |
36 |
|
37 |
cleanfiles="$raw_dst $pcm_dst $crcfile $bench $bench2" |
38 |
trap 'rm -f -- $cleanfiles' EXIT |
39 |
|
40 |
mkdir -p "$datadir" |
41 |
mkdir -p "$outfile" |
42 |
mkdir -p "$logdir" |
43 |
|
44 |
(exec >&3) 2>/dev/null || exec 3>&2 |
45 |
|
46 |
[ "${V-0}" -gt 0 ] && echov=echov || echov=: |
47 |
[ "${V-0}" -gt 1 ] || exec 2>$errfile |
48 |
|
49 |
echov(){ |
50 |
echo "$@" >&3 |
51 |
} |
52 |
|
53 |
. $(dirname $0)/md5.sh |
54 |
|
55 |
FFMPEG_OPTS="-v 0 -y -flags +bitexact -dct fastint -idct simple -sws_flags +accurate_rnd+bitexact" |
56 |
|
57 |
run_ffmpeg() |
58 |
{ |
59 |
$echov $ffmpeg $FFMPEG_OPTS $* |
60 |
$ffmpeg $FFMPEG_OPTS $* |
61 |
} |
62 |
|
63 |
do_ffmpeg() |
64 |
{ |
65 |
f="$1" |
66 |
shift |
67 |
set -- $* ${target_path}/$f |
68 |
$echov $ffmpeg $FFMPEG_OPTS $* |
69 |
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench |
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 |
78 |
expr "$(cat $bench)" : '.*utime=\(.*s\)' > $bench2 |
79 |
echo $(cat $bench2) $f >> $benchfile |
80 |
} |
81 |
|
82 |
do_ffmpeg_nomd5() |
83 |
{ |
84 |
f="$1" |
85 |
shift |
86 |
set -- $* ${target_path}/$f |
87 |
$echov $ffmpeg $FFMPEG_OPTS $* |
88 |
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench |
89 |
if [ $f = $raw_dst ] ; then |
90 |
$tiny_psnr $f $raw_ref >> $logfile |
91 |
elif [ $f = $pcm_dst ] ; then |
92 |
$tiny_psnr $f $pcm_ref 2 >> $logfile |
93 |
else |
94 |
wc -c $f >> $logfile |
95 |
fi |
96 |
expr "$(cat $bench)" : '.*utime=\(.*s\)' > $bench2 |
97 |
echo $(cat $bench2) $f >> $benchfile |
98 |
} |
99 |
|
100 |
do_ffmpeg_crc() |
101 |
{ |
102 |
f="$1" |
103 |
shift |
104 |
$echov $ffmpeg $FFMPEG_OPTS $* -f crc "$target_crcfile" |
105 |
$ffmpeg $FFMPEG_OPTS $* -f crc "$target_crcfile" |
106 |
echo "$f $(cat $crcfile)" >> $logfile |
107 |
} |
108 |
|
109 |
do_ffmpeg_nocheck() |
110 |
{ |
111 |
f="$1" |
112 |
shift |
113 |
$echov $ffmpeg $FFMPEG_OPTS $* |
114 |
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench |
115 |
expr "$(cat $bench)" : '.*utime=\(.*s\)' > $bench2 |
116 |
echo $(cat $bench2) $f >> $benchfile |
117 |
} |
118 |
|
119 |
do_video_decoding() |
120 |
{ |
121 |
do_ffmpeg $raw_dst $1 -i $target_path/$file -f rawvideo $2 |
122 |
} |
123 |
|
124 |
do_video_encoding() |
125 |
{ |
126 |
file=${outfile}$1 |
127 |
do_ffmpeg $file $2 -f image2 -vcodec pgmyuv -i $raw_src $3 |
128 |
} |
129 |
|
130 |
do_audio_encoding() |
131 |
{ |
132 |
file=${outfile}$1 |
133 |
do_ffmpeg $file -ab 128k -ac 2 -f s16le -i $pcm_src $3 |
134 |
} |
135 |
|
136 |
do_audio_decoding() |
137 |
{ |
138 |
do_ffmpeg $pcm_dst -i $target_path/$file -sample_fmt s16 -f wav |
139 |
} |