regression.sh 19.7 KB
Newer Older
1 2 3 4 5 6
#!/bin/sh
#
# automatic regression test for ffmpeg
#
#
#set -x
7
# Even in the 21st century some diffs are not supporting -u.
M
Michael Niedermayer 已提交
8
diff -u "$0" "$0" > /dev/null 2>&1
9 10 11 12 13 14
if [ $? -eq 0 ]; then
  diff_cmd="diff -u"
else
  diff_cmd="diff"
fi

M
Michael Niedermayer 已提交
15
diff -w "$0" "$0" > /dev/null 2>&1
M
diff -w  
Michael Niedermayer 已提交
16 17 18 19
if [ $? -eq 0 ]; then
  diff_cmd="$diff_cmd -w"
fi

20 21
set -e

F
Fabrice Bellard 已提交
22 23 24
datadir="./data"

logfile="$datadir/ffmpeg.regression"
25
outfile="$datadir/a-"
F
Fabrice Bellard 已提交
26

27 28 29 30 31
# tests to do
if [ "$1" = "mpeg4" ] ; then
    do_mpeg4=y
elif [ "$1" = "mpeg" ] ; then
    do_mpeg=y
32
    do_mpeg2=y
F
Fabrice Bellard 已提交
33 34
elif [ "$1" = "ac3" ] ; then
    do_ac3=y
35 36
elif [ "$1" = "huffyuv" ] ; then
    do_huffyuv=y
M
Michael Niedermayer 已提交
37 38
elif [ "$1" = "mpeg2thread" ] ; then
    do_mpeg2thread=y
M
Michael Niedermayer 已提交
39 40
elif [ "$1" = "snow" ] ; then
    do_snow=y
M
Michael Niedermayer 已提交
41 42
elif [ "$1" = "snowll" ] ; then
    do_snowll=y
F
Fabrice Bellard 已提交
43 44
elif [ "$1" = "libavtest" ] ; then
    do_libav=y
F
Fabrice Bellard 已提交
45
    logfile="$datadir/libav.regression"
46
    outfile="$datadir/b-"
47 48
else
    do_mpeg=y
M
Michael Niedermayer 已提交
49
    do_mpeg2=y
50
    do_mpeg2thread=y
51
    do_msmpeg4v2=y
52
    do_msmpeg4=y
53
    do_wmv1=y
54
    do_wmv2=y
M
Michael Niedermayer 已提交
55
    do_h261=y
56
    do_h263=y
M
Michael Niedermayer 已提交
57
    do_h263p=y
58
    do_mpeg4=y
59
    do_mp4psp=y
60
    do_huffyuv=y
61
    do_mjpeg=y
62
    do_ljpeg=y
M
Michael Niedermayer 已提交
63
    do_jpegls=y
64
    do_rv10=y
M
Michael Niedermayer 已提交
65
    do_rv20=y
66 67
    do_mp2=y
    do_ac3=y
M
Michael Niedermayer 已提交
68
    do_g726=y
69 70
    do_adpcm_ima_wav=y
    do_adpcm_ms=y
71 72
    do_rc=y
    do_mpeg4adv=y
73
    do_mpeg4thread=y
74
    do_mpeg4nr=y
75
    do_mpeg1b=y
M
Michael Niedermayer 已提交
76
    do_asv1=y
M
Michael Niedermayer 已提交
77
    do_asv2=y
M
Michael Niedermayer 已提交
78
    do_flv=y
M
Michael Niedermayer 已提交
79
    do_ffv1=y
80
    do_error=y
M
Michael Niedermayer 已提交
81
    do_svq1=y
M
Michael Niedermayer 已提交
82
    do_snow=y
M
Michael Niedermayer 已提交
83
    do_snowll=y
84
    do_adpcm_yam=y
M
Michael Niedermayer 已提交
85
    do_dv=y
86 87 88 89
fi


