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