11 if [ -d $OUTDIR ]; then
23 IMAGES="vgl_5674_0098.${EXT} vgl_6434_0018a.${EXT} vgl_6548_0026a.${EXT} big_tree8.${EXT}"
24 IMGDIR=@CMAKE_CURRENT_SOURCE_DIR@/testimages
25 OUTDIR=`mktemp -d /tmp/__tjbenchtest_output.XXXXXX`
26 EXEDIR=@CMAKE_CURRENT_BINARY_DIR@
27 JAVA="@Java_JAVA_EXECUTABLE@"
28 JAVAARGS="-cp $EXEDIR/java/turbojpeg.jar -Djava.library.path=$EXEDIR"
29 TJBENCH=$EXEDIR/tjbench
41 x24SUBSAMP="422 440 420 411 441"
42 ALLSUBSAMP="444 422 440 420 411 441 GRAY"
44 if [ "$EXT" = "bmp" ]; then BMPARG=-bmp; fi
46 if [ -d $OUTDIR ]; then
51 while [ $# -gt 0 ]; do
57 # NOTE: The combination of tj3EncodeYUV*() and tj3CompressFromYUV*() does not
58 # always produce bitwise-identical results to tj3Compress*() if subsampling is
59 # enabled. In both cases, if the image width or height are not evenly
60 # divisible by the MCU width/height, then the bottom and/or right edge are
61 # expanded. However, the libjpeg code performs this expansion prior to
62 # downsampling, and TurboJPEG performs it in tj3CompressFromYUV*(), which is
63 # after downsampling. Thus, the two will agree only if the width/height along
64 # each downsampled dimension is an odd number or is evenly divisible by the MCU
65 # width/height. This disagreement basically amounts to a round-off error, but
66 # there is no easy way around it, so for now, we just test the only image that
67 # works. (NOTE: big_tree8 does not suffer from the above issue, but it suffers
68 # from an unrelated problem whereby the combination of tj3DecompressToYUV*()
69 # and tj3DecodeYUV*() do not produce bitwise-identical results to
70 # tj3Decompress*() if decompression scaling is enabled. This latter phenomenon
71 # is not yet fully understood but is also believed to be some sort of round-off
73 IMAGES="vgl_6548_0026a.${EXT}"
81 TJBENCH="$JAVA $JAVAARGS TJBench"
87 if [ "$ENTROPYARG" = "-arithmetic" ]; then
88 ENTROPYARG=-progressive-arithmetic
90 ENTROPYARG=-progressive
94 if [ "$ENTROPYARG" = "-progressive" ]; then
95 ENTROPYARG=-progressive-arithmetic
97 ENTROPYARG=-arithmetic
101 LOSSLSARG="-lossless"
111 if [ $PRECISION != 8 ]; then
113 IMAGES="big_building16.${EXT}"
121 if [ $PRECISION = 8 -a "$YUVARG" = "" ]; then
122 if [ "$ENTROPYARG" = "-optimize" ]; then
123 IMAGES="vgl_6434_0018a.${EXT}"
124 elif [ "$ENTROPYARG" = "-progressive" ]; then
125 IMAGES="vgl_6548_0026a.${EXT}"
126 elif [ "$ENTROPYARG" = "-arithmetic" -o \
127 "$ENTROPYARG" = "-progressive-arithmetic" ]; then
128 IMAGES="big_tree8.${EXT}"
132 exec >$EXEDIR/tjbenchtest$JAVAARG$YUVARG$ALLOCARG$ENTROPYARG$LOSSLSARG-$PRECISION.log
134 if [ "$ENTROPYARG" = "-progressive-arithmetic" ]; then
135 ENTROPYARG="-progressive -arithmetic"
139 for image in $IMAGES; do
141 cp $IMGDIR/$image $OUTDIR
142 basename=`basename $image .${EXT}`
143 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -grayscale -outfile $OUTDIR/${basename}_GRAY_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
144 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x4 -outfile $OUTDIR/${basename}_441_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
145 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 4x1 -outfile $OUTDIR/${basename}_411_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
146 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 2x2 -outfile $OUTDIR/${basename}_420_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
147 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x2 -outfile $OUTDIR/${basename}_440_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
148 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 2x1 -outfile $OUTDIR/${basename}_422_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
149 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct fast $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x1 -outfile $OUTDIR/${basename}_444_fast_cjpeg.jpg $IMGDIR/${basename}.${EXT}
150 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -grayscale -outfile $OUTDIR/${basename}_GRAY_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
151 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x4 -outfile $OUTDIR/${basename}_441_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
152 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 4x1 -outfile $OUTDIR/${basename}_411_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
153 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 2x2 -outfile $OUTDIR/${basename}_420_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
154 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x2 -outfile $OUTDIR/${basename}_440_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
155 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 2x1 -outfile $OUTDIR/${basename}_422_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
156 runme $EXEDIR/cjpeg -quality 95 -precision $PRECISION -dct int $ENTROPYARG $LOSSLSARG $LOSSLSPSV -sample 1x1 -outfile $OUTDIR/${basename}_444_accurate_cjpeg.jpg $IMGDIR/${basename}.${EXT}
157 for samp in $ALLSUBSAMP; do
158 runme $EXEDIR/djpeg -dct fast -rgb $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_fast_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg
159 runme $EXEDIR/djpeg -dct int -rgb $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_accurate_djpeg.${EXT} $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
161 for samp in $x24SUBSAMP; do
162 runme $EXEDIR/djpeg -dct fast -nosmooth $BMPARG -outfile $OUTDIR/${basename}_${samp}_fast_nosmooth_djpeg.${EXT} $OUTDIR/${basename}_${samp}_fast_cjpeg.jpg
163 runme $EXEDIR/djpeg -dct int -nosmooth $BMPARG -outfile $OUTDIR/${basename}_${samp}_accurate_nosmooth_djpeg.${EXT} $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
167 for dct in accurate fast; do
169 if [ "${dct}" = "fast" ]; then
172 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -rgb -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
173 if [ "$LOSSLSARG" != "-lossless" ]; then
174 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 440 -rgb -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
175 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 411 -rgb -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
176 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 441 -rgb -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
178 for samp in $ALLSUBSAMP; do
179 if [ "$LOSSLSARG" = "-lossless" ]; then
180 runme cmp $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}.jpg $OUTDIR/${basename}_${samp}_${dct}_cjpeg.jpg
182 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}.jpg $OUTDIR/${basename}_${samp}_${dct}_cjpeg.jpg
187 for dct in fast accurate; do
189 if [ "${dct}" = "fast" ]; then
193 # Tiled compression & decompression
194 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -rgb -tile -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
195 for samp in $x1SUBSAMP; do
196 if [ $ALLOC = 1 ]; then
197 if [ "$LOSSLSARG" = "-lossless" ]; then
198 runme cmp $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
199 rm $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT}
201 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
202 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT}
205 if [ "$LOSSLSARG" = "-lossless" ]; then
206 for i in $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_[0-9]*x[0-9]*.${EXT} \
207 $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT}; do
208 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
212 for i in $OUTDIR/${basename}_${samp}_Q${TJQUAL}_[0-9]*x[0-9]*.${EXT} \
213 $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT}; do
214 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
220 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -rgb -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
221 if [ "$LOSSLSARG" != "-lossless" ]; then
222 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 440 -rgb -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
223 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 411 -rgb -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
224 runme $TJBENCH $OUTDIR/$image $TJQUAL -precision $PRECISION -subsamp 441 -rgb -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
226 for samp in $x24SUBSAMP; do
227 if [ $ALLOC = 1 ]; then
228 if [ "$LOSSLSARG" = "-lossless" ]; then
229 runme cmp $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
230 rm $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT}
232 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
233 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT}
236 if [ "$LOSSLSARG" = "-lossless" ]; then
237 for i in $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_[0-9]*x[0-9]*.${EXT} \
238 $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_full.${EXT}; do
239 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
243 for i in $OUTDIR/${basename}_${samp}_Q${TJQUAL}_[0-9]*x[0-9]*.${EXT} \
244 $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.${EXT}; do
245 # If the tile size is smaller than the MCU size, then there will be
246 # edge artifacts at the tile boundaries, so the decompressed image
247 # will not be identical to the untiled decompressed image.
248 TILESIZE=$(basename $(echo $i | sed 's/.*_//g') .${EXT})
249 if [ "$TILESIZE" = "8x8" ]; then
252 if [ "$TILESIZE" = "16x16" -a \
253 \( "${samp}" = "411" -o "${samp}" = "441" \) ]; then
256 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
263 # Tiled decompression
264 if [ "$LOSSLSARG" != "-lossless" ]; then
265 for samp in $x1SUBSAMP; do
266 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -tile -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG
267 if [ $ALLOC = 1 ]; then
268 runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
269 rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT}
271 for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*x[0-9]*.${EXT} \
272 $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do
273 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_djpeg.${EXT}
278 for samp in $x24SUBSAMP; do
279 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG
280 if [ $ALLOC = 1 ]; then
281 runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
282 rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT}
284 for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*x[0-9]*.${EXT} \
285 $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do
286 TILESIZE=$(basename $(echo $i | sed 's/.*_//g') .${EXT})
287 if [ "$TILESIZE" = "8x8" ]; then
290 if [ "$TILESIZE" = "16x16" -a \
291 \( "${samp}" = "411" -o "${samp}" = "441" \) ]; then
294 runme cmp $i $OUTDIR/${basename}_${samp}_${dct}_nosmooth_djpeg.${EXT}
302 # Partial decompression
303 if [ "$LOSSLSARG" != "-lossless" -a "$YUVARG" != "-yuv" ]; then
304 for samp in $ALLSUBSAMP; do
309 if [ "${samp}" = "411" ]; then
315 runme $EXEDIR/djpeg -rgb -crop ${CROPW8_8}x90+${CROPL8_8}+5 $NSARG -outfile $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
316 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q${TJQUAL}.jpg -crop ${CROPW8_8}x90+${CROPL8_8}+5 -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
317 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
318 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_full.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
320 runme $EXEDIR/djpeg -rgb -scale 7/8 -crop ${CROPW7_8}x81+${CROPL7_8}+3 $NSARG -outfile $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
321 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q${TJQUAL}.jpg -scale 7/8 -crop ${CROPW7_8}x81+${CROPL7_8}+3 -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
322 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_7_8.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
323 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_7_8.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
325 runme $EXEDIR/djpeg -rgb -scale 1/2 -crop 40x40+0+0 $NSARG -outfile $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
326 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q${TJQUAL}.jpg -scale 1/2 -crop 40x40+0+0 -quiet -benchtime 0.01 -warmup 0 ${dctarg} $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
327 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_1_2.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
328 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_1_2.ppm $OUTDIR/${basename}_${samp}_scale_crop_djpeg.ppm
332 # Scaled decompression
333 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
334 scalearg=`echo $scale | sed 's/\_/\//g'`
336 if [ "$LOSSLSARG" = "-lossless" ]; then
339 for samp in $ALLSUBSAMP; do
340 runme $EXEDIR/djpeg -rgb -scale ${scalearg} $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_${scale}_djpeg.${EXT} $OUTDIR/${basename}_${samp}_accurate_cjpeg.jpg
341 if [ "$LOSSLSARG" = "-lossless" ]; then
342 runme $TJBENCH $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}.jpg $BMPARG -scale ${scalearg} -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
343 runme cmp $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_${SCALE}.${EXT} $OUTDIR/${basename}_${samp}_${scale}_djpeg.${EXT}
344 rm $OUTDIR/${basename}_LOSSLS_PSV${TJQUAL}_${SCALE}.${EXT}
346 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q${TJQUAL}.jpg $BMPARG -scale ${scalearg} -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $ENTROPYARG $LOSSLSARG
347 runme cmp $OUTDIR/${basename}_${samp}_Q${TJQUAL}_${SCALE}.${EXT} $OUTDIR/${basename}_${samp}_${scale}_djpeg.${EXT}
348 rm $OUTDIR/${basename}_${samp}_Q${TJQUAL}_${SCALE}.${EXT}
354 if [ "$LOSSLSARG" != "-lossless" ]; then
355 for samp in $ALLSUBSAMP; do
356 runme $EXEDIR/jpegtran -flip horizontal -trim -outfile $OUTDIR/${basename}_${samp}_hflip_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
357 runme $EXEDIR/jpegtran -flip vertical -trim -outfile $OUTDIR/${basename}_${samp}_vflip_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
358 runme $EXEDIR/jpegtran -transpose -trim -outfile $OUTDIR/${basename}_${samp}_transpose_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
359 runme $EXEDIR/jpegtran -transverse -trim -outfile $OUTDIR/${basename}_${samp}_transverse_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
360 runme $EXEDIR/jpegtran -rotate 90 -trim -outfile $OUTDIR/${basename}_${samp}_rot90_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
361 runme $EXEDIR/jpegtran -rotate 180 -trim -outfile $OUTDIR/${basename}_${samp}_rot180_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
362 runme $EXEDIR/jpegtran -rotate 270 -trim -outfile $OUTDIR/${basename}_${samp}_rot270_jpegtran.jpg $OUTDIR/${basename}_${samp}_Q95.jpg
364 for xform in hflip vflip transpose transverse rot90 rot180 rot270; do
365 for samp in $x1SUBSAMP; do
366 runme $EXEDIR/djpeg -rgb $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg
367 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $ENTROPYARG
368 if [ $ALLOC = 1 ]; then
369 runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT}
370 rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT}
372 for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*x[0-9]*.${EXT} \
373 $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do
374 runme cmp $i $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT}
379 for samp in $x24SUBSAMP; do
380 runme $EXEDIR/djpeg -nosmooth -rgb $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg
381 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 -fastupsample $YUVARG $ALLOCARG $ENTROPYARG
382 if [ $ALLOC = 1 ]; then
383 runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT}
384 rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT}
386 for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*x[0-9]*.${EXT} \
387 $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do
388 TILESIZE=$(basename $(echo $i | sed 's/.*_//g') .${EXT})
389 if [ "$TILESIZE" = "8x8" ]; then
392 if [ "$TILESIZE" = "16x16" -a \
393 \( "${samp}" = "411" -o "${samp}" = "441" \) ]; then
396 runme cmp $i $OUTDIR/${basename}_${samp}_${xform}_jpegtran.${EXT}
403 # Grayscale transform
404 for xform in hflip vflip transpose transverse rot90 rot180 rot270; do
405 for samp in $ALLSUBSAMP; do
406 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -tile -quiet -benchtime 0.01 -warmup 0 -grayscale $YUVARG $ALLOCARG $ENTROPYARG
407 if [ $ALLOC = 1 ]; then
408 runme cmp $OUTDIR/${basename}_${samp}_Q95_full.${EXT} $OUTDIR/${basename}_GRAY_${xform}_jpegtran.${EXT}
409 rm $OUTDIR/${basename}_${samp}_Q95_full.${EXT}
411 for i in $OUTDIR/${basename}_${samp}_Q95_[0-9]*x[0-9]*.${EXT} \
412 $OUTDIR/${basename}_${samp}_Q95_full.${EXT}; do
413 TILESIZE=$(basename $(echo $i | sed 's/.*_//g') .${EXT})
414 if [ "$TILESIZE" = "8x8" -a \
415 "${samp}" != "444" -a "${samp}" != "GRAY" ]; then
418 if [ "$TILESIZE" = "16x16" -a \
419 \( "${samp}" = "411" -o "${samp}" = "441" \) ]; then
422 runme cmp $i $OUTDIR/${basename}_GRAY_${xform}_jpegtran.${EXT}
429 # Transforms with scaling
430 for xform in hflip vflip transpose transverse rot90 rot180 rot270; do
431 for samp in $ALLSUBSAMP; do
432 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
433 scalearg=`echo $scale | sed 's/\_/\//g'`
434 runme $EXEDIR/djpeg -rgb -scale ${scalearg} $NSARG $BMPARG -outfile $OUTDIR/${basename}_${samp}_${xform}_${scale}_jpegtran.${EXT} $OUTDIR/${basename}_${samp}_${xform}_jpegtran.jpg
435 runme $TJBENCH $OUTDIR/${basename}_${samp}_Q95.jpg $BMPARG -$xform -scale ${scalearg} -quiet -benchtime 0.01 -warmup 0 $YUVARG $ALLOCARG $ENTROPYARG
436 runme cmp $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT} $OUTDIR/${basename}_${samp}_${xform}_${scale}_jpegtran.${EXT}
437 rm $OUTDIR/${basename}_${samp}_Q95_${scale}.${EXT}