# various files
M
Mark Hills 已提交
90
ffmpeg="../ffmpeg_g"
91
tiny_psnr="./tiny_psnr"
92
reffile="$2"
F
Fabrice Bellard 已提交
93
benchfile="$datadir/ffmpeg.bench"
94
raw_src="$3/%02d.pgm"
F
Fabrice Bellard 已提交
95
raw_dst="$datadir/out.yuv"
96
raw_ref="$datadir/ref.yuv"
97
pcm_src="asynth1.sw"
F
Fabrice Bellard 已提交
98
pcm_dst="$datadir/out.wav"
99
pcm_ref="$datadir/ref.wav"
100 101 102 103 104 105 106
if [ X"`echo | md5sum 2> /dev/null`" != X ]; then
    do_md5sum() { md5sum -b $1; }
elif [ -x /sbin/md5 ]; then
    do_md5sum() { /sbin/md5 -r $1 | sed 's# \**\./# *./#'; }
else
    do_md5sum() { echo No md5sum program found; }
fi
F
Fabrice Bellard 已提交
107 108 109

# create the data directory if it does not exists
mkdir -p $datadir
110

111
do_ffmpeg()
112 113 114
{
    f="$1"
    shift
115 116
    echo $ffmpeg -y -flags +bitexact -dct fastint -idct simple $*
    $ffmpeg -y -flags +bitexact -dct fastint -idct simple -benchmark $* > $datadir/bench.tmp 2> /tmp/ffmpeg$$
117
    egrep -v "^(Stream|Press|Input|Output|frame|  Stream|  Duration|video:)" /tmp/ffmpeg$$ || true
118
    rm -f /tmp/ffmpeg$$
119
    do_md5sum $f >> $logfile
120 121
    if [ $f = $raw_dst ] ; then
        $tiny_psnr $f $raw_ref >> $logfile
122
    elif [ $f = $pcm_dst ] ; then
123
        $tiny_psnr $f $pcm_ref 2 >> $logfile
124 125
    else
        wc -c $f >> $logfile
126
    fi
127
    expr "`cat $datadir/bench.tmp`" : '.*utime=\(.*s\)' > $datadir/bench2.tmp
F
Fabrice Bellard 已提交
128
    echo `cat $datadir/bench2.tmp` $f >> $benchfile
129 130
}

131
do_ffmpeg_crc()
F
Fabrice Bellard 已提交
132 133 134
{
    f="$1"
    shift
135 136
    echo $ffmpeg -y -flags +bitexact -dct fastint -idct simple $* -f crc $datadir/ffmpeg.crc
    $ffmpeg -y -flags +bitexact -dct fastint -idct simple $* -f crc $datadir/ffmpeg.crc > /tmp/ffmpeg$$ 2>&1
137
    egrep -v "^(Stream|Press|Input|Output|frame|  Stream|  Duration|video:|ffmpeg version|  configuration|  built)" /tmp/ffmpeg$$ || true
138
    rm -f /tmp/ffmpeg$$
139
    echo "$f `cat $datadir/ffmpeg.crc`" >> $logfile
F
Fabrice Bellard 已提交
140
}
141

142 143 144 145
do_ffmpeg_nocheck()
{
    f="$1"
    shift
146 147
    echo $ffmpeg -y -flags +bitexact -dct fastint -idct simple $*
    $ffmpeg -y -flags +bitexact -dct fastint -idct simple -benchmark $* > $datadir/bench.tmp 2> /tmp/ffmpeg$$
148
    egrep -v "^(Stream|Press|Input|Output|frame|  Stream|  Duration|video:)" /tmp/ffmpeg$$ || true
149
    rm -f /tmp/ffmpeg$$
150 151 152 153
    expr "`cat $datadir/bench.tmp`" : '.*utime=\(.*s\)' > $datadir/bench2.tmp
    echo `cat $datadir/bench2.tmp` $f >> $benchfile
}

154 155 156
echo "ffmpeg regression test" > $logfile
echo "ffmpeg benchmarks" > $benchfile

157 158 159
###################################
# generate reference for quality check
do_ffmpeg_nocheck $raw_ref -y -f pgmyuv -i $raw_src -an -f rawvideo $raw_ref
160
do_ffmpeg_nocheck $pcm_ref -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -f wav $pcm_ref
161

162 163 164 165
###################################
if [ -n "$do_mpeg" ] ; then
# mpeg1 encoding
file=${outfile}mpeg1.mpg
166
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -f mpeg1video $file
167 168

