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