private static void doTest(int w, int h, int[] formats, int subsamp, String baseName) throws Exception { TJCompressor tjc = null; TJDecompressor tjd = null; int size; byte[] dstBuf; if (yuv == YUVENCODE) dstBuf = new byte[TJ.bufSizeYUV(w, h, subsamp)]; else dstBuf = new byte[TJ.bufSize(w, h, subsamp)]; try { tjc = new TJCompressor(); tjd = new TJDecompressor(); for (int pf : formats) { for (int i = 0; i < 2; i++) { int flags = 0; if (subsamp == TJ.SAMP_422 || subsamp == TJ.SAMP_420 || subsamp == TJ.SAMP_440) flags |= TJ.FLAG_FASTUPSAMPLE; if (i == 1) { if (yuv == YUVDECODE) { tjc.close(); tjd.close(); return; } else flags |= TJ.FLAG_BOTTOMUP; } size = compTest(tjc, dstBuf, w, h, pf, baseName, subsamp, 100, flags); decompTest(tjd, dstBuf, size, w, h, pf, baseName, subsamp, flags); if (pf >= TJ.PF_RGBX && pf <= TJ.PF_XRGB && !bi) decompTest( tjd, dstBuf, size, w, h, pf + (TJ.PF_RGBA - TJ.PF_RGBX), baseName, subsamp, flags); } } } catch (Exception e) { if (tjc != null) tjc.close(); if (tjd != null) tjd.close(); throw e; } if (tjc != null) tjc.close(); if (tjd != null) tjd.close(); }