# mpeg1 decoding
F
Fabrice Bellard 已提交
169
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
170 171 172 173 174
fi

###################################
if [ -n "$do_mpeg2" ] ; then
# mpeg2 encoding
175
file=${outfile}mpeg2.mpg
176
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -vcodec mpeg2video -f mpeg1video $file
177 178 179 180

# mpeg2 decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst

M
Michael Niedermayer 已提交
181 182
# mpeg2 encoding
file=${outfile}mpeg2.mpg
183
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -vcodec mpeg2video -idct int -dct int -f mpeg1video $file
M
Michael Niedermayer 已提交
184 185

# mpeg2 decoding
186
do_ffmpeg $raw_dst -y -idct int -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
187

188 189
# mpeg2 encoding interlaced
file=${outfile}mpeg2i.mpg
190
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -vcodec mpeg2video -f mpeg1video -flags +ildct+ilme $file
191 192

# mpeg2 decoding
M
Michael Niedermayer 已提交
193
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
194 195
fi

196 197 198 199
###################################
if [ -n "$do_mpeg2thread" ] ; then
# mpeg2 encoding interlaced
file=${outfile}mpeg2thread.mpg
200
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -vcodec mpeg2video -f mpeg1video -bf 2 -flags +ildct+ilme -threads 2 $file
201

M
Michael Niedermayer 已提交
202 203 204 205 206
# mpeg2 decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst

# mpeg2 encoding interlaced
file=${outfile}mpeg2reuse.mpg
207
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
M
Michael Niedermayer 已提交
208

209 210 211 212
# mpeg2 decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
fi

213 214 215 216 217 218 219
###################################
if [ -n "$do_msmpeg4v2" ] ; then
# msmpeg4 encoding
file=${outfile}msmpeg4v2.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec msmpeg4v2 $file

# msmpeg4v2 decoding
220
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
221 222
fi

223 224 225 226 227 228 229
###################################
if [ -n "$do_msmpeg4" ] ; then
# msmpeg4 encoding
file=${outfile}msmpeg4.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec msmpeg4 $file

# msmpeg4 decoding
230
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
231 232
fi

233 234 235 236 237 238 239
###################################
if [ -n "$do_wmv1" ] ; then
# wmv1 encoding
file=${outfile}wmv1.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec wmv1 $file

# wmv1 decoding
240
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
241 242
fi

243 244 245 246 247 248 249
###################################
if [ -n "$do_wmv2" ] ; then
# wmv2 encoding
file=${outfile}wmv2.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec wmv2 $file

# wmv2 decoding
250
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
251 252
fi

M
Michael Niedermayer 已提交
253 254 255 256 257 258 259
###################################
if [ -n "$do_h261" ] ; then
# h261 encoding
file=${outfile}h261.avi
do_ffmpeg $file -y -qscale 11 -f pgmyuv -i $raw_src -s 352x288 -an -vcodec h261 $file

# h261 decoding
260
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
261 262
fi

263 264 265 266 267 268
###################################
if [ -n "$do_h263" ] ; then
# h263 encoding
file=${outfile}h263.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -s 352x288 -an -vcodec h263 $file

M
Michael Niedermayer 已提交
269
# h263 decoding
270
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
271 272 273 274 275 276
fi

###################################
if [ -n "$do_h263p" ] ; then
# h263p encoding
file=${outfile}h263p.avi
277
do_ffmpeg $file -y -qscale 2 -flags +umv+aiv+aic -f pgmyuv -i $raw_src -s 352x288 -an -vcodec h263p -ps 300 $file
M
Michael Niedermayer 已提交
278

279
# h263p decoding
280
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
281 282 283 284 285
fi

###################################
if [ -n "$do_mpeg4" ] ; then
# mpeg4
286
file=${outfile}odivx.mp4
287
do_ffmpeg $file -y -flags +mv4 -mbd bits -qscale 10 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
288 289

# mpeg4 decoding
290
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
291 292
fi

