1*dfc6aa5cSAndroid Build Coastguard Worker#!/bin/bash 2*dfc6aa5cSAndroid Build Coastguard Worker 3*dfc6aa5cSAndroid Build Coastguard Workerset -u 4*dfc6aa5cSAndroid Build Coastguard Workerset -e 5*dfc6aa5cSAndroid Build Coastguard Workertrap onexit INT 6*dfc6aa5cSAndroid Build Coastguard Workertrap onexit TERM 7*dfc6aa5cSAndroid Build Coastguard Workertrap onexit EXIT 8*dfc6aa5cSAndroid Build Coastguard Worker 9*dfc6aa5cSAndroid Build Coastguard Workeronexit() 10*dfc6aa5cSAndroid Build Coastguard Worker{ 11*dfc6aa5cSAndroid Build Coastguard Worker if [ -d $OUTDIR ]; then 12*dfc6aa5cSAndroid Build Coastguard Worker rm -rf $OUTDIR 13*dfc6aa5cSAndroid Build Coastguard Worker fi 14*dfc6aa5cSAndroid Build Coastguard Worker} 15*dfc6aa5cSAndroid Build Coastguard Worker 16*dfc6aa5cSAndroid Build Coastguard Workerrunme() 17*dfc6aa5cSAndroid Build Coastguard Worker{ 18*dfc6aa5cSAndroid Build Coastguard Worker echo \*\*\* $* 19*dfc6aa5cSAndroid Build Coastguard Worker $* 20*dfc6aa5cSAndroid Build Coastguard Worker} 21*dfc6aa5cSAndroid Build Coastguard Worker 22*dfc6aa5cSAndroid Build Coastguard WorkerEXT=bmp 23*dfc6aa5cSAndroid Build Coastguard WorkerIMAGES="vgl_5674_0098.${EXT} vgl_6434_0018a.${EXT} vgl_6548_0026a.${EXT} nightshot_iso_100.${EXT}" 24*dfc6aa5cSAndroid Build Coastguard WorkerIMGDIR=@CMAKE_CURRENT_SOURCE_DIR@/testimages 25*dfc6aa5cSAndroid Build Coastguard WorkerOUTDIR=`mktemp -d /tmp/__tjbenchtest_output.XXXXXX` 26*dfc6aa5cSAndroid Build Coastguard WorkerEXEDIR=@CMAKE_CURRENT_BINARY_DIR@ 27*dfc6aa5cSAndroid Build Coastguard WorkerBMPARG= 28*dfc6aa5cSAndroid Build Coastguard WorkerNSARG= 29*dfc6aa5cSAndroid Build Coastguard WorkerYUVARG= 30*dfc6aa5cSAndroid Build Coastguard WorkerALLOC=0 31*dfc6aa5cSAndroid Build Coastguard WorkerALLOCARG= 32*dfc6aa5cSAndroid Build Coastguard WorkerPROGARG= 33*dfc6aa5cSAndroid Build Coastguard Workerif [ "$EXT" = "bmp" ]; then BMPARG=-bmp; fi 34*dfc6aa5cSAndroid Build Coastguard Worker 35*dfc6aa5cSAndroid Build Coastguard Workerif [ -d $OUTDIR ]; then 36*dfc6aa5cSAndroid Build Coastguard Worker rm -rf $OUTDIR 37*dfc6aa5cSAndroid Build Coastguard Workerfi 38*dfc6aa5cSAndroid Build Coastguard Workermkdir -p $OUTDIR 39*dfc6aa5cSAndroid Build Coastguard Worker 40*dfc6aa5cSAndroid Build Coastguard Workerwhile [ $# -gt 0 ]; do 41*dfc6aa5cSAndroid Build Coastguard Worker case "$1" in 42*dfc6aa5cSAndroid Build Coastguard Worker -yuv) 43*dfc6aa5cSAndroid Build Coastguard Worker NSARG=-nosmooth 44*dfc6aa5cSAndroid Build Coastguard Worker YUVARG=-yuv 45*dfc6aa5cSAndroid Build Coastguard Worker 46*dfc6aa5cSAndroid Build Coastguard Worker# NOTE: The combination of tjEncodeYUV*() and tjCompressFromYUV*() does not 47*dfc6aa5cSAndroid Build Coastguard Worker# always produce bitwise-identical results to tjCompress*() if subsampling is 48*dfc6aa5cSAndroid Build Coastguard Worker# enabled. In both cases, if the image width or height are not evenly 49*dfc6aa5cSAndroid Build Coastguard Worker# divisible by the MCU width/height, then the bottom and/or right edge are 50*dfc6aa5cSAndroid Build Coastguard Worker# expanded. However, the libjpeg code performs this expansion prior to 51*dfc6aa5cSAndroid Build Coastguard Worker# downsampling, and TurboJPEG performs it in tjCompressFromYUV*(), which is 52*dfc6aa5cSAndroid Build Coastguard Worker# after downsampling. Thus, the two will agree only if the width/height along 53*dfc6aa5cSAndroid Build Coastguard Worker# each downsampled dimension is an odd number or is evenly divisible by the MCU 54*dfc6aa5cSAndroid Build Coastguard Worker# width/height. This disagreement basically amounts to a round-off error, but 55*dfc6aa5cSAndroid Build Coastguard Worker# there is no easy way around it, so for now, we just test the only image that 56*dfc6aa5cSAndroid Build Coastguard Worker# works. (NOTE: nightshot_iso_100 does not suffer from the above issue, but 57*dfc6aa5cSAndroid Build Coastguard Worker# it suffers from an unrelated problem whereby the combination of 58*dfc6aa5cSAndroid Build Coastguard Worker# tjDecompressToYUV*() and tjDecodeYUV*() do not produce bitwise-identical 59*dfc6aa5cSAndroid Build Coastguard Worker# results to tjDecompress*() if decompression scaling is enabled. This latter 60*dfc6aa5cSAndroid Build Coastguard Worker# phenomenon is not yet fully understood but is also believed to be some sort 61*dfc6aa5cSAndroid Build Coastguard Worker# of round-off error.) 62*dfc6aa5cSAndroid Build Coastguard Worker IMAGES="vgl_6548_0026a.${EXT}" 63*dfc6aa5cSAndroid Build Coastguard Worker ;; 64*dfc6aa5cSAndroid Build Coastguard Worker -alloc) 65*dfc6aa5cSAndroid Build Coastguard Worker ALLOCARG=-alloc 66*dfc6aa5cSAndroid Build Coastguard Worker ALLOC=1 67*dfc6aa5cSAndroid Build Coastguard Worker ;; 68*dfc6aa5cSAndroid Build Coastguard Worker -progressive) 69*dfc6aa5cSAndroid Build Coastguard Worker PROGARG=-progressive 70*dfc6aa5cSAndroid Build Coastguard Worker ;; 71*dfc6aa5cSAndroid Build Coastguard Worker esac 72*dfc6aa5cSAndroid Build Coastguard Worker shift 73*dfc6aa5cSAndroid Build Coastguard Workerdone 74*dfc6aa5cSAndroid Build Coastguard Worker 75*dfc6aa5cSAndroid Build Coastguard Workerexec >$EXEDIR/tjbenchtest$YUVARG$ALLOCARG$PROGARG.log 76*dfc6aa5cSAndroid Build Coastguard Worker 77*dfc6aa5cSAndroid Build Coastguard Worker# Standard tests 78*dfc6aa5cSAndroid Build Coastguard Workerfor image in $IMAGES; do 79*dfc6aa5cSAndroid Build Coastguard Worker 80*dfc6aa5cSAndroid Build Coastguard Worker cp $IMGDIR/$image $OUTDIR 81*dfc6aa5cSAndroid Build Coastguard Worker basename=`basename $image .${EXT}` 82*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct fast $PROGARG -grayscale -outfile $OUTDIR/${basename}_GRAY_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT} 83*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct fast $PROGARG -sample 2x2 -outfile $OUTDIR/${basename}_420_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT} 84*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct fast $PROGARG -sample 2x1 -outfile $OUTDIR/${basename}_422_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT} 85*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct fast $PROGARG -sample 1x1 -outfile $OUTDIR/${basename}_444_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT} 86*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct int $PROGARG -grayscale -outfile $OUTDIR/${basename}_GRAY_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT} 87*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct int $PROGARG -sample 2x2 -outfile $OUTDIR/${basename}_420_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT} 88*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct int $PROGARG -sample 2x1 -outfile $OUTDIR/${basename}_422_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT} 89*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/cjpeg -quality 95 -dct int $PROGARG -sample 1x1 -outfile $OUTDIR/${basename}_444_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT} 90*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 420 422 444; do 91*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -rgb $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_default_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg 92*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -dct fast -rgb $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_fast_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg 93*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -dct int -rgb $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_accurate_djpeg.${EXT} $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg 94*dfc6aa5cSAndroid Build Coastguard Worker done 95*dfc6aa5cSAndroid Build Coastguard Worker for samp in 420 422; do 96*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -nosmooth $BMPARG -outfile $OUTDIR/${basename}_${samp}_default_nosmooth_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg 97*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -dct fast -nosmooth $BMPARG -outfile $OUTDIR/${basename}_${samp}_fast_nosmooth_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg 98*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -dct int -nosmooth $BMPARG -outfile $OUTDIR/${basename}_${samp}_accurate_nosmooth_djpeg.${EXT} $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg 99*dfc6aa5cSAndroid Build Coastguard Worker done 100*dfc6aa5cSAndroid Build Coastguard Worker 101*dfc6aa5cSAndroid Build Coastguard Worker # Compression 102*dfc6aa5cSAndroid Build Coastguard Worker for dct in accurate fast; do 103*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/$image 95 -rgb -quiet -benchtime 0.01 -warmup 0 -${dct}dct $YUVARG $ALLOCARG $PROGARG 104*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 420 422 444; do 105*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95.jpg $OUTDIR/${basename}_${samp}_${dct}_cjpeg.jpg 106*dfc6aa5cSAndroid Build Coastguard Worker done 107*dfc6aa5cSAndroid Build Coastguard Worker done 108*dfc6aa5cSAndroid Build Coastguard Worker 109*dfc6aa5cSAndroid Build Coastguard Worker for dct in fast accurate default; do 110*dfc6aa5cSAndroid Build Coastguard Worker dctarg=-${dct}dct 111*dfc6aa5cSAndroid Build Coastguard Worker if [ "${dct}" = "default" ]; then 112*dfc6aa5cSAndroid Build Coastguard Worker dctarg= 113*dfc6aa5cSAndroid Build Coastguard Worker fi 114*dfc6aa5cSAndroid Build Coastguard Worker 115*dfc6aa5cSAndroid Build Coastguard Worker # Tiled compression & decompression 116*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/$image 95 -rgb -tile -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $PROGARG 117*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 444; do 118*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 119*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT} 120*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 121*dfc6aa5cSAndroid Build Coastguard Worker else 122*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 123*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 124*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT} 125*dfc6aa5cSAndroid Build Coastguard Worker rm $i 126*dfc6aa5cSAndroid Build Coastguard Worker done 127*dfc6aa5cSAndroid Build Coastguard Worker fi 128*dfc6aa5cSAndroid Build Coastguard Worker done 129*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/$image 95 -rgb -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $PROGARG 130*dfc6aa5cSAndroid Build Coastguard Worker for samp in 420 422; do 131*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 132*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT} 133*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 134*dfc6aa5cSAndroid Build Coastguard Worker else 135*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 136*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 137*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT} 138*dfc6aa5cSAndroid Build Coastguard Worker rm $i 139*dfc6aa5cSAndroid Build Coastguard Worker done 140*dfc6aa5cSAndroid Build Coastguard Worker fi 141*dfc6aa5cSAndroid Build Coastguard Worker done 142*dfc6aa5cSAndroid Build Coastguard Worker 143*dfc6aa5cSAndroid Build Coastguard Worker # Tiled decompression 144*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 444; do 145*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -tile -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $PROGARG 146*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 147*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT} 148*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 149*dfc6aa5cSAndroid Build Coastguard Worker else 150*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 151*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 152*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT} 153*dfc6aa5cSAndroid Build Coastguard Worker rm $i 154*dfc6aa5cSAndroid Build Coastguard Worker done 155*dfc6aa5cSAndroid Build Coastguard Worker fi 156*dfc6aa5cSAndroid Build Coastguard Worker done 157*dfc6aa5cSAndroid Build Coastguard Worker for samp in 420 422; do 158*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $PROGARG 159*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 160*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT} 161*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 162*dfc6aa5cSAndroid Build Coastguard Worker else 163*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 164*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 165*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT} 166*dfc6aa5cSAndroid Build Coastguard Worker rm $i 167*dfc6aa5cSAndroid Build Coastguard Worker done 168*dfc6aa5cSAndroid Build Coastguard Worker fi 169*dfc6aa5cSAndroid Build Coastguard Worker done 170*dfc6aa5cSAndroid Build Coastguard Worker done 171*dfc6aa5cSAndroid Build Coastguard Worker 172*dfc6aa5cSAndroid Build Coastguard Worker # Scaled decompression 173*dfc6aa5cSAndroid Build Coastguard Worker for scale in 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8; do 174*dfc6aa5cSAndroid Build Coastguard Worker scalearg=`echo $scale | sed 's/\_/\//g'` 175*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 420 422 444; do 176*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -rgb -scale ${scalearg} $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_${scale}_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg 177*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -scale ${scalearg} -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $PROGARG 178*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT} $OUTDIR/${basename}_${samp}_${scale}_djpeg.${EXT} 179*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT} 180*dfc6aa5cSAndroid Build Coastguard Worker done 181*dfc6aa5cSAndroid Build Coastguard Worker done 182*dfc6aa5cSAndroid Build Coastguard Worker 183*dfc6aa5cSAndroid Build Coastguard Worker # Transforms 184*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 420 422 444; do 185*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -flip horizontal -trim -outfile $OUTDIR/${basename}_${samp}_hflip_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 186*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -flip vertical -trim -outfile $OUTDIR/${basename}_${samp}_vflip_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 187*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -transpose -trim -outfile $OUTDIR/${basename}_${samp}_transpose_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 188*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -transverse -trim -outfile $OUTDIR/${basename}_${samp}_transverse_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 189*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -rotate 90 -trim -outfile $OUTDIR/${basename}_${samp}_rot90_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 190*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -rotate 180 -trim -outfile $OUTDIR/${basename}_${samp}_rot180_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 191*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/jpegtran -rotate 270 -trim -outfile $OUTDIR/${basename}_${samp}_rot270_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg 192*dfc6aa5cSAndroid Build Coastguard Worker done 193*dfc6aa5cSAndroid Build Coastguard Worker for xform in hflip vflip transpose transverse rot90 rot180 rot270; do 194*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 444; do 195*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -rgb $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg 196*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $PROGARG 197*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 198*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} 199*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 200*dfc6aa5cSAndroid Build Coastguard Worker else 201*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 202*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 203*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} 204*dfc6aa5cSAndroid Build Coastguard Worker rm $i 205*dfc6aa5cSAndroid Build Coastguard Worker done 206*dfc6aa5cSAndroid Build Coastguard Worker fi 207*dfc6aa5cSAndroid Build Coastguard Worker done 208*dfc6aa5cSAndroid Build Coastguard Worker for samp in 420 422; do 209*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -nosmooth -rgb $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg 210*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample $YUVARG $ALLOCARG $PROGARG 211*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 212*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} 213*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 214*dfc6aa5cSAndroid Build Coastguard Worker else 215*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 216*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 217*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} 218*dfc6aa5cSAndroid Build Coastguard Worker rm $i 219*dfc6aa5cSAndroid Build Coastguard Worker done 220*dfc6aa5cSAndroid Build Coastguard Worker fi 221*dfc6aa5cSAndroid Build Coastguard Worker done 222*dfc6aa5cSAndroid Build Coastguard Worker done 223*dfc6aa5cSAndroid Build Coastguard Worker 224*dfc6aa5cSAndroid Build Coastguard Worker # Grayscale transform 225*dfc6aa5cSAndroid Build Coastguard Worker for xform in hflip vflip transpose transverse rot90 rot180 rot270; do 226*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 444 422 420; do 227*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 -grayscale $YUVARG $ALLOCARG $PROGARG 228*dfc6aa5cSAndroid Build Coastguard Worker if [ $ALLOC = 1 ]; then 229*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_GRAY_${xform}_jpegtran.${EXT} 230*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT} 231*dfc6aa5cSAndroid Build Coastguard Worker else 232*dfc6aa5cSAndroid Build Coastguard Worker for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*[0-9]x[0-9]*[0-9].${EXT} \ 233*dfc6aa5cSAndroid Build Coastguard Worker $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do 234*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $i $OUTDIR/${basename}_GRAY_${xform}_jpegtran.${EXT} 235*dfc6aa5cSAndroid Build Coastguard Worker rm $i 236*dfc6aa5cSAndroid Build Coastguard Worker done 237*dfc6aa5cSAndroid Build Coastguard Worker fi 238*dfc6aa5cSAndroid Build Coastguard Worker done 239*dfc6aa5cSAndroid Build Coastguard Worker done 240*dfc6aa5cSAndroid Build Coastguard Worker 241*dfc6aa5cSAndroid Build Coastguard Worker # Transforms with scaling 242*dfc6aa5cSAndroid Build Coastguard Worker for xform in hflip vflip transpose transverse rot90 rot180 rot270; do 243*dfc6aa5cSAndroid Build Coastguard Worker for samp in GRAY 444 422 420; do 244*dfc6aa5cSAndroid Build Coastguard Worker for scale in 2_1 15_8 7_4 13_8 3_2 11_8 5_4 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8; do 245*dfc6aa5cSAndroid Build Coastguard Worker scalearg=`echo $scale | sed 's/\_/\//g'` 246*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/djpeg -rgb -scale ${scalearg} $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_${scale}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg 247*dfc6aa5cSAndroid Build Coastguard Worker runme $EXEDIR/tjbench $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -scale ${scalearg} -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $PROGARG 248*dfc6aa5cSAndroid Build Coastguard Worker runme cmp $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT} $OUTDIR/${basename}_${samp}_${xform}_${scale}_jpegtran.${EXT} 249*dfc6aa5cSAndroid Build Coastguard Worker rm $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT} 250*dfc6aa5cSAndroid Build Coastguard Worker done 251*dfc6aa5cSAndroid Build Coastguard Worker done 252*dfc6aa5cSAndroid Build Coastguard Worker done 253*dfc6aa5cSAndroid Build Coastguard Worker 254*dfc6aa5cSAndroid Build Coastguard Workerdone 255*dfc6aa5cSAndroid Build Coastguard Worker 256*dfc6aa5cSAndroid Build Coastguard Workerecho SUCCESS! 257