Commit | Line | Data |
---|---|---|
51133a7d FB |
1 | #!/bin/sh |
2 | # | |
3 | # automatic regression test for ffmpeg | |
4 | # | |
5 | # | |
6 | #set -x | |
6e023978 | 7 | # Even in the 21st century some diffs are not supporting -u. |
281a74da | 8 | diff -u "$0" "$0" > /dev/null 2>&1 |
6e023978 RS |
9 | if [ $? -eq 0 ]; then |
10 | diff_cmd="diff -u" | |
11 | else | |
12 | diff_cmd="diff" | |
13 | fi | |
14 | ||
281a74da | 15 | diff -w "$0" "$0" > /dev/null 2>&1 |
d9d7653e MN |
16 | if [ $? -eq 0 ]; then |
17 | diff_cmd="$diff_cmd -w" | |
18 | fi | |
19 | ||
51133a7d FB |
20 | set -e |
21 | ||
5bcfd1ad FB |
22 | datadir="./data" |
23 | ||
24 | logfile="$datadir/ffmpeg.regression" | |
a12eea30 | 25 | outfile="$datadir/a-" |
89d5dfd5 | 26 | |
51133a7d FB |
27 | # tests to do |
28 | if [ "$1" = "mpeg4" ] ; then | |
29 | do_mpeg4=y | |
30 | elif [ "$1" = "mpeg" ] ; then | |
31 | do_mpeg=y | |
853d659d | 32 | do_mpeg2=y |
7481e919 FB |
33 | elif [ "$1" = "ac3" ] ; then |
34 | do_ac3=y | |
87c5fbc3 MN |
35 | elif [ "$1" = "huffyuv" ] ; then |
36 | do_huffyuv=y | |
7f8038ce MN |
37 | elif [ "$1" = "mpeg2thread" ] ; then |
38 | do_mpeg2thread=y | |
d13eef3d MN |
39 | elif [ "$1" = "snow" ] ; then |
40 | do_snow=y | |
e03c822a MN |
41 | elif [ "$1" = "snowll" ] ; then |
42 | do_snowll=y | |
89d5dfd5 FB |
43 | elif [ "$1" = "libavtest" ] ; then |
44 | do_libav=y | |
5bcfd1ad | 45 | logfile="$datadir/libav.regression" |
a12eea30 | 46 | outfile="$datadir/b-" |
51133a7d FB |
47 | else |
48 | do_mpeg=y | |
922bc38d | 49 | do_mpeg2=y |
9c3d33d6 | 50 | do_mpeg2thread=y |
6ebd933b | 51 | do_msmpeg4v2=y |
51133a7d | 52 | do_msmpeg4=y |
6ebd933b | 53 | do_wmv1=y |
e23d5712 | 54 | do_wmv2=y |
61b262a9 | 55 | do_h261=y |
51133a7d | 56 | do_h263=y |
6e2d5f1a | 57 | do_h263p=y |
51133a7d | 58 | do_mpeg4=y |
dcfdb046 | 59 | do_mp4psp=y |
e23d5712 | 60 | do_huffyuv=y |
51133a7d | 61 | do_mjpeg=y |
3b37408b | 62 | do_ljpeg=y |
b4e021e8 | 63 | do_jpegls=y |
64a7a8af | 64 | do_rv10=y |
c50cd09d | 65 | do_rv20=y |
51133a7d FB |
66 | do_mp2=y |
67 | do_ac3=y | |
311be1fb | 68 | do_g726=y |
f02ab814 MN |
69 | do_adpcm_ima_wav=y |
70 | do_adpcm_ms=y | |
aeb2904e | 71 | do_flac=y |
1dbb6d90 MN |
72 | do_rc=y |
73 | do_mpeg4adv=y | |
9c3d33d6 | 74 | do_mpeg4thread=y |
be408b67 | 75 | do_mpeg4nr=y |
cfadadec | 76 | do_mpeg1b=y |
9ca9fce1 | 77 | do_asv1=y |
8d876a43 | 78 | do_asv2=y |
bbdd42d3 | 79 | do_flv=y |
f3203047 | 80 | do_ffv1=y |
7ebfc0ea | 81 | do_error=y |
b86bd1f1 | 82 | do_svq1=y |
d13eef3d | 83 | do_snow=y |
e03c822a | 84 | do_snowll=y |
d8cbeba1 | 85 | do_adpcm_yam=y |
8fce2707 | 86 | do_dv=y |
0b297700 | 87 | do_dv50=y |
51133a7d FB |
88 | fi |
89 | ||
90 | ||
91 | # various files | |
3aca208a | 92 | ffmpeg="../ffmpeg_g" |
67cbe681 | 93 | tiny_psnr="./tiny_psnr" |
51133a7d | 94 | reffile="$2" |
5bcfd1ad | 95 | benchfile="$datadir/ffmpeg.bench" |
528bbdde | 96 | raw_src="$3/%02d.pgm" |
5bcfd1ad | 97 | raw_dst="$datadir/out.yuv" |
67cbe681 | 98 | raw_ref="$datadir/ref.yuv" |
51133a7d | 99 | pcm_src="asynth1.sw" |
5bcfd1ad | 100 | pcm_dst="$datadir/out.wav" |
16dd93ab | 101 | pcm_ref="$datadir/ref.wav" |
853d659d JD |
102 | if [ X"`echo | md5sum 2> /dev/null`" != X ]; then |
103 | do_md5sum() { md5sum -b $1; } | |
104 | elif [ -x /sbin/md5 ]; then | |
105 | do_md5sum() { /sbin/md5 -r $1 | sed 's# \**\./# *./#'; } | |
106 | else | |
107 | do_md5sum() { echo No md5sum program found; } | |
108 | fi | |
5bcfd1ad FB |
109 | |
110 | # create the data directory if it does not exists | |
111 | mkdir -p $datadir | |
51133a7d | 112 | |
bcea9605 DB |
113 | FFMPEG_OPTS="-y -flags +bitexact -dct fastint -idct simple" |
114 | ||
3f027ca7 | 115 | do_ffmpeg() |
51133a7d FB |
116 | { |
117 | f="$1" | |
118 | shift | |
bcea9605 DB |
119 | echo $ffmpeg $FFMPEG_OPTS $* |
120 | $ffmpeg $FFMPEG_OPTS -benchmark $* > $datadir/bench.tmp 2> /tmp/ffmpeg$$ | |
37a00782 | 121 | egrep -v "^(Stream|Press|Input|Output|frame| Stream| Duration|video:)" /tmp/ffmpeg$$ || true |
e31c1c30 | 122 | rm -f /tmp/ffmpeg$$ |
853d659d | 123 | do_md5sum $f >> $logfile |
67cbe681 MN |
124 | if [ $f = $raw_dst ] ; then |
125 | $tiny_psnr $f $raw_ref >> $logfile | |
16dd93ab | 126 | elif [ $f = $pcm_dst ] ; then |
976709ee | 127 | $tiny_psnr $f $pcm_ref 2 >> $logfile |
039e7889 MN |
128 | else |
129 | wc -c $f >> $logfile | |
67cbe681 | 130 | fi |
90cee0c3 | 131 | expr "`cat $datadir/bench.tmp`" : '.*utime=\(.*s\)' > $datadir/bench2.tmp |
5bcfd1ad | 132 | echo `cat $datadir/bench2.tmp` $f >> $benchfile |
51133a7d FB |
133 | } |
134 | ||
3f027ca7 | 135 | do_ffmpeg_crc() |
89d5dfd5 FB |
136 | { |
137 | f="$1" | |
138 | shift | |
bcea9605 DB |
139 | echo $ffmpeg $FFMPEG_OPTS $* -f crc $datadir/ffmpeg.crc |
140 | $ffmpeg $FFMPEG_OPTS $* -f crc $datadir/ffmpeg.crc > /tmp/ffmpeg$$ 2>&1 | |
37a00782 | 141 | egrep -v "^(Stream|Press|Input|Output|frame| Stream| Duration|video:|ffmpeg version| configuration| built)" /tmp/ffmpeg$$ || true |
115329f1 | 142 | rm -f /tmp/ffmpeg$$ |
affd55a1 | 143 | echo "$f `cat $datadir/ffmpeg.crc`" >> $logfile |
89d5dfd5 | 144 | } |
51133a7d | 145 | |
67cbe681 MN |
146 | do_ffmpeg_nocheck() |
147 | { | |
148 | f="$1" | |
149 | shift | |
bcea9605 DB |
150 | echo $ffmpeg $FFMPEG_OPTS $* |
151 | $ffmpeg $FFMPEG_OPTS -benchmark $* > $datadir/bench.tmp 2> /tmp/ffmpeg$$ | |
37a00782 | 152 | egrep -v "^(Stream|Press|Input|Output|frame| Stream| Duration|video:)" /tmp/ffmpeg$$ || true |
affd55a1 | 153 | rm -f /tmp/ffmpeg$$ |
67cbe681 MN |
154 | expr "`cat $datadir/bench.tmp`" : '.*utime=\(.*s\)' > $datadir/bench2.tmp |
155 | echo `cat $datadir/bench2.tmp` $f >> $benchfile | |
156 | } | |
157 | ||
1de61a18 DB |
158 | do_video_decoding() |
159 | { | |
160 | do_ffmpeg $raw_dst -y -i $file -f rawvideo $@ $raw_dst | |
161 | } | |
162 | ||
163 | do_video_encoding() | |
164 | { | |
165 | do_ffmpeg $file -y $1 -f pgmyuv -i $raw_src $2 $file | |
166 | } | |
167 | ||
d449d1bc DB |
168 | do_streamed_images() |
169 | { | |
170 | file=${outfile}libav.$1 | |
171 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f image2pipe $file | |
172 | do_ffmpeg_crc $file -f image2pipe -i $file | |
173 | } | |
174 | ||
e587a0a5 DB |
175 | do_audio_only() |
176 | { | |
177 | file=${outfile}libav.$1 | |
178 | do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file | |
179 | do_ffmpeg_crc $file -i $file | |
180 | } | |
181 | ||
51133a7d FB |
182 | echo "ffmpeg regression test" > $logfile |
183 | echo "ffmpeg benchmarks" > $benchfile | |
184 | ||
185 | ################################### | |
67cbe681 MN |
186 | # generate reference for quality check |
187 | do_ffmpeg_nocheck $raw_ref -y -f pgmyuv -i $raw_src -an -f rawvideo $raw_ref | |
16dd93ab | 188 | do_ffmpeg_nocheck $pcm_ref -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -f wav $pcm_ref |
67cbe681 MN |
189 | |
190 | ################################### | |
51133a7d FB |
191 | if [ -n "$do_mpeg" ] ; then |
192 | # mpeg1 encoding | |
193 | file=${outfile}mpeg1.mpg | |
1de61a18 | 194 | do_video_encoding "-qscale 10" "-f mpeg1video" |
51133a7d FB |
195 | |
196 | # mpeg1 decoding | |
1de61a18 | 197 | do_video_decoding |
922bc38d MN |
198 | fi |
199 | ||
200 | ################################### | |
201 | if [ -n "$do_mpeg2" ] ; then | |
202 | # mpeg2 encoding | |
83dddc4a | 203 | file=${outfile}mpeg2.mpg |
1de61a18 | 204 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -f mpeg1video" |
83dddc4a FB |
205 | |
206 | # mpeg2 decoding | |
1de61a18 | 207 | do_video_decoding |
83dddc4a | 208 | |
307eb248 BC |
209 | # mpeg2 encoding using intra vlc |
210 | file=${outfile}mpeg2ivlc.mpg | |
1de61a18 | 211 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -f mpeg1video -flags2 +ivlc" |
307eb248 BC |
212 | |
213 | # mpeg2 decoding | |
1de61a18 | 214 | do_video_decoding |
307eb248 | 215 | |
6486ad57 MN |
216 | # mpeg2 encoding |
217 | file=${outfile}mpeg2.mpg | |
1de61a18 | 218 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -idct int -dct int -f mpeg1video" |
6486ad57 MN |
219 | |
220 | # mpeg2 decoding | |
fac862c6 | 221 | do_ffmpeg $raw_dst -y -idct int -i $file -f rawvideo $raw_dst |
6486ad57 | 222 | |
83dddc4a FB |
223 | # mpeg2 encoding interlaced |
224 | file=${outfile}mpeg2i.mpg | |
1de61a18 | 225 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -f mpeg1video -flags +ildct+ilme" |
51133a7d FB |
226 | |
227 | # mpeg2 decoding | |
1de61a18 | 228 | do_video_decoding |
51133a7d FB |
229 | fi |
230 | ||
231 | ################################### | |
9c3d33d6 MN |
232 | if [ -n "$do_mpeg2thread" ] ; then |
233 | # mpeg2 encoding interlaced | |
234 | file=${outfile}mpeg2thread.mpg | |
1de61a18 | 235 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -threads 2" |
307eb248 BC |
236 | |
237 | # mpeg2 decoding | |
1de61a18 | 238 | do_video_decoding |
307eb248 BC |
239 | |
240 | # mpeg2 encoding interlaced using intra vlc | |
241 | file=${outfile}mpeg2threadivlc.mpg | |
1de61a18 | 242 | do_video_encoding "-qscale 10" "-vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -flags2 +ivlc -threads 2" |
9c3d33d6 MN |
243 | |
244 | # mpeg2 decoding | |
1de61a18 | 245 | do_video_decoding |
7f8038ce MN |
246 | |
247 | # mpeg2 encoding interlaced | |
248 | file=${outfile}mpeg2reuse.mpg | |
115329f1 | 249 | do_ffmpeg $file -y -sameq -me_threshold 256 -mb_threshold 1024 -i ${outfile}mpeg2thread.mpg -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -threads 4 $file |
7f8038ce MN |
250 | |
251 | # mpeg2 decoding | |
1de61a18 | 252 | do_video_decoding |
9c3d33d6 MN |
253 | fi |
254 | ||
255 | ################################### | |
6ebd933b MN |
256 | if [ -n "$do_msmpeg4v2" ] ; then |
257 | # msmpeg4 encoding | |
258 | file=${outfile}msmpeg4v2.avi | |
1de61a18 | 259 | do_video_encoding "-qscale 10" "-an -vcodec msmpeg4v2" |
6ebd933b MN |
260 | |
261 | # msmpeg4v2 decoding | |
1de61a18 | 262 | do_video_decoding |
6ebd933b MN |
263 | fi |
264 | ||
265 | ################################### | |
51133a7d FB |
266 | if [ -n "$do_msmpeg4" ] ; then |
267 | # msmpeg4 encoding | |
268 | file=${outfile}msmpeg4.avi | |
1de61a18 | 269 | do_video_encoding "-qscale 10" "-an -vcodec msmpeg4" |
51133a7d FB |
270 | |
271 | # msmpeg4 decoding | |
1de61a18 | 272 | do_video_decoding |
51133a7d FB |
273 | fi |
274 | ||
275 | ################################### | |
6ebd933b MN |
276 | if [ -n "$do_wmv1" ] ; then |
277 | # wmv1 encoding | |
278 | file=${outfile}wmv1.avi | |
1de61a18 | 279 | do_video_encoding "-qscale 10" "-an -vcodec wmv1" |
6ebd933b MN |
280 | |
281 | # wmv1 decoding | |
1de61a18 | 282 | do_video_decoding |
6ebd933b MN |
283 | fi |
284 | ||
285 | ################################### | |
e23d5712 MN |
286 | if [ -n "$do_wmv2" ] ; then |
287 | # wmv2 encoding | |
288 | file=${outfile}wmv2.avi | |
1de61a18 | 289 | do_video_encoding "-qscale 10" "-an -vcodec wmv2" |
e23d5712 MN |
290 | |
291 | # wmv2 decoding | |
1de61a18 | 292 | do_video_decoding |
e23d5712 MN |
293 | fi |
294 | ||
295 | ################################### | |
61b262a9 MN |
296 | if [ -n "$do_h261" ] ; then |
297 | # h261 encoding | |
298 | file=${outfile}h261.avi | |
1de61a18 | 299 | do_video_encoding "-qscale 11" "-s 352x288 -an -vcodec h261" |
61b262a9 MN |
300 | |
301 | # h261 decoding | |
1de61a18 | 302 | do_video_decoding |
61b262a9 MN |
303 | fi |
304 | ||
305 | ################################### | |
51133a7d FB |
306 | if [ -n "$do_h263" ] ; then |
307 | # h263 encoding | |
308 | file=${outfile}h263.avi | |
1de61a18 | 309 | do_video_encoding "-qscale 10" "-s 352x288 -an -vcodec h263" |
51133a7d | 310 | |
6e2d5f1a | 311 | # h263 decoding |
1de61a18 | 312 | do_video_decoding |
6e2d5f1a MN |
313 | fi |
314 | ||
315 | ################################### | |
316 | if [ -n "$do_h263p" ] ; then | |
317 | # h263p encoding | |
318 | file=${outfile}h263p.avi | |
1de61a18 | 319 | do_video_encoding "-qscale 2 -flags +umv+aiv+aic" "-s 352x288 -an -vcodec h263p -ps 300" |
6e2d5f1a | 320 | |
51133a7d | 321 | # h263p decoding |
1de61a18 | 322 | do_video_decoding |
51133a7d FB |
323 | fi |
324 | ||
325 | ################################### | |
326 | if [ -n "$do_mpeg4" ] ; then | |
327 | # mpeg4 | |
28c70622 | 328 | file=${outfile}odivx.mp4 |
1de61a18 | 329 | do_video_encoding "-flags +mv4 -mbd bits -qscale 10" "-an -vcodec mpeg4" |
51133a7d FB |
330 | |
331 | # mpeg4 decoding | |
1de61a18 | 332 | do_video_decoding |
51133a7d FB |
333 | fi |
334 | ||
335 | ################################### | |
e629ab68 RD |
336 | if [ -n "$do_huffyuv" ] ; then |
337 | # huffyuv | |
338 | file=${outfile}huffyuv.avi | |
1de61a18 | 339 | do_video_encoding "" "-an -vcodec huffyuv -pix_fmt yuv422p" |
e629ab68 RD |
340 | |
341 | # huffyuv decoding | |
1de61a18 | 342 | do_video_decoding -strict -2 -pix_fmt yuv420p |
e629ab68 RD |
343 | fi |
344 | ||
345 | ################################### | |
1dbb6d90 MN |
346 | if [ -n "$do_rc" ] ; then |
347 | # mpeg4 rate control | |
348 | file=${outfile}mpeg4-rc.avi | |
1de61a18 | 349 | do_video_encoding "-b 400k -bf 2" "-an -vcodec mpeg4" |
1dbb6d90 MN |
350 | |
351 | # mpeg4 rate control decoding | |
1de61a18 | 352 | do_video_decoding |
1dbb6d90 MN |
353 | fi |
354 | ||
355 | ################################### | |
356 | if [ -n "$do_mpeg4adv" ] ; then | |
357 | # mpeg4 | |
358 | file=${outfile}mpeg4-adv.avi | |
1de61a18 | 359 | do_video_encoding "-qscale 9 -flags +mv4+part+aic+trell -mbd bits -ps 200" "-an -vcodec mpeg4" |
1dbb6d90 MN |
360 | |
361 | # mpeg4 decoding | |
1de61a18 | 362 | do_video_decoding |
1dbb6d90 MN |
363 | fi |
364 | ||
365 | ################################### | |
9c3d33d6 MN |
366 | if [ -n "$do_mpeg4thread" ] ; then |
367 | # mpeg4 | |
368 | file=${outfile}mpeg4-thread.avi | |
1de61a18 | 369 | do_video_encoding "-b 500k -flags +mv4+part+aic+trell -mbd bits -ps 200 -bf 2" "-an -vcodec mpeg4 -threads 2" |
9c3d33d6 MN |
370 | |
371 | # mpeg4 decoding | |
1de61a18 | 372 | do_video_decoding |
aab9cdcf MN |
373 | fi |
374 | ||
375 | ################################### | |
376 | if [ -n "$do_mpeg4adv" ] ; then | |
377 | # mpeg4 | |
378 | file=${outfile}mpeg4-Q.avi | |
1de61a18 | 379 | do_video_encoding "-qscale 7 -flags +mv4+qpel -mbd 2 -bf 2 -cmp 1 -subcmp 2" "-an -vcodec mpeg4" |
aab9cdcf MN |
380 | |
381 | # mpeg4 decoding | |
1de61a18 | 382 | do_video_decoding |
9c3d33d6 MN |
383 | fi |
384 | ||
385 | ################################### | |
dcfdb046 BL |
386 | if [ -n "$do_mp4psp" ] ; then |
387 | # mp4 PSP style | |
388 | file=${outfile}mpeg4-PSP.mp4 | |
3c0ba870 | 389 | do_ffmpeg $file -y -b 768k -s 320x240 -f psp -ar 24000 -ab 32 -i $raw_src $file |
dcfdb046 BL |
390 | fi |
391 | ||
392 | ################################### | |
7ebfc0ea MN |
393 | if [ -n "$do_error" ] ; then |
394 | # damaged mpeg4 | |
395 | file=${outfile}error-mpeg4-adv.avi | |
1de61a18 | 396 | do_video_encoding "-qscale 7 -flags +mv4+part+aic -mbd rd -ps 250 -error 10" "-an -vcodec mpeg4" |
7ebfc0ea MN |
397 | |
398 | # damaged mpeg4 decoding | |
1de61a18 | 399 | do_video_decoding |
7ebfc0ea MN |
400 | fi |
401 | ||
402 | ################################### | |
be408b67 MN |
403 | if [ -n "$do_mpeg4nr" ] ; then |
404 | # noise reduction | |
9c3d33d6 | 405 | file=${outfile}mpeg4-nr.avi |
1de61a18 | 406 | do_video_encoding "-qscale 8 -flags +mv4 -mbd rd -nr 200" "-an -vcodec mpeg4" |
be408b67 MN |
407 | |
408 | # mpeg4 decoding | |
1de61a18 | 409 | do_video_decoding |
be408b67 MN |
410 | fi |
411 | ||
412 | ################################### | |
cfadadec MN |
413 | if [ -n "$do_mpeg1b" ] ; then |
414 | # mpeg1 | |
415 | file=${outfile}mpeg1b.mpg | |
1de61a18 | 416 | do_video_encoding "-qscale 8 -bf 3 -ps 200" "-an -vcodec mpeg1video -f mpeg1video" |
cfadadec MN |
417 | |
418 | # mpeg1 decoding | |
1de61a18 | 419 | do_video_decoding |
cfadadec MN |
420 | fi |
421 | ||
422 | ################################### | |
51133a7d FB |
423 | if [ -n "$do_mjpeg" ] ; then |
424 | # mjpeg | |
425 | file=${outfile}mjpeg.avi | |
1de61a18 | 426 | do_video_encoding "-qscale 10" "-an -vcodec mjpeg -pix_fmt yuvj420p" |
51133a7d FB |
427 | |
428 | # mjpeg decoding | |
1de61a18 | 429 | do_video_decoding -pix_fmt yuv420p |
51133a7d FB |
430 | fi |
431 | ||
432 | ################################### | |
3b37408b MN |
433 | if [ -n "$do_ljpeg" ] ; then |
434 | # ljpeg | |
435 | file=${outfile}ljpeg.avi | |
1de61a18 | 436 | do_video_encoding "" "-an -vcodec ljpeg -strict -1" |
3b37408b MN |
437 | |
438 | # ljpeg decoding | |
1de61a18 | 439 | do_video_decoding |
3b37408b MN |
440 | fi |
441 | ||
442 | ################################### | |
b4e021e8 MN |
443 | if [ -n "$do_jpegls" ] ; then |
444 | # jpeg ls | |
445 | file=${outfile}jpegls.avi | |
1de61a18 | 446 | do_video_encoding "" "-an -vcodec jpegls -vtag MJPG" |
b4e021e8 MN |
447 | |
448 | # jpeg ls decoding | |
1de61a18 | 449 | do_video_decoding -pix_fmt yuv420p |
b4e021e8 MN |
450 | fi |
451 | ||
452 | ################################### | |
51133a7d FB |
453 | if [ -n "$do_rv10" ] ; then |
454 | # rv10 encoding | |
455 | file=${outfile}rv10.rm | |
1de61a18 | 456 | do_video_encoding "-qscale 10" "-an" |
51133a7d FB |
457 | |
458 | # rv10 decoding | |
1de61a18 | 459 | do_video_decoding |
51133a7d FB |
460 | fi |
461 | ||
462 | ################################### | |
c50cd09d MN |
463 | if [ -n "$do_rv20" ] ; then |
464 | # rv20 encoding | |
465 | file=${outfile}rv20.rm | |
1de61a18 | 466 | do_video_encoding "-qscale 10" "-vcodec rv20 -an" |
c50cd09d MN |
467 | |
468 | # rv20 decoding | |
1de61a18 | 469 | do_video_decoding |
c50cd09d MN |
470 | fi |
471 | ||
472 | ################################### | |
9ca9fce1 MN |
473 | if [ -n "$do_asv1" ] ; then |
474 | # asv1 encoding | |
475 | file=${outfile}asv1.avi | |
1de61a18 | 476 | do_video_encoding "-qscale 10" "-an -vcodec asv1" |
9ca9fce1 MN |
477 | |
478 | # asv1 decoding | |
1de61a18 | 479 | do_video_decoding |
9ca9fce1 MN |
480 | fi |
481 | ||
482 | ################################### | |
8d876a43 MN |
483 | if [ -n "$do_asv2" ] ; then |
484 | # asv2 encoding | |
485 | file=${outfile}asv2.avi | |
1de61a18 | 486 | do_video_encoding "-qscale 10" "-an -vcodec asv2" |
8d876a43 MN |
487 | |
488 | # asv2 decoding | |
1de61a18 | 489 | do_video_decoding |
8d876a43 MN |
490 | fi |
491 | ||
492 | ################################### | |
bbdd42d3 MN |
493 | if [ -n "$do_flv" ] ; then |
494 | # flv encoding | |
495 | file=${outfile}flv.flv | |
1de61a18 | 496 | do_video_encoding "-qscale 10" "-an -vcodec flv" |
bbdd42d3 MN |
497 | |
498 | # flv decoding | |
1de61a18 | 499 | do_video_decoding |
bbdd42d3 MN |
500 | fi |
501 | ||
502 | ################################### | |
f3203047 MN |
503 | if [ -n "$do_ffv1" ] ; then |
504 | # ffv1 encoding | |
505 | file=${outfile}ffv1.avi | |
1de61a18 | 506 | do_video_encoding "-strict -2" "-an -vcodec ffv1" |
f3203047 MN |
507 | |
508 | # ffv1 decoding | |
1de61a18 | 509 | do_video_decoding |
d13eef3d MN |
510 | fi |
511 | ||
512 | ################################### | |
513 | if [ -n "$do_snow" ] ; then | |
514 | # snow encoding | |
515 | file=${outfile}snow.avi | |
1de61a18 | 516 | do_video_encoding "-strict -2" "-an -vcodec snow -qscale 2 -flags +qpel -me iter -dia_size 2 -cmp 12 -subcmp 12 -s 128x64" |
d13eef3d MN |
517 | |
518 | # snow decoding | |
1de61a18 | 519 | do_video_decoding -s 352x288 |
e03c822a | 520 | fi |
d13eef3d | 521 | |
e03c822a MN |
522 | ################################### |
523 | if [ -n "$do_snowll" ] ; then | |
d13eef3d MN |
524 | # snow encoding |
525 | file=${outfile}snow53.avi | |
1de61a18 | 526 | do_video_encoding "-strict -2" "-an -vcodec snow -qscale .001 -pred 1 -flags +mv4+qpel" |
d13eef3d MN |
527 | |
528 | # snow decoding | |
1de61a18 | 529 | do_video_decoding |
f3203047 MN |
530 | fi |
531 | ||
532 | ################################### | |
8fce2707 MN |
533 | if [ -n "$do_dv" ] ; then |
534 | # dv encoding | |
535 | file=${outfile}dv.dv | |
1de61a18 | 536 | do_video_encoding "-dct int" "-s pal -an" |
8fce2707 MN |
537 | |
538 | # dv decoding | |
1de61a18 | 539 | do_video_decoding -s cif |
8fce2707 MN |
540 | fi |
541 | ||
542 | ################################### | |
0b297700 DM |
543 | if [ -n "$do_dv50" ] ; then |
544 | # dv50 encoding | |
545 | file=${outfile}dv.dv | |
1de61a18 | 546 | do_video_encoding "-dct int" "-s pal -pix_fmt yuv422p -an" |
0b297700 DM |
547 | |
548 | # dv50 decoding | |
1de61a18 | 549 | do_video_decoding -s cif -pix_fmt yuv420p |
0b297700 DM |
550 | fi |
551 | ||
552 | ||
553 | ################################### | |
b86bd1f1 MN |
554 | if [ -n "$do_svq1" ] ; then |
555 | # svq1 encoding | |
556 | file=${outfile}svq1.mov | |
1de61a18 | 557 | do_video_encoding "" "-an -vcodec svq1 -qscale 3 -pix_fmt yuv410p" |
b86bd1f1 MN |
558 | |
559 | # svq1 decoding | |
1de61a18 | 560 | do_video_decoding -pix_fmt yuv420p |
b86bd1f1 MN |
561 | fi |
562 | ||
563 | ################################### | |
51133a7d FB |
564 | if [ -n "$do_mp2" ] ; then |
565 | # mp2 encoding | |
566 | file=${outfile}mp2.mp2 | |
115329f1 | 567 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src $file |
51133a7d FB |
568 | |
569 | # mp2 decoding | |
115329f1 | 570 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
976709ee | 571 | $tiny_psnr $pcm_dst $pcm_ref 2 1924 >> $logfile |
51133a7d FB |
572 | fi |
573 | ||
574 | ################################### | |
575 | if [ -n "$do_ac3" ] ; then | |
576 | # ac3 encoding | |
577 | file=${outfile}ac3.rm | |
115329f1 | 578 | do_ffmpeg $file -y -ab 128 -ac 2 -f s16le -i $pcm_src -vn $file |
51133a7d FB |
579 | |
580 | # ac3 decoding | |
115329f1 | 581 | #do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
51133a7d FB |
582 | fi |
583 | ||
89d5dfd5 | 584 | ################################### |
311be1fb MN |
585 | if [ -n "$do_g726" ] ; then |
586 | # g726 encoding | |
587 | file=${outfile}g726.wav | |
115329f1 | 588 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -ab 32 -ac 1 -ar 8000 -acodec g726 $file |
311be1fb MN |
589 | |
590 | # g726 decoding | |
115329f1 | 591 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
311be1fb MN |
592 | fi |
593 | ||
594 | ################################### | |
f02ab814 MN |
595 | if [ -n "$do_adpcm_ima_wav" ] ; then |
596 | # encoding | |
597 | file=${outfile}adpcm_ima.wav | |
115329f1 | 598 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_ima_wav $file |
f02ab814 MN |
599 | |
600 | # decoding | |
115329f1 | 601 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
f02ab814 MN |
602 | fi |
603 | ||
604 | ################################### | |
605 | if [ -n "$do_adpcm_ms" ] ; then | |
606 | # encoding | |
607 | file=${outfile}adpcm_ms.wav | |
115329f1 | 608 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_ms $file |
f02ab814 MN |
609 | |
610 | # decoding | |
115329f1 | 611 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
f02ab814 MN |
612 | fi |
613 | ||
614 | ################################### | |
d8cbeba1 MN |
615 | if [ -n "$do_adpcm_yam" ] ; then |
616 | # encoding | |
617 | file=${outfile}adpcm_yam.wav | |
115329f1 | 618 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_yamaha $file |
d8cbeba1 MN |
619 | |
620 | # decoding | |
115329f1 | 621 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst |
d8cbeba1 MN |
622 | fi |
623 | ||
624 | ################################### | |
aeb2904e MN |
625 | if [ -n "$do_flac" ] ; then |
626 | # encoding | |
627 | file=${outfile}flac.flac | |
a403fc03 | 628 | do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec flac -compression_level 2 $file |
aeb2904e MN |
629 | |
630 | # decoding | |
631 | do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst | |
632 | fi | |
633 | ||
634 | ################################### | |
89d5dfd5 FB |
635 | # libav testing |
636 | ################################### | |
637 | ||
638 | if [ -n "$do_libav" ] ; then | |
639 | ||
640 | # avi | |
641 | file=${outfile}libav.avi | |
642 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file | |
643 | do_ffmpeg_crc $file -i $file | |
644 | ||
645 | # asf | |
646 | file=${outfile}libav.asf | |
ba30abcb | 647 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file |
e928649b | 648 | do_ffmpeg_crc $file -i $file -r 25 |
89d5dfd5 FB |
649 | |
650 | # rm | |
651 | file=${outfile}libav.rm | |
652 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file | |
653 | # broken | |
654 | #do_ffmpeg_crc $file -i $file | |
655 | ||
656 | # mpegps | |
657 | file=${outfile}libav.mpg | |
658 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file | |
659 | do_ffmpeg_crc $file -i $file | |
660 | ||
d05c15cb MN |
661 | # mpegts |
662 | file=${outfile}libav.ts | |
663 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file | |
664 | do_ffmpeg_crc $file -i $file | |
665 | ||
89d5dfd5 FB |
666 | # swf (decode audio only) |
667 | file=${outfile}libav.swf | |
2dd59ebd | 668 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file |
d0c30ca5 | 669 | do_ffmpeg_crc $file -i $file |
89d5dfd5 FB |
670 | |
671 | # ffm | |
74d69c07 MN |
672 | file=${outfile}libav.ffm |
673 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file | |
674 | do_ffmpeg_crc $file -i $file | |
89d5dfd5 | 675 | |
bbdd42d3 MN |
676 | # flv |
677 | file=${outfile}libav.flv | |
ba30abcb | 678 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -an $file |
bbdd42d3 MN |
679 | do_ffmpeg_crc $file -i $file |
680 | ||
c280f2d7 | 681 | # mov |
2dd59ebd MN |
682 | file=${outfile}libav.mov |
683 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec pcm_alaw $file | |
684 | do_ffmpeg_crc $file -i $file | |
c280f2d7 MN |
685 | |
686 | # nut | |
568ad81b MN |
687 | #file=${outfile}libav.nut |
688 | #do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file | |
689 | #do_ffmpeg_crc $file -i $file | |
c280f2d7 | 690 | |
a811de6e | 691 | # dv |
3ea1ce21 RS |
692 | file=${outfile}libav.dv |
693 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -ar 48000 -r 25 -s pal -ac 2 $file | |
694 | do_ffmpeg_crc $file -i $file | |
a811de6e | 695 | |
a850fd18 BC |
696 | # gxf |
697 | file=${outfile}libav.gxf | |
698 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -ar 48000 -r 25 -s pal -ac 1 $file | |
699 | do_ffmpeg_crc $file -i $file | |
700 | ||
89d5dfd5 FB |
701 | #################### |
702 | # streamed images | |
703 | # mjpeg | |
affd55a1 RS |
704 | #file=${outfile}libav.mjpeg |
705 | #do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src $file | |
706 | #do_ffmpeg_crc $file -i $file | |
89d5dfd5 | 707 | |
7481e919 | 708 | # pbmpipe |
d449d1bc | 709 | do_streamed_images pbm |
7481e919 | 710 | |
89d5dfd5 | 711 | # pgmpipe |
d449d1bc | 712 | do_streamed_images pgm |
89d5dfd5 FB |
713 | |
714 | # ppmpipe | |
d449d1bc | 715 | do_streamed_images ppm |
89d5dfd5 FB |
716 | |
717 | # gif | |
718 | file=${outfile}libav.gif | |
20dd25ad | 719 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -pix_fmt rgb24 $file |
7481e919 FB |
720 | #do_ffmpeg_crc $file -i $file |
721 | ||
722 | # yuv4mpeg | |
8cf71ead | 723 | file=${outfile}libav.y4m |
7481e919 FB |
724 | do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src $file |
725 | #do_ffmpeg_crc $file -i $file | |
89d5dfd5 FB |
726 | |
727 | #################### | |
728 | # image formats | |
729 | # pgm (we do not do md5 on image files yet) | |
528bbdde | 730 | file=${outfile}libav%02d.pgm |
89d5dfd5 FB |
731 | $ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src $file |
732 | do_ffmpeg_crc $file -i $file | |
733 | ||
734 | # ppm (we do not do md5 on image files yet) | |
528bbdde | 735 | file=${outfile}libav%02d.ppm |
89d5dfd5 FB |
736 | $ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src $file |
737 | do_ffmpeg_crc $file -i $file | |
738 | ||
d0c30ca5 | 739 | # jpeg (we do not do md5 on image files yet) |
528bbdde | 740 | file=${outfile}libav%02d.jpg |
fac862c6 | 741 | $ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src -flags +bitexact -dct fastint -idct simple -pix_fmt yuvj420p -f image2 $file |
72f89c4c | 742 | do_ffmpeg_crc $file -f image2 -i $file |
d0c30ca5 | 743 | |
89d5dfd5 FB |
744 | #################### |
745 | # audio only | |
746 | ||
747 | # wav | |
e587a0a5 | 748 | do_audio_only wav |
89d5dfd5 FB |
749 | |
750 | # alaw | |
e587a0a5 | 751 | do_audio_only al |
89d5dfd5 FB |
752 | |
753 | # mulaw | |
e587a0a5 | 754 | do_audio_only ul |
89d5dfd5 FB |
755 | |
756 | # au | |
e587a0a5 | 757 | do_audio_only au |
89d5dfd5 | 758 | |
d8cbeba1 | 759 | # mmf |
e587a0a5 | 760 | do_audio_only mmf |
d8cbeba1 | 761 | |
f11288da | 762 | # aiff |
e587a0a5 | 763 | do_audio_only aif |
f11288da | 764 | |
ea395e8c | 765 | # voc |
e587a0a5 | 766 | do_audio_only voc |
ea395e8c | 767 | |
affd55a1 RS |
768 | #################### |
769 | # pix_fmt conversions | |
770 | conversions="yuv420p yuv422p yuv444p yuv422 yuv410p yuv411p yuvj420p \ | |
771 | yuvj422p yuvj444p rgb24 bgr24 rgba32 rgb565 rgb555 gray monow \ | |
bb270c08 | 772 | monob pal8" |
affd55a1 RS |
773 | for pix_fmt in $conversions ; do |
774 | file=${outfile}libav-${pix_fmt}.yuv | |
775 | do_ffmpeg_nocheck $file -r 1 -t 1 -y -f pgmyuv -i $raw_src \ | |
776 | -f rawvideo -s 352x288 -pix_fmt $pix_fmt $raw_dst | |
777 | do_ffmpeg $file -f rawvideo -s 352x288 -pix_fmt $pix_fmt -i $raw_dst \ | |
778 | -f rawvideo -s 352x288 -pix_fmt yuv444p $file | |
779 | done | |
780 | ||
89d5dfd5 FB |
781 | fi |
782 | ||
783 | ||
51133a7d | 784 | |
281a74da | 785 | if $diff_cmd "$logfile" "$reffile" ; then |
115329f1 | 786 | echo |
51133a7d FB |
787 | echo Regression test succeeded. |
788 | exit 0 | |
789 | else | |
115329f1 | 790 | echo |
51133a7d FB |
791 | echo Regression test: Error. |
792 | exit 1 | |
793 | fi |