293 294 295 296
###################################
if [ -n "$do_huffyuv" ] ; then
# huffyuv
file=${outfile}huffyuv.avi
L
Loren Merritt 已提交
297
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec huffyuv -pix_fmt yuv422p $file
298 299

# huffyuv decoding
300
do_ffmpeg $raw_dst -y -i $file -f rawvideo -strict -2 -pix_fmt yuv420p $raw_dst
301 302
fi

303 304 305 306 307 308 309
###################################
if [ -n "$do_rc" ] ; then
# mpeg4 rate control
file=${outfile}mpeg4-rc.avi
do_ffmpeg $file -y -b 400 -bf 2 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file

# mpeg4 rate control decoding
310
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
311 312 313 314 315 316
fi

###################################
if [ -n "$do_mpeg4adv" ] ; then
# mpeg4
file=${outfile}mpeg4-adv.avi
317
do_ffmpeg $file -y -qscale 9 -flags +mv4+part+aic+trell -mbd bits -ps 200 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
318 319

# mpeg4 decoding
320
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
321 322
fi

323 324 325 326
###################################
if [ -n "$do_mpeg4thread" ] ; then
# mpeg4
file=${outfile}mpeg4-thread.avi
327
do_ffmpeg $file -y -b 500 -flags +mv4+part+aic+trell -mbd bits  -ps 200 -bf 2 -f pgmyuv -i $raw_src -an -vcodec mpeg4 -threads 2 $file
328 329

# mpeg4 decoding
330
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
331 332 333 334 335 336
fi

###################################
if [ -n "$do_mpeg4adv" ] ; then
# mpeg4
file=${outfile}mpeg4-Q.avi
337
do_ffmpeg $file -y -qscale 7 -flags +mv4+qpel -mbd 2 -bf 2 -cmp 1 -subcmp 2 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
338 339

# mpeg4 decoding
340
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
341 342
fi

343 344 345 346 347 348 349
###################################
if [ -n "$do_mp4psp" ] ; then
# mp4 PSP style
file=${outfile}mpeg4-PSP.mp4
do_ffmpeg $file -y -b 768 -s 320x240 -f psp -ar 24000 -ab 32 -i $raw_src $file
fi

350 351 352 353
###################################
if [ -n "$do_error" ] ; then
# damaged mpeg4
file=${outfile}error-mpeg4-adv.avi
354
do_ffmpeg $file -y -qscale 7 -flags +mv4+part+aic -mbd rd -ps 250 -error 10 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
355 356

# damaged mpeg4 decoding
357
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
358 359
fi

360 361 362
###################################
if [ -n "$do_mpeg4nr" ] ; then
# noise reduction
363
file=${outfile}mpeg4-nr.avi
364
do_ffmpeg $file -y -qscale 8 -flags +mv4 -mbd rd -nr 200 -f pgmyuv -i $raw_src -an -vcodec mpeg4 $file
365 366

# mpeg4 decoding
367
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
368 369
fi

370 371 372 373
###################################
if [ -n "$do_mpeg1b" ] ; then
# mpeg1
file=${outfile}mpeg1b.mpg
374
do_ffmpeg $file -y -qscale 8 -bf 3 -ps 200 -f pgmyuv -i $raw_src -an -vcodec mpeg1video -f mpeg1video $file
375 376

# mpeg1 decoding
377
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
378 379
fi

380 381 382 383
###################################
if [ -n "$do_mjpeg" ] ; then
# mjpeg
file=${outfile}mjpeg.avi
M
Michael Niedermayer 已提交
384
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec mjpeg -pix_fmt yuvj420p $file
385 386

# mjpeg decoding
387
do_ffmpeg $raw_dst -y -i $file -f rawvideo -pix_fmt yuv420p $raw_dst
388 389 390
fi

###################################
391 392 393
if [ -n "$do_ljpeg" ] ; then
# ljpeg
file=${outfile}ljpeg.avi
M
Michael Niedermayer 已提交
394
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec ljpeg -strict -1 $file
395 396

# ljpeg decoding
397
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
398 399
fi

M
Michael Niedermayer 已提交
400 401 402 403 404 405 406 407 408 409
###################################
if [ -n "$do_jpegls" ] ; then
# jpeg ls
file=${outfile}jpegls.avi
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec jpegls -vtag MJPG $file

# jpeg ls decoding
do_ffmpeg $raw_dst -y -i $file -f rawvideo -pix_fmt yuv420p $raw_dst
fi

410
###################################
411 412 413
if [ -n "$do_rv10" ] ; then
# rv10 encoding
file=${outfile}rv10.rm
414
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an $file
415 416

# rv10 decoding
417
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
418 419
fi

M
Michael Niedermayer 已提交
420 421 422 423
###################################
if [ -n "$do_rv20" ] ; then
# rv20 encoding
file=${outfile}rv20.rm
424
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -vcodec rv20 -an $file
M
Michael Niedermayer 已提交
425 426

# rv20 decoding
427
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
428 429
fi

M
Michael Niedermayer 已提交
430 431 432 433 434 435 436
###################################
if [ -n "$do_asv1" ] ; then
# asv1 encoding
file=${outfile}asv1.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec asv1 $file

# asv1 decoding
437
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
438 439
fi

M
Michael Niedermayer 已提交
440 441 442 443 444 445 446
###################################
if [ -n "$do_asv2" ] ; then
# asv2 encoding
file=${outfile}asv2.avi
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec asv2 $file

# asv2 decoding
447
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
448 449
fi

M
Michael Niedermayer 已提交
450 451 452 453 454 455 456
###################################
if [ -n "$do_flv" ] ; then
# flv encoding
file=${outfile}flv.flv
do_ffmpeg $file -y -qscale 10 -f pgmyuv -i $raw_src -an -vcodec flv $file

# flv decoding
457
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
458 459
fi

M
Michael Niedermayer 已提交
460 461 462 463
###################################
if [ -n "$do_ffv1" ] ; then
# ffv1 encoding
file=${outfile}ffv1.avi
464
do_ffmpeg $file -y -strict -2 -f pgmyuv -i $raw_src -an -vcodec ffv1 $file
M
Michael Niedermayer 已提交
465 466

# ffv1 decoding
467
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
468 469 470 471 472 473
fi

###################################
if [ -n "$do_snow" ] ; then
# snow encoding
file=${outfile}snow.avi
474
do_ffmpeg $file -y -strict -2 -f pgmyuv -i $raw_src -an -vcodec snow -qscale 2 -flags +qpel -me iter -dia_size 2 -cmp 12 -subcmp 12 -s 128x64 $file
M
Michael Niedermayer 已提交
475 476

# snow decoding
477
do_ffmpeg $raw_dst -y -i $file -f rawvideo -s 352x288 $raw_dst
M
Michael Niedermayer 已提交
478
fi
M
Michael Niedermayer 已提交
479

M
Michael Niedermayer 已提交
480 481
###################################
if [ -n "$do_snowll" ] ; then
M
Michael Niedermayer 已提交
482 483
# snow encoding
file=${outfile}snow53.avi
484
do_ffmpeg $file -y -strict -2 -f pgmyuv -i $raw_src -an -vcodec snow -pred 1 -flags +mv4+qpel $file
M
Michael Niedermayer 已提交
485 486

# snow decoding
487
do_ffmpeg $raw_dst -y -i $file -f rawvideo $raw_dst
M
Michael Niedermayer 已提交
488 489
fi

M
Michael Niedermayer 已提交
490 491 492 493
###################################
if [ -n "$do_dv" ] ; then
# dv encoding
file=${outfile}dv.dv
494
do_ffmpeg $file -dct int -y -f pgmyuv -i $raw_src -s pal -an $file
M
Michael Niedermayer 已提交
495 496

# dv decoding
497
do_ffmpeg $raw_dst -y -i $file -f rawvideo -s cif $raw_dst
M
Michael Niedermayer 已提交
498 499
fi

M
Michael Niedermayer 已提交
500 501 502 503
###################################
if [ -n "$do_svq1" ] ; then
# svq1 encoding
file=${outfile}svq1.mov
504
do_ffmpeg $file -y -f pgmyuv -i $raw_src -an -vcodec svq1 -qscale 3 -pix_fmt yuv410p $file
M
Michael Niedermayer 已提交
505 506

# svq1 decoding
507
do_ffmpeg $raw_dst -y -i $file -f rawvideo -pix_fmt yuv420p $raw_dst
M
Michael Niedermayer 已提交
508 509
fi

510 511 512 513
###################################
if [ -n "$do_mp2" ] ; then
# mp2 encoding
file=${outfile}mp2.mp2
514
do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src $file
515 516

# mp2 decoding
517
do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
518
$tiny_psnr $pcm_dst $pcm_ref 2 1924 >> $logfile
519 520 521 522 523 524
fi

###################################
if [ -n "$do_ac3" ] ; then
# ac3 encoding
file=${outfile}ac3.rm
525
do_ffmpeg $file -y -ab 128 -ac 2 -f s16le  -i $pcm_src -vn $file
526 527

# ac3 decoding
528
#do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
529 530
fi

M
Michael Niedermayer 已提交
531 532 533 534
###################################
if [ -n "$do_g726" ] ; then
# g726 encoding
file=${outfile}g726.wav
535
do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -ab 32 -ac 1 -ar 8000 -acodec g726 $file
M
Michael Niedermayer 已提交
536 537

# g726 decoding
538
do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
M
Michael Niedermayer 已提交
539 540
fi

541 542 543 544
###################################
if [ -n "$do_adpcm_ima_wav" ] ; then
# encoding
file=${outfile}adpcm_ima.wav
545
do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_ima_wav $file
546 547

# decoding
548
do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
549 550 551 552 553 554
fi

###################################
if [ -n "$do_adpcm_ms" ] ; then
# encoding
file=${outfile}adpcm_ms.wav
555
do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_ms $file
556 557

# decoding
558
do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
559 560
fi

561 562 563 564
###################################
if [ -n "$do_adpcm_yam" ] ; then
# encoding
file=${outfile}adpcm_yam.wav
565
do_ffmpeg $file -y -ab 128 -ac 2 -ar 44100 -f s16le -i $pcm_src -acodec adpcm_yamaha $file
566 567

# decoding
568
do_ffmpeg $pcm_dst -y -i $file -f wav $pcm_dst
569 570
fi

F
Fabrice Bellard 已提交
571 572 573 574 575 576 577 578 579 580 581 582 583
###################################
# libav testing
###################################

if [ -n "$do_libav" ] ; then

# avi
file=${outfile}libav.avi
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

# asf
file=${outfile}libav.asf
584
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file
585
do_ffmpeg_crc $file -i $file -r 25
F
Fabrice Bellard 已提交
586 587 588 589 590 591 592 593 594 595 596 597

# rm
file=${outfile}libav.rm
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file
# broken
#do_ffmpeg_crc $file -i $file

# mpegps
file=${outfile}libav.mpg
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

M
Michael Niedermayer 已提交
598 599 600 601 602
# mpegts
file=${outfile}libav.ts
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

F
Fabrice Bellard 已提交
603 604
# swf (decode audio only)
file=${outfile}libav.swf
605
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file
606
do_ffmpeg_crc $file -i $file
F
Fabrice Bellard 已提交
607 608

# ffm
609 610 611
file=${outfile}libav.ffm
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file
F
Fabrice Bellard 已提交
612

M
Michael Niedermayer 已提交
613 614
# flv
file=${outfile}libav.flv
615
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -an $file
M
Michael Niedermayer 已提交
616 617
do_ffmpeg_crc $file -i $file

M
Michael Niedermayer 已提交
618
# mov
619 620 621
file=${outfile}libav.mov
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec pcm_alaw $file
do_ffmpeg_crc $file -i $file
M
Michael Niedermayer 已提交
622 623 624

# nut
file=${outfile}libav.nut
625
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f s16le -i $pcm_src -acodec mp2 $file
M
Michael Niedermayer 已提交
626 627
do_ffmpeg_crc $file -i $file

M
Michael Niedermayer 已提交
628
# dv
629 630 631
file=${outfile}libav.dv
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
do_ffmpeg_crc $file -i $file
M
Michael Niedermayer 已提交
632

F
Fabrice Bellard 已提交
633 634 635
####################
# streamed images
# mjpeg
636 637 638
#file=${outfile}libav.mjpeg
#do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src $file
#do_ffmpeg_crc $file -i $file
F
Fabrice Bellard 已提交
639

F
Fabrice Bellard 已提交
640 641
# pbmpipe
file=${outfile}libav.pbm
642 643
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f image2pipe $file
do_ffmpeg_crc $file -f image2pipe -i $file
F
Fabrice Bellard 已提交
644

F
Fabrice Bellard 已提交
645
# pgmpipe
F
Fabrice Bellard 已提交
646
file=${outfile}libav.pgm
647 648
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f image2pipe $file
do_ffmpeg_crc $file -f image2pipe -i $file
F
Fabrice Bellard 已提交
649 650

# ppmpipe
F
Fabrice Bellard 已提交
651
file=${outfile}libav.ppm
652 653
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src -f image2pipe $file
do_ffmpeg_crc $file -f image2pipe -i $file
F
Fabrice Bellard 已提交
654 655 656

# gif
file=${outfile}libav.gif
F
Fabrice Bellard 已提交
657 658 659 660
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src $file
#do_ffmpeg_crc $file -i $file

# yuv4mpeg
661
file=${outfile}libav.y4m
F
Fabrice Bellard 已提交
662 663
do_ffmpeg $file -t 1 -y -qscale 10 -f pgmyuv -i $raw_src $file
#do_ffmpeg_crc $file -i $file
F
Fabrice Bellard 已提交
664 665 666 667

####################
# image formats
# pgm (we do not do md5 on image files yet)
668
file=${outfile}libav%02d.pgm
F
Fabrice Bellard 已提交
669 670 671 672
$ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src $file
do_ffmpeg_crc $file -i $file

# ppm (we do not do md5 on image files yet)
673
file=${outfile}libav%02d.ppm
F
Fabrice Bellard 已提交
674 675 676
$ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src $file
do_ffmpeg_crc $file -i $file

677
# jpeg (we do not do md5 on image files yet)
678
file=${outfile}libav%02d.jpg
679
$ffmpeg -t 0.5 -y -qscale 10 -f pgmyuv -i $raw_src -flags +bitexact -dct fastint -idct simple -pix_fmt yuvj420p -f image2 $file
M
Michael Niedermayer 已提交
680
do_ffmpeg_crc $file -f image2 -i $file
681

F
Fabrice Bellard 已提交
682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704
####################
# audio only

# wav
file=${outfile}libav.wav
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

# alaw
file=${outfile}libav.al
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

# mulaw
file=${outfile}libav.ul
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

# au
file=${outfile}libav.au
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

705 706 707 708 709
# mmf
file=${outfile}libav.mmf
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

710 711 712 713 714
# aiff
file=${outfile}libav.aif
do_ffmpeg $file -t 1 -y -qscale 10 -f s16le -i $pcm_src $file
do_ffmpeg_crc $file -i $file

715 716 717 718
####################
# pix_fmt conversions
conversions="yuv420p yuv422p yuv444p yuv422 yuv410p yuv411p yuvj420p \
             yuvj422p yuvj444p rgb24 bgr24 rgba32 rgb565 rgb555 gray monow \
719
             monob pal8"
720 721 722 723 724 725 726 727
for pix_fmt in $conversions ; do
    file=${outfile}libav-${pix_fmt}.yuv
    do_ffmpeg_nocheck $file -r 1 -t 1 -y -f pgmyuv -i $raw_src \
                            -f rawvideo -s 352x288 -pix_fmt $pix_fmt $raw_dst
    do_ffmpeg $file -f rawvideo -s 352x288 -pix_fmt $pix_fmt -i $raw_dst \
                    -f rawvideo -s 352x288 -pix_fmt yuv444p $file
done

F
Fabrice Bellard 已提交
728 729 730
fi


731

M
Michael Niedermayer 已提交
732
if $diff_cmd "$logfile" "$reffile" ; then
733
    echo
734 735 736
    echo Regression test succeeded.
    exit 0
else
737
    echo
738 739 740
    echo Regression test: Error.
    exit 1
fi