Code formatting tweaks


git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@968 632fc199-4ca6-4c93-a231-07263d6284db
diff --git a/java/TJBench.java b/java/TJBench.java
index 2f27b8e..c8cca5f 100644
--- a/java/TJBench.java
+++ b/java/TJBench.java
@@ -32,40 +32,37 @@
 import java.util.*;
 import org.libjpegturbo.turbojpeg.*;
 
-class TJBench
-{
+class TJBench {
+
   static final int YUVENCODE = 1;
   static final int YUVDECODE = 2;
 
   static int flags = 0, yuv = 0, quiet = 0, pf = TJ.PF_BGR;
   static boolean decompOnly, doTile;
 
-  static final String pixFormatStr[] = {
+  static final String[] pixFormatStr = {
     "RGB", "BGR", "RGBX", "BGRX", "XBGR", "XRGB", "GRAY"
   };
 
-  static final String subNameLong[] = {
+  static final String[] subNameLong = {
     "4:4:4", "4:2:2", "4:2:0", "GRAY", "4:4:0"
   };
 
-  static final String subName[] = {
+  static final String[] subName = {
     "444", "422", "420", "GRAY", "440"
   };
 
   static TJScalingFactor sf;
-  static int nsf = 0;
   static int xformOp = TJTransform.OP_NONE, xformOpt = 0;
   static double benchTime = 5.0;
 
 
-  static final double getTime()
-  {
+  static final double getTime() {
     return (double)System.nanoTime() / 1.0e9;
   }
 
 
-  static String sigFig(double val, int figs)
-  {
+  static String sigFig(double val, int figs) {
     String format;
     int digitsAfterDecimal = figs - (int)Math.ceil(Math.log10(Math.abs(val)));
     if (digitsAfterDecimal < 1)
@@ -76,19 +73,18 @@
   }
 
 
-  static byte[] loadImage(String fileName, int[] w, int[] h, int pf)
-                          throws Exception
-  {
+  static byte[] loadImage(String fileName, int[] w, int[] h, int pixelFormat)
+                          throws Exception {
     BufferedImage img = ImageIO.read(new File(fileName));
     if (img == null)
       throw new Exception("Could not read " + fileName);
     w[0] = img.getWidth();
     h[0] = img.getHeight();
-    int rgb[] = img.getRGB(0, 0, w[0], h[0], null, 0, w[0]);
-    int ps = TJ.getPixelSize(pf);
-    int rindex = TJ.getRedOffset(pf);
-    int gindex = TJ.getGreenOffset(pf);
-    int bindex = TJ.getBlueOffset(pf);
+    int[] rgb = img.getRGB(0, 0, w[0], h[0], null, 0, w[0]);
+    int ps = TJ.getPixelSize(pixelFormat);
+    int rindex = TJ.getRedOffset(pixelFormat);
+    int gindex = TJ.getGreenOffset(pixelFormat);
+    int bindex = TJ.getBlueOffset(pixelFormat);
     byte[] dstBuf = new byte[w[0] * h[0] * ps];
     int pixels = w[0] * h[0], dstPtr = 0, rgbPtr = 0;
     while (pixels-- > 0) {
@@ -102,15 +98,14 @@
   }
 
 
-  static void saveImage(String fileName, byte[] srcBuf, int w, int h, int pf)
-    throws Exception
-  {
+  static void saveImage(String fileName, byte[] srcBuf, int w, int h,
+                        int pixelFormat) throws Exception {
     BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
     int pixels = w * h, srcPtr = 0;
-    int ps = TJ.getPixelSize(pf);
-    int rindex = TJ.getRedOffset(pf);
-    int gindex = TJ.getGreenOffset(pf);
-    int bindex = TJ.getBlueOffset(pf);
+    int ps = TJ.getPixelSize(pixelFormat);
+    int rindex = TJ.getRedOffset(pixelFormat);
+    int gindex = TJ.getGreenOffset(pixelFormat);
+    int bindex = TJ.getBlueOffset(pixelFormat);
     for (int y = 0; y < h; y++) {
       for (int x = 0; x < w; x++, srcPtr += ps) {
         int pixel = (srcBuf[srcPtr + rindex] & 0xff) << 16 |
@@ -127,8 +122,7 @@
   static void decompTest(byte[] srcBuf, byte[][] jpegBuf, int[] jpegSize,
                          byte[] dstBuf, int w, int h, int subsamp,
                          int jpegQual, String fileName, int tilew, int tileh)
-                         throws Exception
-  {
+                         throws Exception {
     String qualStr = new String(""), sizeStr, tempStr;
     TJDecompressor tjd;
     double start, elapsed;
@@ -137,12 +131,12 @@
     int scaledw = (yuv == YUVDECODE) ? w : sf.getScaled(w);
     int scaledh = (yuv == YUVDECODE) ? h : sf.getScaled(h);
     int pitch = scaledw * ps;
-  
+
     if (jpegQual > 0)
       qualStr = new String("_Q" + jpegQual);
-  
+
     tjd = new TJDecompressor();
-  
+
     int bufSize = (yuv == YUVDECODE ? yuvSize : pitch * scaledh);
     if (dstBuf == null)
       dstBuf = new byte[bufSize];
@@ -150,18 +144,18 @@
     /* Set the destination buffer to gray so we know whether the decompressor
        attempted to write to it */
     Arrays.fill(dstBuf, (byte)127);
-  
+
     /* Execute once to preload cache */
     tjd.setJPEGImage(jpegBuf[0], jpegSize[0]);
     if (yuv == YUVDECODE)
       tjd.decompressToYUV(dstBuf, flags);
     else
       tjd.decompress(dstBuf, scaledw, pitch, scaledh, pf, flags);
-  
+
     /* Benchmark */
     for (i = 0, start = getTime(); (elapsed = getTime() - start) < benchTime;
          i++) {
-      int tile=0;
+      int tile = 0;
       if (yuv == YUVDECODE)
         tjd.decompressToYUV(dstBuf, flags);
       else {
@@ -188,7 +182,7 @@
       System.out.format("     Dest. throughput:     %f Megapixels/sec\n",
                         (double)(w * h) / 1000000. * (double)i / elapsed);
     }
-  
+
     if (yuv == YUVDECODE) {
       tempStr = fileName + "_" + subName[subsamp] + qualStr + ".yuv";
       FileOutputStream fos = new FileOutputStream(tempStr);
@@ -221,7 +215,8 @@
               int lum = (int)((double)(srcBuf[rindex] & 0xff) * 0.299 +
                               (double)(srcBuf[gindex] & 0xff) * 0.587 +
                               (double)(srcBuf[bindex] & 0xff) * 0.114 + 0.5);
-              if (lum > 255) lum = 255;  if (lum < 0) lum = 0;
+              if (lum > 255) lum = 255;
+              if (lum < 0) lum = 0;
               dstBuf[rindex] = (byte)Math.abs((dstBuf[rindex] & 0xff) - lum);
               dstBuf[gindex] = (byte)Math.abs((dstBuf[gindex] & 0xff) - lum);
               dstBuf[bindex] = (byte)Math.abs((dstBuf[bindex] & 0xff) - lum);
@@ -241,39 +236,38 @@
 
 
   static void doTestYUV(byte[] srcBuf, int w, int h, int subsamp,
-                        String fileName) throws Exception
-  {
+                        String fileName) throws Exception {
     TJCompressor tjc;
     byte[] dstBuf;
     double start, elapsed;
     int ps = TJ.getPixelSize(pf), i;
     int yuvSize = 0;
-  
+
     yuvSize = TJ.bufSizeYUV(w, h, subsamp);
     dstBuf = new byte[yuvSize];
-  
+
     if (quiet == 0)
       System.out.format(">>>>>  %s (%s) <--> YUV %s  <<<<<\n",
         pixFormatStr[pf],
         (flags & TJ.FLAG_BOTTOMUP) != 0 ? "Bottom-up" : "Top-down",
         subNameLong[subsamp]);
-  
+
     if (quiet == 1)
       System.out.format("%s\t%s\t%s\tN/A\t", pixFormatStr[pf],
                         (flags & TJ.FLAG_BOTTOMUP) != 0 ? "BU" : "TD",
                         subNameLong[subsamp]);
-  
+
     tjc = new TJCompressor(srcBuf, w, 0, h, pf);
     tjc.setSubsamp(subsamp);
-  
+
     /* Execute once to preload cache */
     tjc.encodeYUV(dstBuf, flags);
-  
+
     /* Benchmark */
     for (i = 0, start = getTime();
          (elapsed = getTime() - start) < benchTime; i++)
       tjc.encodeYUV(dstBuf, flags);
-  
+
     if (quiet == 1)
       System.out.format("%-4d  %-4d\t", w, h);
     if (quiet != 0) {
@@ -301,11 +295,10 @@
     if (quiet == 0)
       System.out.println("Reference image written to " + tempStr);
   }
-  
+
 
   static void doTest(byte[] srcBuf, int w, int h, int subsamp, int jpegQual,
-                     String fileName) throws Exception
-  {
+                     String fileName) throws Exception {
     TJCompressor tjc;
     byte[] tmpBuf;
     byte[][] jpegBuf;
@@ -313,12 +306,12 @@
     double start, elapsed;
     int totalJpegSize = 0, tilew, tileh, i;
     int ps = TJ.getPixelSize(pf), ntilesw = 1, ntilesh = 1, pitch = w * ps;
-  
+
     if (yuv == YUVENCODE) {
       doTestYUV(srcBuf, w, h, subsamp, fileName);
       return;
     }
- 
+
     tmpBuf = new byte[pitch * h];
 
     if (quiet == 0)
@@ -328,7 +321,7 @@
         subNameLong[subsamp], jpegQual);
 
     tjc = new TJCompressor();
-  
+
     for (tilew = doTile ? 8 : w, tileh = doTile ? 8 : h; ;
          tilew *= 2, tileh *= 2) {
       if (tilew > w)
@@ -340,7 +333,7 @@
 
       jpegBuf = new byte[ntilesw * ntilesh][TJ.bufSize(tilew, tileh, subsamp)];
       jpegSize = new int[ntilesw * ntilesh];
-  
+
       /* Compression test */
       if (quiet == 1)
         System.out.format("%s\t%s\t%s\t%d\t", pixFormatStr[pf],
@@ -354,7 +347,7 @@
 
       /* Execute once to preload cache */
       tjc.compress(jpegBuf[0], flags);
-  
+
       /* Benchmark */
       for (i = 0, start = getTime();
            (elapsed = getTime() - start) < benchTime; i++) {
@@ -403,11 +396,11 @@
         if (quiet == 0)
           System.out.println("Reference image written to " + tempStr);
       }
-  
+
       /* Decompression test */
       decompTest(srcBuf, jpegBuf, jpegSize, tmpBuf, w, h, subsamp, jpegQual,
                  fileName, tilew, tileh);
-  
+
       for (i = 0; i < ntilesw * ntilesh; i++)
         jpegBuf[i] = null;
       jpegBuf = null;  jpegSize = null;
@@ -418,8 +411,7 @@
   }
 
 
-  static void doDecompTest(String fileName) throws Exception
-  {
+  static void doDecompTest(String fileName) throws Exception {
     TJTransformer tjt;
     byte[][] jpegBuf;
     byte[] srcBuf;
@@ -430,7 +422,7 @@
     int ntilesw = 1, ntilesh = 1;
     double start, elapsed;
     int ps = TJ.getPixelSize(pf), tile;
-  
+
     FileInputStream fis = new FileInputStream(fileName);
     int srcSize = (int)fis.getChannel().size();
     srcBuf = new byte[srcSize];
@@ -447,7 +439,7 @@
     w = tjt.getWidth();
     h = tjt.getHeight();
     subsamp = tjt.getSubsamp();
-  
+
     if (quiet == 1) {
       System.out.println("All performance values in Mpixels/sec\n");
       System.out.format("Bitmap\tBitmap\tJPEG\t%s %s \tXform\tComp\tDecomp\n",
@@ -459,7 +451,7 @@
         subNameLong[subsamp], pixFormatStr[pf],
         (flags & TJ.FLAG_BOTTOMUP) != 0 ? "Bottom-up" : "Top-down");
     }
-  
+
     for (int tilew = doTile ? 16 : w, tileh = doTile ? 16 : h; ;
          tilew *= 2, tileh *= 2) {
       if (tilew > w)
@@ -468,7 +460,7 @@
         tileh = h;
       ntilesw = (w + tilew - 1) / tilew;
       ntilesh = (h + tileh - 1) / tileh;
-  
+
       _w = w;  _h = h;  _tilew = tilew;  _tileh = tileh;
       if (quiet == 0) {
         System.out.format("\n%s size: %d x %d", (doTile ? "Tile" : "Image"),
@@ -477,13 +469,13 @@
           System.out.format(" --> %d x %d", sf.getScaled(_w),
                             sf.getScaled(_h));
         System.out.println("");
-      } else if (quiet==1) {
+      } else if (quiet == 1) {
         System.out.format("%s\t%s\t%s\t", pixFormatStr[pf],
                           (flags & TJ.FLAG_BOTTOMUP) != 0 ? "BU" : "TD",
                           subNameLong[subsamp]);
         System.out.format("%-4d  %-4d\t", tilew, tileh);
       }
-  
+
       _subsamp = subsamp;
       if (doTile || xformOp != TJTransform.OP_NONE || xformOpt != 0) {
         if (xformOp == TJTransform.OP_TRANSPOSE ||
@@ -492,7 +484,7 @@
             xformOp == TJTransform.OP_ROT270) {
           _w = h;  _h = w;  _tilew = tileh;  _tileh = tilew;
         }
-  
+
         if ((xformOpt & TJTransform.OPT_GRAY) != 0)
           _subsamp = TJ.SAMP_GRAY;
         if (xformOp == TJTransform.OP_HFLIP ||
@@ -509,8 +501,8 @@
           _h = _h - (_h % TJ.getMCUWidth(_subsamp));
         _ntilesw = (_w + _tilew - 1) / _tilew;
         _ntilesh = (_h + _tileh - 1) / _tileh;
-  
-        TJTransform t[] = new TJTransform[_ntilesw * _ntilesh];
+
+        TJTransform[] t = new TJTransform[_ntilesw * _ntilesh];
         jpegBuf = new byte[_ntilesw * _ntilesh][TJ.bufSize(_tilew, _tileh, subsamp)];
 
         for (y = 0, tile = 0; y < _h; y += _tileh) {
@@ -527,17 +519,17 @@
               jpegBuf[tile] = null;
           }
         }
-  
+
         start = getTime();
         tjt.transform(jpegBuf, t, flags);
         jpegSize = tjt.getTransformedSizes();
         elapsed = getTime() - start;
-  
+
         t = null;
-  
+
         for (tile = 0, totalJpegSize = 0; tile < _ntilesw * _ntilesh; tile++)
           totalJpegSize += jpegSize[tile];
-  
+
         if (quiet != 0) {
           System.out.format("%s%c%s%c",
             sigFig((double)(w * h) / 1000000. / elapsed, 4),
@@ -564,7 +556,7 @@
         jpegSize[0] = srcSize;
         System.arraycopy(srcBuf, 0, jpegBuf[0], 0, srcSize);
       }
-  
+
       if (w == tilew)
         _tilew = _w;
       if (h == tileh)
@@ -574,19 +566,18 @@
                    fileName, _tilew, _tileh);
       else if (quiet == 1)
         System.out.println("N/A");
-  
+
       jpegBuf = null;
       jpegSize = null;
-  
+
       if (tilew == w && tileh == h) break;
     }
   }
-  
-  
-  static void usage() throws Exception
-  {
+
+
+  static void usage() throws Exception {
     int i;
-    TJScalingFactor scalingFactors[] = TJ.getScalingFactors();
+    TJScalingFactor[] scalingFactors = TJ.getScalingFactors();
     int nsf = scalingFactors.length;
     String className = new TJBench().getClass().getName();
 
@@ -639,224 +630,223 @@
     System.out.println("test will be performed for all quality values in the range.\n");
     System.exit(1);
   }
-  
-  
-  public static void main(String argv[])
-  {
+
+
+  public static void main(String[] argv) {
     byte[] srcBuf = null;  int w = 0, h = 0;
     int minQual = -1, maxQual = -1;
     int minArg = 1;  int retval = 0;
 
     try {
 
-    if (argv.length < minArg)
-      usage();
-  
-    String tempStr = argv[0].toLowerCase();
-    if (tempStr.endsWith(".jpg") || tempStr.endsWith(".jpeg"))
-      decompOnly = true;
-  
-    System.out.println("");
-  
-    if (argv.length > minArg) {
-      for (int i = minArg; i < argv.length; i++) {
-        if (argv[i].equalsIgnoreCase("-yuvencode")) {
-          System.out.println("Testing YUV planar encoding\n");
-          yuv = YUVENCODE;  maxQual = minQual = 100;
-        }
-        if (argv[i].equalsIgnoreCase("-yuvdecode")) {
-          System.out.println("Testing YUV planar decoding\n");
-          yuv = YUVDECODE;
-        }
-      }
-    }
-
-    if (!decompOnly && yuv != YUVENCODE) {
-      minArg = 2;
       if (argv.length < minArg)
         usage();
-      try {
-        minQual = Integer.parseInt(argv[1]);
-      } catch (NumberFormatException e) {}
-      if (minQual < 1 || minQual > 100)
-        throw new Exception("Quality must be between 1 and 100.");
-      int dashIndex = argv[1].indexOf('-');
-      if (dashIndex > 0 && argv[1].length() > dashIndex + 1) {
-        try {
-          maxQual = Integer.parseInt(argv[1].substring(dashIndex + 1));
-        } catch (NumberFormatException e) {}
-      }
-      if (maxQual < 1 || maxQual > 100)
-        maxQual = minQual;
-    }
-  
-    if (argv.length > minArg) {
-      for (int i = minArg; i < argv.length; i++) {
-        if (argv[i].equalsIgnoreCase("-tile")) {
-          doTile = true;  xformOpt |= TJTransform.OPT_CROP;
-        }
-        if (argv[i].equalsIgnoreCase("-forcesse3")) {
-          System.out.println("Forcing SSE3 code\n");
-          flags |= TJ.FLAG_FORCESSE3;
-        }
-        if (argv[i].equalsIgnoreCase("-forcesse2")) {
-          System.out.println("Forcing SSE2 code\n");
-          flags |= TJ.FLAG_FORCESSE2;
-        }
-        if (argv[i].equalsIgnoreCase("-forcesse")) {
-          System.out.println("Forcing SSE code\n");
-          flags |= TJ.FLAG_FORCESSE;
-        }
-        if (argv[i].equalsIgnoreCase("-forcemmx")) {
-          System.out.println("Forcing MMX code\n");
-          flags |= TJ.FLAG_FORCEMMX;
-        }
-        if (argv[i].equalsIgnoreCase("-fastupsample")) {
-          System.out.println("Using fast upsampling code\n");
-          flags |= TJ.FLAG_FASTUPSAMPLE;
-        }
-        if (argv[i].equalsIgnoreCase("-fastdct")) {
-          System.out.println("Using fastest DCT/IDCT algorithm\n");
-          flags |= TJ.FLAG_FASTDCT;
-        }
-        if (argv[i].equalsIgnoreCase("-accuratedct")) {
-          System.out.println("Using most accurate DCT/IDCT algorithm\n");
-          flags |= TJ.FLAG_ACCURATEDCT;
-        }
-        if (argv[i].equalsIgnoreCase("-rgb"))
-          pf = TJ.PF_RGB;
-        if (argv[i].equalsIgnoreCase("-rgbx"))
-          pf = TJ.PF_RGBX;
-        if (argv[i].equalsIgnoreCase("-bgr"))
-          pf = TJ.PF_BGR;
-        if (argv[i].equalsIgnoreCase("-bgrx"))
-          pf = TJ.PF_BGRX;
-        if (argv[i].equalsIgnoreCase("-xbgr"))
-          pf = TJ.PF_XBGR;
-        if (argv[i].equalsIgnoreCase("-xrgb"))
-          pf = TJ.PF_XRGB;
-        if (argv[i].equalsIgnoreCase("-bottomup"))
-          flags |= TJ.FLAG_BOTTOMUP;
-        if (argv[i].equalsIgnoreCase("-quiet"))
-          quiet = 1;
-        if (argv[i].equalsIgnoreCase("-qq"))
-          quiet = 2;
-        if (argv[i].equalsIgnoreCase("-scale") && i < argv.length - 1) {
-          int temp1 = 0, temp2 = 0;
-          boolean match = false, scanned = true;
-          Scanner scanner = new Scanner(argv[++i]).useDelimiter("/");
-          try {
-            temp1 = scanner.nextInt();
-            temp2 = scanner.nextInt();
-          } catch(Exception e) {}
-          if (temp2 <= 0) temp2 = 1;
-          if (temp1 > 0) {
-            TJScalingFactor scalingFactors[] = TJ.getScalingFactors();
-            for (int j = 0; j < scalingFactors.length; j++) {
-              if ((double)temp1 / (double)temp2 ==
-                  (double)scalingFactors[j].getNum() /
-                  (double)scalingFactors[j].getDenom()) {
-                sf = scalingFactors[j];
-                match = true;   break;
-              }
-            }
-            if (!match) usage();
-          } else
-            usage();
-        }
-        if (argv[i].equalsIgnoreCase("-hflip"))
-          xformOp = TJTransform.OP_HFLIP;
-        if (argv[i].equalsIgnoreCase("-vflip"))
-          xformOp = TJTransform.OP_VFLIP;
-        if (argv[i].equalsIgnoreCase("-transpose"))
-          xformOp = TJTransform.OP_TRANSPOSE;
-        if (argv[i].equalsIgnoreCase("-transverse"))
-          xformOp = TJTransform.OP_TRANSVERSE;
-        if (argv[i].equalsIgnoreCase("-rot90"))
-          xformOp = TJTransform.OP_ROT90;
-        if (argv[i].equalsIgnoreCase("-rot180"))
-          xformOp = TJTransform.OP_ROT180;
-        if (argv[i].equalsIgnoreCase("-rot270"))
-          xformOp = TJTransform.OP_ROT270;
-        if (argv[i].equalsIgnoreCase("-grayscale"))
-          xformOpt |= TJTransform.OPT_GRAY;
-        if (argv[i].equalsIgnoreCase("-nooutput"))
-          xformOpt |= TJTransform.OPT_NOOUTPUT;
-        if (argv[i].equalsIgnoreCase("-benchtime") && i < argv.length - 1) {
-          double temp = -1;
-          try {
-            temp = Double.parseDouble(argv[++i]);
-          } catch (NumberFormatException e) {}
-          if (temp > 0.0)
-            benchTime = temp;
-          else
-            usage();
-        }
-        if (argv[i].equalsIgnoreCase("-?"))
-          usage();
-      }
-    }
 
-    if (sf == null)
-      sf = new TJScalingFactor(1, 1);
-  
-    if ((sf.getNum() != 1 || sf.getDenom() != 1) && doTile) {
-      System.out.println("Disabling tiled compression/decompression tests, because those tests do not");
-      System.out.println("work when scaled decompression is enabled.");
-      doTile = false;
-    }
-  
-    if (yuv != 0 && doTile) {
-      System.out.println("Disabling tiled compression/decompression tests, because those tests do not");
-      System.out.println("work when YUV encoding or decoding is enabled.\n");
-      doTile = false;
-    }
-  
-    if (!decompOnly) {
-      int[] width = new int[1], height = new int[1];
-      srcBuf = loadImage(argv[0], width, height, pf);
-      w = width[0];  h = height[0];
-      int index = -1;
-      if ((index = argv[0].indexOf('.')) >= 0)
-        argv[0] = argv[0].substring(0, index);
-    }
-  
-    if (quiet == 1 && !decompOnly) {
-      System.out.println("All performance values in Mpixels/sec\n");
-      System.out.format("Bitmap\tBitmap\tJPEG\tJPEG\t%s %s \tComp\tComp\tDecomp\n",
-        (doTile ? "Tile " : "Image"), (doTile ? "Tile " : "Image"));
-      System.out.println("Format\tOrder\tSubsamp\tQual\tWidth Height\tPerf \tRatio\tPerf\n");
-    }
-  
-    if (decompOnly) {
-      doDecompTest(argv[0]);
+      String tempStr = argv[0].toLowerCase();
+      if (tempStr.endsWith(".jpg") || tempStr.endsWith(".jpeg"))
+        decompOnly = true;
+
       System.out.println("");
-      System.exit(retval);
-    }
 
-    System.gc();
-    for (int i = maxQual; i >= minQual; i--)
-      doTest(srcBuf, w, h, TJ.SAMP_GRAY, i, argv[0]);
-    System.out.println("");
-    System.gc();
-    for (int i = maxQual; i >= minQual; i--)
-      doTest(srcBuf, w, h, TJ.SAMP_420, i, argv[0]);
-    System.out.println("");
-    System.gc();
-    for (int i = maxQual; i >= minQual; i--)
-      doTest(srcBuf, w, h, TJ.SAMP_422, i, argv[0]);
-    System.out.println("");
-    System.gc();
-    for (int i = maxQual; i >= minQual; i--)
-      doTest(srcBuf, w, h, TJ.SAMP_444, i, argv[0]);
-    System.out.println("");
+      if (argv.length > minArg) {
+        for (int i = minArg; i < argv.length; i++) {
+          if (argv[i].equalsIgnoreCase("-yuvencode")) {
+            System.out.println("Testing YUV planar encoding\n");
+            yuv = YUVENCODE;  maxQual = minQual = 100;
+          }
+          if (argv[i].equalsIgnoreCase("-yuvdecode")) {
+            System.out.println("Testing YUV planar decoding\n");
+            yuv = YUVDECODE;
+          }
+        }
+      }
+
+      if (!decompOnly && yuv != YUVENCODE) {
+        minArg = 2;
+        if (argv.length < minArg)
+          usage();
+        try {
+          minQual = Integer.parseInt(argv[1]);
+        } catch (NumberFormatException e) {}
+        if (minQual < 1 || minQual > 100)
+          throw new Exception("Quality must be between 1 and 100.");
+        int dashIndex = argv[1].indexOf('-');
+        if (dashIndex > 0 && argv[1].length() > dashIndex + 1) {
+          try {
+            maxQual = Integer.parseInt(argv[1].substring(dashIndex + 1));
+          } catch (NumberFormatException e) {}
+        }
+        if (maxQual < 1 || maxQual > 100)
+          maxQual = minQual;
+      }
+
+      if (argv.length > minArg) {
+        for (int i = minArg; i < argv.length; i++) {
+          if (argv[i].equalsIgnoreCase("-tile")) {
+            doTile = true;  xformOpt |= TJTransform.OPT_CROP;
+          }
+          if (argv[i].equalsIgnoreCase("-forcesse3")) {
+            System.out.println("Forcing SSE3 code\n");
+            flags |= TJ.FLAG_FORCESSE3;
+          }
+          if (argv[i].equalsIgnoreCase("-forcesse2")) {
+            System.out.println("Forcing SSE2 code\n");
+            flags |= TJ.FLAG_FORCESSE2;
+          }
+          if (argv[i].equalsIgnoreCase("-forcesse")) {
+            System.out.println("Forcing SSE code\n");
+            flags |= TJ.FLAG_FORCESSE;
+          }
+          if (argv[i].equalsIgnoreCase("-forcemmx")) {
+            System.out.println("Forcing MMX code\n");
+            flags |= TJ.FLAG_FORCEMMX;
+          }
+          if (argv[i].equalsIgnoreCase("-fastupsample")) {
+            System.out.println("Using fast upsampling code\n");
+            flags |= TJ.FLAG_FASTUPSAMPLE;
+          }
+          if (argv[i].equalsIgnoreCase("-fastdct")) {
+            System.out.println("Using fastest DCT/IDCT algorithm\n");
+            flags |= TJ.FLAG_FASTDCT;
+          }
+          if (argv[i].equalsIgnoreCase("-accuratedct")) {
+            System.out.println("Using most accurate DCT/IDCT algorithm\n");
+            flags |= TJ.FLAG_ACCURATEDCT;
+          }
+          if (argv[i].equalsIgnoreCase("-rgb"))
+            pf = TJ.PF_RGB;
+          if (argv[i].equalsIgnoreCase("-rgbx"))
+            pf = TJ.PF_RGBX;
+          if (argv[i].equalsIgnoreCase("-bgr"))
+            pf = TJ.PF_BGR;
+          if (argv[i].equalsIgnoreCase("-bgrx"))
+            pf = TJ.PF_BGRX;
+          if (argv[i].equalsIgnoreCase("-xbgr"))
+            pf = TJ.PF_XBGR;
+          if (argv[i].equalsIgnoreCase("-xrgb"))
+            pf = TJ.PF_XRGB;
+          if (argv[i].equalsIgnoreCase("-bottomup"))
+            flags |= TJ.FLAG_BOTTOMUP;
+          if (argv[i].equalsIgnoreCase("-quiet"))
+            quiet = 1;
+          if (argv[i].equalsIgnoreCase("-qq"))
+            quiet = 2;
+          if (argv[i].equalsIgnoreCase("-scale") && i < argv.length - 1) {
+            int temp1 = 0, temp2 = 0;
+            boolean match = false, scanned = true;
+            Scanner scanner = new Scanner(argv[++i]).useDelimiter("/");
+            try {
+              temp1 = scanner.nextInt();
+              temp2 = scanner.nextInt();
+            } catch(Exception e) {}
+            if (temp2 <= 0) temp2 = 1;
+            if (temp1 > 0) {
+              TJScalingFactor[] scalingFactors = TJ.getScalingFactors();
+              for (int j = 0; j < scalingFactors.length; j++) {
+                if ((double)temp1 / (double)temp2 ==
+                    (double)scalingFactors[j].getNum() /
+                    (double)scalingFactors[j].getDenom()) {
+                  sf = scalingFactors[j];
+                  match = true;   break;
+                }
+              }
+              if (!match) usage();
+            } else
+              usage();
+          }
+          if (argv[i].equalsIgnoreCase("-hflip"))
+            xformOp = TJTransform.OP_HFLIP;
+          if (argv[i].equalsIgnoreCase("-vflip"))
+            xformOp = TJTransform.OP_VFLIP;
+          if (argv[i].equalsIgnoreCase("-transpose"))
+            xformOp = TJTransform.OP_TRANSPOSE;
+          if (argv[i].equalsIgnoreCase("-transverse"))
+            xformOp = TJTransform.OP_TRANSVERSE;
+          if (argv[i].equalsIgnoreCase("-rot90"))
+            xformOp = TJTransform.OP_ROT90;
+          if (argv[i].equalsIgnoreCase("-rot180"))
+            xformOp = TJTransform.OP_ROT180;
+          if (argv[i].equalsIgnoreCase("-rot270"))
+            xformOp = TJTransform.OP_ROT270;
+          if (argv[i].equalsIgnoreCase("-grayscale"))
+            xformOpt |= TJTransform.OPT_GRAY;
+          if (argv[i].equalsIgnoreCase("-nooutput"))
+            xformOpt |= TJTransform.OPT_NOOUTPUT;
+          if (argv[i].equalsIgnoreCase("-benchtime") && i < argv.length - 1) {
+            double temp = -1;
+            try {
+              temp = Double.parseDouble(argv[++i]);
+            } catch (NumberFormatException e) {}
+            if (temp > 0.0)
+              benchTime = temp;
+            else
+              usage();
+          }
+          if (argv[i].equalsIgnoreCase("-?"))
+            usage();
+        }
+      }
+
+      if (sf == null)
+        sf = new TJScalingFactor(1, 1);
+
+      if ((sf.getNum() != 1 || sf.getDenom() != 1) && doTile) {
+        System.out.println("Disabling tiled compression/decompression tests, because those tests do not");
+        System.out.println("work when scaled decompression is enabled.");
+        doTile = false;
+      }
+
+      if (yuv != 0 && doTile) {
+        System.out.println("Disabling tiled compression/decompression tests, because those tests do not");
+        System.out.println("work when YUV encoding or decoding is enabled.\n");
+        doTile = false;
+      }
+
+      if (!decompOnly) {
+        int[] width = new int[1], height = new int[1];
+        srcBuf = loadImage(argv[0], width, height, pf);
+        w = width[0];  h = height[0];
+        int index = -1;
+        if ((index = argv[0].indexOf('.')) >= 0)
+          argv[0] = argv[0].substring(0, index);
+      }
+
+      if (quiet == 1 && !decompOnly) {
+        System.out.println("All performance values in Mpixels/sec\n");
+        System.out.format("Bitmap\tBitmap\tJPEG\tJPEG\t%s %s \tComp\tComp\tDecomp\n",
+          (doTile ? "Tile " : "Image"), (doTile ? "Tile " : "Image"));
+        System.out.println("Format\tOrder\tSubsamp\tQual\tWidth Height\tPerf \tRatio\tPerf\n");
+      }
+
+      if (decompOnly) {
+        doDecompTest(argv[0]);
+        System.out.println("");
+        System.exit(retval);
+      }
+
+      System.gc();
+      for (int i = maxQual; i >= minQual; i--)
+        doTest(srcBuf, w, h, TJ.SAMP_GRAY, i, argv[0]);
+      System.out.println("");
+      System.gc();
+      for (int i = maxQual; i >= minQual; i--)
+        doTest(srcBuf, w, h, TJ.SAMP_420, i, argv[0]);
+      System.out.println("");
+      System.gc();
+      for (int i = maxQual; i >= minQual; i--)
+        doTest(srcBuf, w, h, TJ.SAMP_422, i, argv[0]);
+      System.out.println("");
+      System.gc();
+      for (int i = maxQual; i >= minQual; i--)
+        doTest(srcBuf, w, h, TJ.SAMP_444, i, argv[0]);
+      System.out.println("");
 
     } catch (Exception e) {
       System.out.println("ERROR: " + e.getMessage());
       e.printStackTrace();
       retval = -1;
     }
-  
+
     System.exit(retval);
   }
 
diff --git a/java/TJExample.java b/java/TJExample.java
index 1480941..a4971a4 100644
--- a/java/TJExample.java
+++ b/java/TJExample.java
@@ -51,12 +51,15 @@
     System.out.println("Options:\n");
     System.out.println("-scale M/N = if the input image is a JPEG file, scale the width/height of the");
     System.out.print("             output image by a factor of M/N (M/N = ");
-    for(int i = 0; i < sf.length; i++) {
+    for (int i = 0; i < sf.length; i++) {
       System.out.print(sf[i].getNum() + "/" + sf[i].getDenom());
-      if(sf.length == 2 && i != sf.length - 1) System.out.print(" or ");
-      else if(sf.length > 2) {
-        if(i != sf.length - 1) System.out.print(", ");
-        if(i == sf.length - 2) System.out.print("or ");
+      if (sf.length == 2 && i != sf.length - 1)
+        System.out.print(" or ");
+      else if (sf.length > 2) {
+        if (i != sf.length - 1)
+          System.out.print(", ");
+        if (i == sf.length - 2)
+          System.out.print("or ");
       }
     }
     System.out.println(")\n");
@@ -90,13 +93,14 @@
     System.exit(1);
   }
 
-  private final static String sampName[] = {
+  private static final String[] sampName = {
     "4:4:4", "4:2:2", "4:2:0", "Grayscale", "4:4:0"
   };
 
-  public static void main(String argv[]) {
+  public static void main(String[] argv) {
 
-    BufferedImage img = null;  byte[] bmpBuf = null;
+    BufferedImage img = null;
+    byte[] bmpBuf = null;
     TJTransform xform = new TJTransform();
     int flags = 0;
 
@@ -104,7 +108,7 @@
 
       sf = TJ.getScalingFactors();
 
-      if(argv.length < 2) {
+      if (argv.length < 2) {
         usage();
       }
 
@@ -113,119 +117,134 @@
       int outSubsamp = -1, outQual = 95;
       boolean display = false;
 
-      if(argv.length > 1) {
-        for(int i = 1; i < argv.length; i++) {
-          if(argv[i].length() < 2) continue;
-          if(argv[i].length() > 2
-            && argv[i].substring(0, 3).equalsIgnoreCase("-sc")) {
+      if (argv.length > 1) {
+        for (int i = 1; i < argv.length; i++) {
+          if (argv[i].length() < 2)
+            continue;
+          if (argv[i].length() > 2 &&
+              argv[i].substring(0, 3).equalsIgnoreCase("-sc")) {
             int match = 0;
-            if(i < argv.length - 1) {
+            if (i < argv.length - 1) {
               String[] scaleArg = argv[++i].split("/");
-              if(scaleArg.length == 2) {
+              if (scaleArg.length == 2) {
                 TJScalingFactor tempsf =
                   new TJScalingFactor(Integer.parseInt(scaleArg[0]),
-                    Integer.parseInt(scaleArg[1]));
-                for(int j = 0; j < sf.length; j++) {
-                  if(tempsf.equals(sf[j])) {
+                                      Integer.parseInt(scaleArg[1]));
+                for (int j = 0; j < sf.length; j++) {
+                  if (tempsf.equals(sf[j])) {
                     scaleFactor = sf[j];
-                    match = 1;  break;
+                    match = 1;
+                    break;
                   }
                 }
               }
             }
-            if(match != 1) usage();
+            if (match != 1) usage();
           }
-          if(argv[i].equalsIgnoreCase("-h") || argv[i].equalsIgnoreCase("-?"))
+          if (argv[i].equalsIgnoreCase("-h") || argv[i].equalsIgnoreCase("-?"))
             usage();
-          if(argv[i].length() > 2
-            && argv[i].substring(0, 3).equalsIgnoreCase("-sa")) {
-            if(i < argv.length - 1) {
+          if (argv[i].length() > 2 &&
+              argv[i].substring(0, 3).equalsIgnoreCase("-sa")) {
+            if (i < argv.length - 1) {
               i++;
-              if(argv[i].substring(0, 1).equalsIgnoreCase("g"))
+              if (argv[i].substring(0, 1).equalsIgnoreCase("g"))
                 outSubsamp = TJ.SAMP_GRAY;
-              else if(argv[i].equals("444")) outSubsamp = TJ.SAMP_444;
-              else if(argv[i].equals("422")) outSubsamp = TJ.SAMP_422;
-              else if(argv[i].equals("420")) outSubsamp = TJ.SAMP_420;
-              else usage();
-            }
-            else usage();
+              else if (argv[i].equals("444"))
+                outSubsamp = TJ.SAMP_444;
+              else if (argv[i].equals("422"))
+                outSubsamp = TJ.SAMP_422;
+              else if (argv[i].equals("420"))
+                outSubsamp = TJ.SAMP_420;
+              else
+                usage();
+            } else
+              usage();
           }
-          if(argv[i].substring(0, 2).equalsIgnoreCase("-q")) {
-            if(i < argv.length - 1) {
+          if (argv[i].substring(0, 2).equalsIgnoreCase("-q")) {
+            if (i < argv.length - 1) {
               int qual = Integer.parseInt(argv[++i]);
-              if(qual >= 1 && qual <= 100) outQual = qual;
-              else usage();
-            }
-            else usage();
+              if (qual >= 1 && qual <= 100)
+                outQual = qual;
+              else
+                usage();
+            } else
+              usage();
           }
-          if(argv[i].substring(0, 2).equalsIgnoreCase("-g"))
+          if (argv[i].substring(0, 2).equalsIgnoreCase("-g"))
             xform.options |= TJTransform.OPT_GRAY;
-          if(argv[i].equalsIgnoreCase("-hflip"))
+          if (argv[i].equalsIgnoreCase("-hflip"))
             xform.op = TJTransform.OP_HFLIP;
-          if(argv[i].equalsIgnoreCase("-vflip"))
+          if (argv[i].equalsIgnoreCase("-vflip"))
             xform.op = TJTransform.OP_VFLIP;
-          if(argv[i].equalsIgnoreCase("-transpose"))
+          if (argv[i].equalsIgnoreCase("-transpose"))
             xform.op = TJTransform.OP_TRANSPOSE;
-          if(argv[i].equalsIgnoreCase("-transverse"))
+          if (argv[i].equalsIgnoreCase("-transverse"))
             xform.op = TJTransform.OP_TRANSVERSE;
-          if(argv[i].equalsIgnoreCase("-rot90"))
+          if (argv[i].equalsIgnoreCase("-rot90"))
             xform.op = TJTransform.OP_ROT90;
-          if(argv[i].equalsIgnoreCase("-rot180"))
+          if (argv[i].equalsIgnoreCase("-rot180"))
             xform.op = TJTransform.OP_ROT180;
-          if(argv[i].equalsIgnoreCase("-rot270"))
+          if (argv[i].equalsIgnoreCase("-rot270"))
             xform.op = TJTransform.OP_ROT270;
-          if(argv[i].equalsIgnoreCase("-custom"))
+          if (argv[i].equalsIgnoreCase("-custom"))
             xform.cf = new TJExample();
-          else if(argv[i].length() > 2
-            && argv[i].substring(0, 2).equalsIgnoreCase("-c")) {
-            if(i >= argv.length - 1) usage();
+          else if (argv[i].length() > 2 &&
+                   argv[i].substring(0, 2).equalsIgnoreCase("-c")) {
+            if (i >= argv.length - 1)
+              usage();
             String[] cropArg = argv[++i].split(",");
-            if(cropArg.length != 3) usage();
+            if (cropArg.length != 3)
+              usage();
             String[] dimArg = cropArg[2].split("[xX]");
-            if(dimArg.length != 2) usage();
+            if (dimArg.length != 2)
+              usage();
             int tempx = Integer.parseInt(cropArg[0]);
             int tempy = Integer.parseInt(cropArg[1]);
             int tempw = Integer.parseInt(dimArg[0]);
             int temph = Integer.parseInt(dimArg[1]);
-            if(tempx < 0 || tempy < 0 || tempw < 0 || temph < 0) usage();
-            xform.x = tempx;  xform.y = tempy;
-            xform.width = tempw;  xform.height = temph;
+            if (tempx < 0 || tempy < 0 || tempw < 0 || temph < 0)
+              usage();
+            xform.x = tempx;
+            xform.y = tempy;
+            xform.width = tempw;
+            xform.height = temph;
             xform.options |= TJTransform.OPT_CROP;
           }
-          if(argv[i].substring(0, 2).equalsIgnoreCase("-d"))
+          if (argv[i].substring(0, 2).equalsIgnoreCase("-d"))
             display = true;
-          if(argv[i].equalsIgnoreCase("-fastupsample")) {
+          if (argv[i].equalsIgnoreCase("-fastupsample")) {
             System.out.println("Using fast upsampling code");
             flags |= TJ.FLAG_FASTUPSAMPLE;
           }
-          if(argv[i].equalsIgnoreCase("-fastdct")) {
+          if (argv[i].equalsIgnoreCase("-fastdct")) {
             System.out.println("Using fastest DCT/IDCT algorithm");
             flags |= TJ.FLAG_FASTDCT;
           }
-          if(argv[i].equalsIgnoreCase("-accuratedct")) {
+          if (argv[i].equalsIgnoreCase("-accuratedct")) {
             System.out.println("Using most accurate DCT/IDCT algorithm");
             flags |= TJ.FLAG_ACCURATEDCT;
           }
         }
       }
       String[] inFileTokens = argv[0].split("\\.");
-      if(inFileTokens.length > 1)
+      if (inFileTokens.length > 1)
         inFormat = inFileTokens[inFileTokens.length - 1];
       String[] outFileTokens;
-      if(display) outFormat = "bmp";
+      if (display)
+        outFormat = "bmp";
       else {
         outFileTokens = argv[1].split("\\.");
-        if(outFileTokens.length > 1)
+        if (outFileTokens.length > 1)
           outFormat = outFileTokens[outFileTokens.length - 1];
       }
 
       File file = new File(argv[0]);
       int width, height;
 
-      if(inFormat.equalsIgnoreCase("jpg")) {
+      if (inFormat.equalsIgnoreCase("jpg")) {
         FileInputStream fis = new FileInputStream(file);
         int inputSize = fis.available();
-        if(inputSize < 1) {
+        if (inputSize < 1) {
           System.out.println("Input file contains no data");
           System.exit(1);
         }
@@ -234,27 +253,28 @@
         fis.close();
 
         TJDecompressor tjd;
-        if(xform.op != TJTransform.OP_NONE || xform.options != 0
-          || xform.cf != null) {
+        if (xform.op != TJTransform.OP_NONE || xform.options != 0 ||
+            xform.cf != null) {
           TJTransformer tjt = new TJTransformer(inputBuf);
-          TJTransform t[] = new TJTransform[1];
+          TJTransform[] t = new TJTransform[1];
           t[0] = xform;
           t[0].options |= TJTransform.OPT_TRIM;
           TJDecompressor[] tjdx = tjt.transform(t, 0);
           tjd = tjdx[0];
-        }
-        else tjd = new TJDecompressor(inputBuf);
+        } else
+          tjd = new TJDecompressor(inputBuf);
 
         width = tjd.getWidth();
         height = tjd.getHeight();
         int inSubsamp = tjd.getSubsamp();
-        System.out.println("Source Image: " + width + " x " + height
-          + " pixels, " + sampName[inSubsamp] + " subsampling");
-        if(outSubsamp < 0) outSubsamp = inSubsamp;
+        System.out.println("Source Image: " + width + " x " + height +
+                           " pixels, " + sampName[inSubsamp] + " subsampling");
+        if (outSubsamp < 0)
+          outSubsamp = inSubsamp;
 
-        if(outFormat.equalsIgnoreCase("jpg")
-          && (xform.op != TJTransform.OP_NONE || xform.options != 0)
-          && scaleFactor.isOne()) {
+        if (outFormat.equalsIgnoreCase("jpg") &&
+            (xform.op != TJTransform.OP_NONE || xform.options != 0) &&
+            scaleFactor.isOne()) {
           file = new File(argv[1]);
           FileOutputStream fos = new FileOutputStream(file);
           fos.write(tjd.getJPEGBuf(), 0, tjd.getJPEGSize());
@@ -265,45 +285,45 @@
         width = scaleFactor.getScaled(width);
         height = scaleFactor.getScaled(height);
 
-        if(!outFormat.equalsIgnoreCase("jpg"))
+        if (!outFormat.equalsIgnoreCase("jpg"))
           img = tjd.decompress(width, height, BufferedImage.TYPE_INT_RGB,
                                flags);
-        else bmpBuf = tjd.decompress(width, 0, height, TJ.PF_BGRX, flags);
+        else
+          bmpBuf = tjd.decompress(width, 0, height, TJ.PF_BGRX, flags);
         tjd.close();
-      }
-      else {
+      } else {
         img = ImageIO.read(file);
         if (img == null)
           throw new Exception("Input image type not supported.");
         width = img.getWidth();
         height = img.getHeight();
-        if(outSubsamp < 0) {
-          if(img.getType() == BufferedImage.TYPE_BYTE_GRAY)
+        if (outSubsamp < 0) {
+          if (img.getType() == BufferedImage.TYPE_BYTE_GRAY)
             outSubsamp = TJ.SAMP_GRAY;
-          else outSubsamp = TJ.SAMP_444;
+          else
+            outSubsamp = TJ.SAMP_444;
         }
       }
       System.gc();
-      if(!display)
-        System.out.print("Dest. Image (" + outFormat + "):  " + width + " x "
-          + height + " pixels");
+      if (!display)
+        System.out.print("Dest. Image (" + outFormat + "):  " + width + " x " +
+                         height + " pixels");
 
-      if(display) {
+      if (display) {
         ImageIcon icon = new ImageIcon(img);
         JLabel label = new JLabel(icon, JLabel.CENTER);
         JOptionPane.showMessageDialog(null, label, "Output Image",
-          JOptionPane.PLAIN_MESSAGE);
-      }
-      else if(outFormat.equalsIgnoreCase("jpg")) {
-        System.out.println(", " + sampName[outSubsamp]
-          + " subsampling, quality = " + outQual);
+                                      JOptionPane.PLAIN_MESSAGE);
+      } else if (outFormat.equalsIgnoreCase("jpg")) {
+        System.out.println(", " + sampName[outSubsamp] +
+                           " subsampling, quality = " + outQual);
         TJCompressor tjc = new TJCompressor();
         int jpegSize;
         byte[] jpegBuf;
 
         tjc.setSubsamp(outSubsamp);
         tjc.setJPEGQuality(outQual);
-        if(img != null)
+        if (img != null)
           jpegBuf = tjc.compress(img, flags);
         else {
           tjc.setSourceImage(bmpBuf, width, 0, height, TJ.PF_BGRX);
@@ -316,27 +336,26 @@
         FileOutputStream fos = new FileOutputStream(file);
         fos.write(jpegBuf, 0, jpegSize);
         fos.close();
-      }
-      else {
+      } else {
         System.out.print("\n");
         file = new File(argv[1]);
         ImageIO.write(img, outFormat, file);
       }
 
-    }
-    catch(Exception e) {
+    } catch(Exception e) {
       e.printStackTrace();
       System.exit(-1);
     }
   }
 
   public void customFilter(ShortBuffer coeffBuffer, Rectangle bufferRegion,
-    Rectangle planeRegion, int componentIndex, int transformIndex,
-    TJTransform transform) throws Exception {
-    for(int i=0; i<bufferRegion.width*bufferRegion.height; i++) {
-	    coeffBuffer.put(i, (short)(-coeffBuffer.get(i)));
+                           Rectangle planeRegion, int componentIndex,
+                           int transformIndex, TJTransform transform)
+                           throws Exception {
+    for (int i = 0; i < bufferRegion.width * bufferRegion.height; i++) {
+      coeffBuffer.put(i, (short)(-coeffBuffer.get(i)));
     }
   }
 
-  static TJScalingFactor sf [] = null;
+  static TJScalingFactor[] sf = null;
 };
diff --git a/java/TJUnitTest.java b/java/TJUnitTest.java
index b88b28e..d0a609a 100644
--- a/java/TJUnitTest.java
+++ b/java/TJUnitTest.java
@@ -50,48 +50,48 @@
     System.exit(1);
   }
 
-  private final static String subNameLong[] = {
+  private static final String[] subNameLong = {
     "4:4:4", "4:2:2", "4:2:0", "GRAY", "4:4:0"
   };
-  private final static String subName[] = {
+  private static final String[] subName = {
     "444", "422", "420", "GRAY", "440"
   };
 
-  private final static String pixFormatStr[] = {
+  private static final String[] pixFormatStr = {
     "RGB", "BGR", "RGBX", "BGRX", "XBGR", "XRGB", "Grayscale",
     "RGBA", "BGRA", "ABGR", "ARGB"
   };
 
-  private final static int alphaOffset[] = {
+  private static final int[] alphaOffset = {
     -1, -1, -1, -1, -1, -1, -1, 3, 3, 0, 0
   };
 
-  private final static int _3byteFormats[] = {
+  private static final int[] _3byteFormats = {
     TJ.PF_RGB, TJ.PF_BGR
   };
-  private final static int _3byteFormatsBI[] = {
+  private static final int[] _3byteFormatsBI = {
     BufferedImage.TYPE_3BYTE_BGR
   };
-  private final static int _4byteFormats[] = {
+  private static final int[] _4byteFormats = {
     TJ.PF_RGBX, TJ.PF_BGRX, TJ.PF_XBGR, TJ.PF_XRGB
   };
-  private final static int _4byteFormatsBI[] = {
+  private static final int[] _4byteFormatsBI = {
     BufferedImage.TYPE_INT_BGR, BufferedImage.TYPE_INT_RGB,
     BufferedImage.TYPE_4BYTE_ABGR, BufferedImage.TYPE_4BYTE_ABGR_PRE,
     BufferedImage.TYPE_INT_ARGB, BufferedImage.TYPE_INT_ARGB_PRE
   };
-  private final static int onlyGray[] = {
+  private static final int[] onlyGray = {
     TJ.PF_GRAY
   };
-  private final static int onlyGrayBI[] = {
+  private static final int[] onlyGrayBI = {
     BufferedImage.TYPE_BYTE_GRAY
   };
-  private final static int onlyRGB[] = {
+  private static final int[] onlyRGB = {
     TJ.PF_RGB
   };
 
-  private final static int YUVENCODE = 1;
-  private final static int YUVDECODE = 2;
+  private static final int YUVENCODE = 1;
+  private static final int YUVDECODE = 2;
   private static int yuv = 0;
   private static boolean bi = false;
 
@@ -108,18 +108,18 @@
       case BufferedImage.TYPE_BYTE_GRAY:
         return TJ.PF_GRAY;
       case BufferedImage.TYPE_INT_BGR:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           return TJ.PF_XBGR;
         else
           return TJ.PF_RGBX;
       case BufferedImage.TYPE_INT_RGB:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           return TJ.PF_XRGB;
         else
           return TJ.PF_BGRX;
       case BufferedImage.TYPE_INT_ARGB:
       case BufferedImage.TYPE_INT_ARGB_PRE:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           return TJ.PF_ARGB;
         else
           return TJ.PF_BGRA;
@@ -148,14 +148,13 @@
     }
     return "Unknown";
   }
-  
 
   private static double getTime() {
     return (double)System.nanoTime() / 1.0e9;
   }
 
   private static void initBuf(byte[] buf, int w, int pitch, int h, int pf,
-    int flags) throws Exception {
+                              int flags) throws Exception {
     int roffset = TJ.getRedOffset(pf);
     int goffset = TJ.getGreenOffset(pf);
     int boffset = TJ.getBlueOffset(pf);
@@ -164,42 +163,46 @@
     int index, row, col, halfway = 16;
 
     Arrays.fill(buf, (byte)0);
-    if(pf == TJ.PF_GRAY) {
-      for(row = 0; row < h; row++) {
-        for(col = 0; col < w; col++) {
-          if((flags & TJ.FLAG_BOTTOMUP) != 0)
+    if (pf == TJ.PF_GRAY) {
+      for (row = 0; row < h; row++) {
+        for (col = 0; col < w; col++) {
+          if ((flags & TJ.FLAG_BOTTOMUP) != 0)
             index = pitch * (h - row - 1) + col;
-          else index = pitch * row + col;
-          if(((row / 8) + (col / 8)) % 2 == 0)
+          else
+            index = pitch * row + col;
+          if (((row / 8) + (col / 8)) % 2 == 0)
             buf[index] = (row < halfway) ? (byte)255 : 0;
-          else buf[index] = (row < halfway) ? 76 : (byte)226;
+          else
+            buf[index] = (row < halfway) ? 76 : (byte)226;
         }
       }
       return;
     }
-    for(row = 0; row < h; row++) {
-      for(col = 0; col < w; col++) {
-        if((flags & TJ.FLAG_BOTTOMUP) != 0)
+    for (row = 0; row < h; row++) {
+      for (col = 0; col < w; col++) {
+        if ((flags & TJ.FLAG_BOTTOMUP) != 0)
           index = pitch * (h - row - 1) + col * ps;
-        else index = pitch * row + col * ps;
-        if(((row / 8) + (col / 8)) % 2 == 0) {
-          if(row < halfway) {
+        else
+          index = pitch * row + col * ps;
+        if (((row / 8) + (col / 8)) % 2 == 0) {
+          if (row < halfway) {
             buf[index + roffset] = (byte)255;
             buf[index + goffset] = (byte)255;
             buf[index + boffset] = (byte)255;
           }
-        }
-        else {
+        } else {
           buf[index + roffset] = (byte)255;
-          if(row >= halfway) buf[index + goffset] = (byte)255;
+          if (row >= halfway)
+            buf[index + goffset] = (byte)255;
         }
-        if (aoffset >= 0) buf[index + aoffset] = (byte)255;
+        if (aoffset >= 0)
+          buf[index + aoffset] = (byte)255;
       }
     }
   }
 
   private static void initIntBuf(int[] buf, int w, int pitch, int h, int pf,
-    int flags) throws Exception {
+                                 int flags) throws Exception {
     int rshift = TJ.getRedOffset(pf) * 8;
     int gshift = TJ.getGreenOffset(pf) * 8;
     int bshift = TJ.getBlueOffset(pf) * 8;
@@ -207,43 +210,44 @@
     int index, row, col, halfway = 16;
 
     Arrays.fill(buf, 0);
-    for(row = 0; row < h; row++) {
-      for(col = 0; col < w; col++) {
-        if((flags & TJ.FLAG_BOTTOMUP) != 0)
+    for (row = 0; row < h; row++) {
+      for (col = 0; col < w; col++) {
+        if ((flags & TJ.FLAG_BOTTOMUP) != 0)
           index = pitch * (h - row - 1) + col;
-        else index = pitch * row + col;
-        if(((row / 8) + (col / 8)) % 2 == 0) {
-          if(row < halfway) {
+        else
+          index = pitch * row + col;
+        if (((row / 8) + (col / 8)) % 2 == 0) {
+          if (row < halfway) {
             buf[index] |= (255 << rshift);
             buf[index] |= (255 << gshift);
             buf[index] |= (255 << bshift);
           }
-        }
-        else {
+        } else {
           buf[index] |= (255 << rshift);
-          if(row >= halfway) buf[index] |= (255 << gshift);
+          if (row >= halfway)
+            buf[index] |= (255 << gshift);
         }
-        if (ashift >= 0) buf[index] |= (255 << ashift);
+        if (ashift >= 0)
+          buf[index] |= (255 << ashift);
       }
     }
   }
 
   private static void initImg(BufferedImage img, int pf, int flags)
-    throws Exception {
+                              throws Exception {
     WritableRaster wr = img.getRaster();
     int imgType = img.getType();
-    if(imgType == BufferedImage.TYPE_INT_RGB
-      || imgType == BufferedImage.TYPE_INT_BGR
-      || imgType == BufferedImage.TYPE_INT_ARGB
-      || imgType == BufferedImage.TYPE_INT_ARGB_PRE) {
+    if (imgType == BufferedImage.TYPE_INT_RGB ||
+        imgType == BufferedImage.TYPE_INT_BGR ||
+        imgType == BufferedImage.TYPE_INT_ARGB ||
+        imgType == BufferedImage.TYPE_INT_ARGB_PRE) {
       SinglePixelPackedSampleModel sm =
         (SinglePixelPackedSampleModel)img.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
       int[] buf = db.getData();
       initIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, flags);
-    }
-    else {
+    } else {
       ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
@@ -253,34 +257,35 @@
   }
 
   private static void checkVal(int row, int col, int v, String vname, int cv)
-    throws Exception {
+                               throws Exception {
     v = (v < 0) ? v + 256 : v;
-    if(v < cv - 1 || v > cv + 1) {
-      throw new Exception("\nComp. " + vname + " at " + row + "," + col
-        + " should be " + cv + ", not " + v + "\n");
+    if (v < cv - 1 || v > cv + 1) {
+      throw new Exception("\nComp. " + vname + " at " + row + "," + col +
+                          " should be " + cv + ", not " + v + "\n");
     }
   }
 
   private static void checkVal0(int row, int col, int v, String vname)
-    throws Exception {
+                                throws Exception {
     v = (v < 0) ? v + 256 : v;
-    if(v > 1) {
-      throw new Exception("\nComp. " + vname + " at " + row + "," + col
-        + " should be 0, not " + v + "\n");
+    if (v > 1) {
+      throw new Exception("\nComp. " + vname + " at " + row + "," + col +
+                          " should be 0, not " + v + "\n");
     }
   }
 
   private static void checkVal255(int row, int col, int v, String vname)
-    throws Exception {
+                                  throws Exception {
     v = (v < 0) ? v + 256 : v;
-    if(v < 254) {
-      throw new Exception("\nComp. " + vname + " at " + row + "," + col
-        + " should be 255, not " + v + "\n");
+    if (v < 254) {
+      throw new Exception("\nComp. " + vname + " at " + row + "," + col +
+                          " should be 255, not " + v + "\n");
     }
   }
 
   private static int checkBuf(byte[] buf, int w, int pitch, int h, int pf,
-    int subsamp, TJScalingFactor sf, int flags) throws Exception {
+                              int subsamp, TJScalingFactor sf, int flags)
+                              throws Exception {
     int roffset = TJ.getRedOffset(pf);
     int goffset = TJ.getGreenOffset(pf);
     int boffset = TJ.getBlueOffset(pf);
@@ -291,68 +296,65 @@
     int blockSize = 8 * sf.getNum() / sf.getDenom();
 
     try {
-      for(row = 0; row < halfway; row++) {
-        for(col = 0; col < w; col++) {
-          if((flags & TJ.FLAG_BOTTOMUP) != 0)
+      for (row = 0; row < halfway; row++) {
+        for (col = 0; col < w; col++) {
+          if ((flags & TJ.FLAG_BOTTOMUP) != 0)
             index = pitch * (h - row - 1) + col * ps;
-          else index = pitch * row + col * ps;
+          else
+            index = pitch * row + col * ps;
           byte r = buf[index + roffset];
           byte g = buf[index + goffset];
           byte b = buf[index + boffset];
           byte a = aoffset >= 0 ? buf[index + aoffset] : (byte)255;
-          if(((row / blockSize) + (col / blockSize)) % 2 == 0) {
-            if(row < halfway) {
+          if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
+            if (row < halfway) {
               checkVal255(row, col, r, "R");
               checkVal255(row, col, g, "G");
               checkVal255(row, col, b, "B");
-            }
-            else {
+            } else {
               checkVal0(row, col, r, "R");
               checkVal0(row, col, g, "G");
               checkVal0(row, col, b, "B");
             }
-          }
-          else {
-            if(subsamp == TJ.SAMP_GRAY) {
-              if(row < halfway) {
+          } else {
+            if (subsamp == TJ.SAMP_GRAY) {
+              if (row < halfway) {
                 checkVal(row, col, r, "R", 76);
                 checkVal(row, col, g, "G", 76);
                 checkVal(row, col, b, "B", 76);
-              }
-              else {
+              } else {
                 checkVal(row, col, r, "R", 226);
                 checkVal(row, col, g, "G", 226);
                 checkVal(row, col, b, "B", 226);
               }
-            }
-            else {
+            } else {
               checkVal255(row, col, r, "R");
-              if(row < halfway) {
+              if (row < halfway) {
                 checkVal0(row, col, g, "G");
-              }
-              else {
+              } else {
                 checkVal255(row, col, g, "G");
               }
-              checkVal0(row, col, b, "B");							
+              checkVal0(row, col, b, "B");
             }
           }
           checkVal255(row, col, a, "A");
         }
       }
-    }
-    catch(Exception e) {
+    } catch(Exception e) {
       System.out.println(e);
       retval = 0;
     }
 
-    if(retval == 0) {
+    if (retval == 0) {
       System.out.print("\n");
-      for(row = 0; row < h; row++) {
-        for(col = 0; col < w; col++) {
+      for (row = 0; row < h; row++) {
+        for (col = 0; col < w; col++) {
           int r = buf[pitch * row + col * ps + roffset];
           int g = buf[pitch * row + col * ps + goffset];
           int b = buf[pitch * row + col * ps + boffset];
-          if(r < 0) r += 256;  if(g < 0) g += 256;  if(b < 0) b += 256;
+          if (r < 0) r += 256;
+          if (g < 0) g += 256;
+          if (b < 0) b += 256;
           System.out.format("%3d/%3d/%3d ", r, g, b);
         }
         System.out.print("\n");
@@ -362,7 +364,8 @@
   }
 
   private static int checkIntBuf(int[] buf, int w, int pitch, int h, int pf,
-    int subsamp, TJScalingFactor sf, int flags) throws Exception {
+                                 int subsamp, TJScalingFactor sf, int flags)
+                                 throws Exception {
     int rshift = TJ.getRedOffset(pf) * 8;
     int gshift = TJ.getGreenOffset(pf) * 8;
     int bshift = TJ.getBlueOffset(pf) * 8;
@@ -372,46 +375,42 @@
     int blockSize = 8 * sf.getNum() / sf.getDenom();
 
     try {
-      for(row = 0; row < halfway; row++) {
-        for(col = 0; col < w; col++) {
-          if((flags & TJ.FLAG_BOTTOMUP) != 0)
+      for (row = 0; row < halfway; row++) {
+        for (col = 0; col < w; col++) {
+          if ((flags & TJ.FLAG_BOTTOMUP) != 0)
             index = pitch * (h - row - 1) + col;
-          else index = pitch * row + col;
+          else
+            index = pitch * row + col;
           int r = (buf[index] >> rshift) & 0xFF;
           int g = (buf[index] >> gshift) & 0xFF;
           int b = (buf[index] >> bshift) & 0xFF;
           int a = ashift >= 0 ? (buf[index] >> ashift) & 0xFF : 255;
-          if(((row / blockSize) + (col / blockSize)) % 2 == 0) {
-            if(row < halfway) {
+          if (((row / blockSize) + (col / blockSize)) % 2 == 0) {
+            if (row < halfway) {
               checkVal255(row, col, r, "R");
               checkVal255(row, col, g, "G");
               checkVal255(row, col, b, "B");
-            }
-            else {
+            } else {
               checkVal0(row, col, r, "R");
               checkVal0(row, col, g, "G");
               checkVal0(row, col, b, "B");
             }
-          }
-          else {
-            if(subsamp == TJ.SAMP_GRAY) {
-              if(row < halfway) {
+          } else {
+            if (subsamp == TJ.SAMP_GRAY) {
+              if (row < halfway) {
                 checkVal(row, col, r, "R", 76);
                 checkVal(row, col, g, "G", 76);
                 checkVal(row, col, b, "B", 76);
-              }
-              else {
+              } else {
                 checkVal(row, col, r, "R", 226);
                 checkVal(row, col, g, "G", 226);
                 checkVal(row, col, b, "B", 226);
               }
-            }
-            else {
+            } else {
               checkVal255(row, col, r, "R");
-              if(row < halfway) {
+              if (row < halfway) {
                 checkVal0(row, col, g, "G");
-              }
-              else {
+              } else {
                 checkVal255(row, col, g, "G");
               }
               checkVal0(row, col, b, "B");
@@ -420,20 +419,21 @@
           checkVal255(row, col, a, "A");
         }
       }
-    }
-    catch(Exception e) {
+    } catch(Exception e) {
       System.out.println(e);
       retval = 0;
     }
 
-    if(retval == 0) {
+    if (retval == 0) {
       System.out.print("\n");
-      for(row = 0; row < h; row++) {
-        for(col = 0; col < w; col++) {
+      for (row = 0; row < h; row++) {
+        for (col = 0; col < w; col++) {
           int r = (buf[pitch * row + col] >> rshift) & 0xFF;
           int g = (buf[pitch * row + col] >> gshift) & 0xFF;
           int b = (buf[pitch * row + col] >> bshift) & 0xFF;
-          if(r < 0) r += 256;  if(g < 0) g += 256;  if(b < 0) b += 256;
+          if (r < 0) r += 256;
+          if (g < 0) g += 256;
+          if (b < 0) b += 256;
           System.out.format("%3d/%3d/%3d ", r, g, b);
         }
         System.out.print("\n");
@@ -442,29 +442,28 @@
     return retval;
   }
 
-  private static int checkImg(BufferedImage img, int pf,
-    int subsamp, TJScalingFactor sf, int flags) throws Exception {
+  private static int checkImg(BufferedImage img, int pf, int subsamp,
+                              TJScalingFactor sf, int flags) throws Exception {
     WritableRaster wr = img.getRaster();
     int imgType = img.getType();
-    if(imgType == BufferedImage.TYPE_INT_RGB
-      || imgType == BufferedImage.TYPE_INT_BGR
-      || imgType == BufferedImage.TYPE_INT_ARGB
-      || imgType == BufferedImage.TYPE_INT_ARGB_PRE) {
-       SinglePixelPackedSampleModel sm =
+    if (imgType == BufferedImage.TYPE_INT_RGB ||
+        imgType == BufferedImage.TYPE_INT_BGR ||
+        imgType == BufferedImage.TYPE_INT_ARGB ||
+        imgType == BufferedImage.TYPE_INT_ARGB_PRE) {
+      SinglePixelPackedSampleModel sm =
         (SinglePixelPackedSampleModel)img.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
       int[] buf = db.getData();
       return checkIntBuf(buf, img.getWidth(), pitch, img.getHeight(), pf,
-        subsamp, sf, flags);
-    }
-    else {
+                         subsamp, sf, flags);
+    } else {
       ComponentSampleModel sm = (ComponentSampleModel)img.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
       byte[] buf = db.getData();
       return checkBuf(buf, img.getWidth(), pitch, img.getHeight(), pf, subsamp,
-        sf, flags);
+                      sf, flags);
     }
   }
 
@@ -473,51 +472,52 @@
   }
 
   private static int checkBufYUV(byte[] buf, int size, int w, int h,
-    int subsamp) throws Exception {
+                                 int subsamp) throws Exception {
     int row, col;
-    int hsf = TJ.getMCUWidth(subsamp)/8, vsf = TJ.getMCUHeight(subsamp)/8;
+    int hsf = TJ.getMCUWidth(subsamp) / 8, vsf = TJ.getMCUHeight(subsamp) / 8;
     int pw = PAD(w, hsf), ph = PAD(h, vsf);
     int cw = pw / hsf, ch = ph / vsf;
     int ypitch = PAD(pw, 4), uvpitch = PAD(cw, 4);
     int retval = 1;
-    int correctsize = ypitch * ph
-      + (subsamp == TJ.SAMP_GRAY ? 0 : uvpitch * ch * 2);
+    int correctsize = ypitch * ph +
+                      (subsamp == TJ.SAMP_GRAY ? 0 : uvpitch * ch * 2);
     int halfway = 16;
 
     try {
-      if(size != correctsize)
-        throw new Exception("\nIncorrect size " + size + ".  Should be "
-          + correctsize);
+      if (size != correctsize)
+        throw new Exception("\nIncorrect size " + size + ".  Should be " +
+                            correctsize);
 
-      for(row = 0; row < ph; row++) {
-        for(col = 0; col < pw; col++) {
+      for (row = 0; row < ph; row++) {
+        for (col = 0; col < pw; col++) {
           byte y = buf[ypitch * row + col];
-          if(((row / 8) + (col / 8)) % 2 == 0) {
-            if(row < halfway) checkVal255(row, col, y, "Y");
-            else checkVal0(row, col, y, "Y");
-          }
-          else {
-            if(row < halfway) checkVal(row, col, y, "Y", 76);
-            else checkVal(row, col, y, "Y", 226);
+          if (((row / 8) + (col / 8)) % 2 == 0) {
+            if (row < halfway)
+              checkVal255(row, col, y, "Y");
+            else
+              checkVal0(row, col, y, "Y");
+          } else {
+            if (row < halfway)
+              checkVal(row, col, y, "Y", 76);
+            else
+              checkVal(row, col, y, "Y", 226);
           }
         }
       }
-      if(subsamp != TJ.SAMP_GRAY) {
+      if (subsamp != TJ.SAMP_GRAY) {
         halfway = 16 / vsf;
-        for(row = 0; row < ch; row++) {
-          for(col = 0; col < cw; col++) {
+        for (row = 0; row < ch; row++) {
+          for (col = 0; col < cw; col++) {
             byte u = buf[ypitch * ph + (uvpitch * row + col)],
-              v = buf[ypitch * ph + uvpitch * ch + (uvpitch * row + col)];
-            if(((row * vsf / 8) + (col * hsf / 8)) % 2 == 0) {
+                 v = buf[ypitch * ph + uvpitch * ch + (uvpitch * row + col)];
+            if (((row * vsf / 8) + (col * hsf / 8)) % 2 == 0) {
               checkVal(row, col, u, "U", 128);
               checkVal(row, col, v, "V", 128);
-            }
-            else {
-              if(row < halfway) {
+            } else {
+              if (row < halfway) {
                 checkVal(row, col, u, "U", 85);
                 checkVal255(row, col, v, "V");
-              }
-              else {
+              } else {
                 checkVal0(row, col, u, "U");
                 checkVal(row, col, v, "V", 149);
               }
@@ -525,35 +525,34 @@
           }
         }
       }
-    }
-    catch(Exception e) {
+    } catch(Exception e) {
       System.out.println(e);
       retval = 0;
     }
 
-    if(retval == 0) {
-      for(row = 0; row < ph; row++) {
-        for(col = 0; col < pw; col++) {
+    if (retval == 0) {
+      for (row = 0; row < ph; row++) {
+        for (col = 0; col < pw; col++) {
           int y = buf[ypitch * row + col];
-          if(y < 0) y += 256;
+          if (y < 0) y += 256;
           System.out.format("%3d ", y);
         }
         System.out.print("\n");
       }
       System.out.print("\n");
-      for(row = 0; row < ch; row++) {
-        for(col = 0; col < cw; col++) {
+      for (row = 0; row < ch; row++) {
+        for (col = 0; col < cw; col++) {
           int u = buf[ypitch * ph + (uvpitch * row + col)];
-          if(u < 0) u += 256;
+          if (u < 0) u += 256;
           System.out.format("%3d ", u);
         }
         System.out.print("\n");
       }
       System.out.print("\n");
-      for(row = 0; row < ch; row++) {
-        for(col = 0; col < cw; col++) {
+      for (row = 0; row < ch; row++) {
+        for (col = 0; col < cw; col++) {
           int v = buf[ypitch * ph + uvpitch * ch + (uvpitch * row + col)];
-          if(v < 0) v += 256;
+          if (v < 0) v += 256;
           System.out.format("%3d ", v);
         }
         System.out.print("\n");
@@ -565,7 +564,7 @@
   }
 
   private static void writeJPEG(byte[] jpegBuf, int jpegBufSize,
-    String filename) throws Exception {
+                                String filename) throws Exception {
     File file = new File(filename);
     FileOutputStream fos = new FileOutputStream(file);
     fos.write(jpegBuf, 0, jpegBufSize);
@@ -573,8 +572,8 @@
   }
 
   private static int compTest(TJCompressor tjc, byte[] dstBuf, int w,
-    int h, int pf, String baseName, int subsamp, int jpegQual,
-    int flags) throws Exception {
+                              int h, int pf, String baseName, int subsamp,
+                              int jpegQual, int flags) throws Exception {
     String tempstr;
     byte[] srcBuf = null;
     BufferedImage img = null;
@@ -585,28 +584,32 @@
     if (bi) {
       pf = biTypePF(imgType);
       pfStr = biTypeStr(imgType);
-    }
-    else pfStr = pixFormatStr[pf];
+    } else
+      pfStr = pixFormatStr[pf];
     ps =  TJ.getPixelSize(pf);
 
     System.out.print(pfStr + " ");
-    if(bi) System.out.print("(" + pixFormatStr[pf] + ") ");
-    if((flags & TJ.FLAG_BOTTOMUP) != 0) System.out.print("Bottom-Up");
-    else System.out.print("Top-Down ");
+    if (bi)
+      System.out.print("(" + pixFormatStr[pf] + ") ");
+    if ((flags & TJ.FLAG_BOTTOMUP) != 0)
+      System.out.print("Bottom-Up");
+    else
+      System.out.print("Top-Down ");
     System.out.print(" -> " + subNameLong[subsamp] + " ");
-    if(yuv == YUVENCODE) System.out.print("YUV ... ");
-    else System.out.print("Q" + jpegQual + " ... ");
+    if (yuv == YUVENCODE)
+      System.out.print("YUV ... ");
+    else
+      System.out.print("Q" + jpegQual + " ... ");
 
-    if(bi) {
+    if (bi) {
       img = new BufferedImage(w, h, imgType);
       initImg(img, pf, flags);
-      tempstr = baseName + "_enc_" + pfStr + "_"
-        + (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_"
-        + subName[subsamp] + "_Q" + jpegQual + ".png";
+      tempstr = baseName + "_enc_" + pfStr + "_" +
+                (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_" +
+                subName[subsamp] + "_Q" + jpegQual + ".png";
       File file = new File(tempstr);
       ImageIO.write(img, "png", file);
-    }
-    else {
+    } else {
       srcBuf = new byte[w * h * ps + 1];
       initBuf(srcBuf, w, w * ps, h, pf, flags);
     }
@@ -615,36 +618,40 @@
     t = getTime();
     tjc.setSubsamp(subsamp);
     tjc.setJPEGQuality(jpegQual);
-    if(bi) {
-      if(yuv == YUVENCODE) tjc.encodeYUV(img, dstBuf, flags);
-      else tjc.compress(img, dstBuf, flags);
-    }
-    else {
+    if (bi) {
+      if (yuv == YUVENCODE)
+        tjc.encodeYUV(img, dstBuf, flags);
+      else
+        tjc.compress(img, dstBuf, flags);
+    } else {
       tjc.setSourceImage(srcBuf, w, 0, h, pf);
-      if(yuv == YUVENCODE) tjc.encodeYUV(dstBuf, flags);
-      else tjc.compress(dstBuf, flags);
+      if (yuv == YUVENCODE)
+        tjc.encodeYUV(dstBuf, flags);
+      else
+        tjc.compress(dstBuf, flags);
     }
     size = tjc.getCompressedSize();
     t = getTime() - t;
 
-    if(yuv == YUVENCODE)
-      tempstr = baseName + "_enc_" + pfStr + "_"
-        + (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_"
-        + subName[subsamp] + ".yuv";
+    if (yuv == YUVENCODE)
+      tempstr = baseName + "_enc_" + pfStr + "_" +
+                (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_" +
+                subName[subsamp] + ".yuv";
     else
-      tempstr = baseName + "_enc_" + pfStr + "_"
-        + (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_"
-        + subName[subsamp] + "_Q" + jpegQual + ".jpg";
+      tempstr = baseName + "_enc_" + pfStr + "_" +
+                (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_" +
+                subName[subsamp] + "_Q" + jpegQual + ".jpg";
     writeJPEG(dstBuf, size, tempstr);
 
-    if(yuv == YUVENCODE) {
-      if(checkBufYUV(dstBuf, size, w, h, subsamp) == 1)
+    if (yuv == YUVENCODE) {
+      if (checkBufYUV(dstBuf, size, w, h, subsamp) == 1)
         System.out.print("Passed.");
       else {
-        System.out.print("FAILED!");  exitStatus = -1;
+        System.out.print("FAILED!");
+        exitStatus = -1;
       }
-    }
-    else System.out.print("Done.");
+    } else
+      System.out.print("Done.");
     System.out.format("  %.6f ms\n", t * 1000.);
     System.out.println("  Result in " + tempstr);
 
@@ -652,8 +659,9 @@
   }
 
   private static void decompTest(TJDecompressor tjd, byte[] jpegBuf,
-    int jpegSize, int w, int h, int pf, String baseName, int subsamp,
-    int flags, TJScalingFactor sf) throws Exception {
+                                 int jpegSize, int w, int h, int pf,
+                                 String baseName, int subsamp, int flags,
+                                 TJScalingFactor sf) throws Exception {
     String pfStr, tempstr;
     double t;
     int scaledWidth = sf.getScaled(w);
@@ -662,134 +670,144 @@
     BufferedImage img = null;
     byte[] dstBuf = null;
 
-    if(yuv == YUVENCODE) return;
+    if (yuv == YUVENCODE) return;
 
     if (bi) {
       pf = biTypePF(imgType);
       pfStr = biTypeStr(imgType);
-    }
-    else pfStr = pixFormatStr[pf];
+    } else
+      pfStr = pixFormatStr[pf];
 
     System.out.print("JPEG -> ");
-    if(yuv == YUVDECODE)
+    if (yuv == YUVDECODE)
       System.out.print("YUV " + subName[subsamp] + " ... ");
     else {
       System.out.print(pfStr + " ");
-      if(bi) System.out.print("(" + pixFormatStr[pf] + ") ");
-      if((flags & TJ.FLAG_BOTTOMUP) != 0) System.out.print("Bottom-Up ");
-      else System.out.print("Top-Down  ");
-      if(!sf.isOne())
+      if (bi)
+        System.out.print("(" + pixFormatStr[pf] + ") ");
+      if ((flags & TJ.FLAG_BOTTOMUP) != 0)
+        System.out.print("Bottom-Up ");
+      else
+        System.out.print("Top-Down  ");
+      if (!sf.isOne())
         System.out.print(sf.getNum() + "/" + sf.getDenom() + " ... ");
-      else System.out.print("... ");
+      else
+        System.out.print("... ");
     }
 
     t = getTime();
     tjd.setJPEGImage(jpegBuf, jpegSize);
-    if(tjd.getWidth() != w || tjd.getHeight() != h
-      || tjd.getSubsamp() != subsamp)
+    if (tjd.getWidth() != w || tjd.getHeight() != h ||
+        tjd.getSubsamp() != subsamp)
       throw new Exception("Incorrect JPEG header");
 
     temp1 = scaledWidth;
     temp2 = scaledHeight;
     temp1 = tjd.getScaledWidth(temp1, temp2);
     temp2 = tjd.getScaledHeight(temp1, temp2);
-    if(temp1 != scaledWidth || temp2 != scaledHeight)
+    if (temp1 != scaledWidth || temp2 != scaledHeight)
       throw new Exception("Scaled size mismatch");
 
-    if(yuv == YUVDECODE) dstBuf = tjd.decompressToYUV(flags);
+    if (yuv == YUVDECODE)
+      dstBuf = tjd.decompressToYUV(flags);
     else {
-      if(bi)
+      if (bi)
         img = tjd.decompress(scaledWidth, scaledHeight, imgType, flags);
-      else dstBuf = tjd.decompress(scaledWidth, 0, scaledHeight, pf, flags);
+      else
+        dstBuf = tjd.decompress(scaledWidth, 0, scaledHeight, pf, flags);
     }
     t = getTime() - t;
 
-    if(bi) {
-      tempstr = baseName + "_dec_" + pfStr + "_"
-        + (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_"
-        + subName[subsamp] + "_" + (double)sf.getNum() / (double)sf.getDenom()
-        + "x" + ".png";
+    if (bi) {
+      tempstr = baseName + "_dec_" + pfStr + "_" +
+                (((flags & TJ.FLAG_BOTTOMUP) != 0) ? "BU" : "TD") + "_" +
+                subName[subsamp] + "_" +
+                (double)sf.getNum() / (double)sf.getDenom() + "x" + ".png";
       File file = new File(tempstr);
       ImageIO.write(img, "png", file);
     }
 
-    if(yuv == YUVDECODE) {
-      if(checkBufYUV(dstBuf, dstBuf.length, w, h, subsamp) == 1)
+    if (yuv == YUVDECODE) {
+      if (checkBufYUV(dstBuf, dstBuf.length, w, h, subsamp) == 1)
         System.out.print("Passed.");
       else {
         System.out.print("FAILED!");  exitStatus = -1;
       }
-    }
-    else {
-      if((bi && checkImg(img, pf, subsamp, sf, flags) == 1)
-        || (!bi && checkBuf(dstBuf, scaledWidth, scaledWidth
-          * TJ.getPixelSize(pf), scaledHeight, pf, subsamp, sf, flags) == 1))
+    } else {
+      if ((bi && checkImg(img, pf, subsamp, sf, flags) == 1) ||
+          (!bi && checkBuf(dstBuf, scaledWidth,
+                           scaledWidth * TJ.getPixelSize(pf), scaledHeight, pf,
+                           subsamp, sf, flags) == 1))
         System.out.print("Passed.");
       else {
-        System.out.print("FAILED!");  exitStatus = -1;
+        System.out.print("FAILED!");
+        exitStatus = -1;
       }
     }
     System.out.format("  %.6f ms\n", t * 1000.);
   }
 
   private static void decompTest(TJDecompressor tjd, byte[] jpegBuf,
-    int jpegSize, int w, int h, int pf, String baseName, int subsamp,
-    int flags) throws Exception {
+                                 int jpegSize, int w, int h, int pf,
+                                 String baseName, int subsamp,
+                                 int flags) throws Exception {
     int i;
-    if((subsamp == TJ.SAMP_444 || subsamp == TJ.SAMP_GRAY) && yuv == 0) {
-      TJScalingFactor sf[] = TJ.getScalingFactors();
-      for(i = 0; i < sf.length; i++)
+    if ((subsamp == TJ.SAMP_444 || subsamp == TJ.SAMP_GRAY) && yuv == 0) {
+      TJScalingFactor[] sf = TJ.getScalingFactors();
+      for (i = 0; i < sf.length; i++)
         decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp,
-          flags, sf[i]);
-    }
-    else
+                   flags, sf[i]);
+    } else
       decompTest(tjd, jpegBuf, jpegSize, w, h, pf, baseName, subsamp,
-        flags, new TJScalingFactor(1, 1));
+                 flags, new TJScalingFactor(1, 1));
     System.out.print("\n");
   }
 
   private static void doTest(int w, int h, int[] formats, int subsamp,
-    String baseName) throws Exception {
+                             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)];
+    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();  
+      tjd = new TJDecompressor();
 
-      for(int pf : formats) {
-        for(int i = 0; i < 2; i++) {
+      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)
+          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;
+          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);
+                          flags);
           decompTest(tjd, dstBuf, size, w, h, pf, baseName, subsamp, flags);
-          if(pf >= TJ.PF_RGBX && pf <= TJ.PF_XRGB && !bi)
+          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);
+                       baseName, subsamp, flags);
         }
       }
-    }
-    catch(Exception e) {
-      if(tjc != null) tjc.close();
-      if(tjd != null) tjd.close();
+    } 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();
+    if (tjc != null) tjc.close();
+    if (tjd != null) tjd.close();
   }
 
   private static void bufSizeTest() throws Exception {
@@ -801,15 +819,15 @@
     try {
       tjc = new TJCompressor();
       System.out.println("Buffer size regression test");
-      for(subsamp = 0; subsamp < TJ.NUMSAMP; subsamp++) {
-        for(w = 1; w < 48; w++) {
+      for (subsamp = 0; subsamp < TJ.NUMSAMP; subsamp++) {
+        for (w = 1; w < 48; w++) {
           int maxh = (w == 1) ? 2048 : 48;
-          for(h = 1; h < maxh; h++) {
-            if(h % 100 == 0)
+          for (h = 1; h < maxh; h++) {
+            if (h % 100 == 0)
               System.out.format("%04d x %04d\b\b\b\b\b\b\b\b\b\b\b", w, h);
             srcBuf = new byte[w * h * 4];
             jpegBuf = new byte[TJ.bufSize(w, h, subsamp)];
-            for(i = 0; i < w * h * 4; i++) {
+            for (i = 0; i < w * h * 4; i++) {
               srcBuf[i] = (byte)(r.nextInt(2) * 255);
             }
             tjc.setSourceImage(srcBuf, w, 0, h, TJ.PF_BGRX);
@@ -819,7 +837,7 @@
 
             srcBuf = new byte[h * w * 4];
             jpegBuf = new byte[TJ.bufSize(h, w, subsamp)];
-            for(i = 0; i < h * w * 4; i++) {
+            for (i = 0; i < h * w * 4; i++) {
               srcBuf[i] = (byte)(r.nextInt(2) * 255);
             }
             tjc.setSourceImage(srcBuf, h, 0, w, TJ.PF_BGRX);
@@ -828,50 +846,53 @@
         }
       }
       System.out.println("Done.      ");
-    }
-    catch(Exception e) {
-      if(tjc != null) tjc.close();
+    } catch(Exception e) {
+      if (tjc != null) tjc.close();
       throw e;
     }
-    if(tjc != null) tjc.close();
+    if (tjc != null) tjc.close();
   }
 
-  public static void main(String argv[]) {
+  public static void main(String[] argv) {
     try {
       String testName = "javatest";
       boolean doyuv = false;
-      for(int i = 0; i < argv.length; i++) {
-        if(argv[i].equalsIgnoreCase("-yuv")) doyuv = true;
-        if(argv[i].substring(0, 1).equalsIgnoreCase("-h")
-          || argv[i].equalsIgnoreCase("-?"))
+      for (int i = 0; i < argv.length; i++) {
+        if (argv[i].equalsIgnoreCase("-yuv"))
+          doyuv = true;
+        if (argv[i].substring(0, 1).equalsIgnoreCase("-h") ||
+            argv[i].equalsIgnoreCase("-?"))
           usage();
-        if(argv[i].equalsIgnoreCase("-bi")) {
+        if (argv[i].equalsIgnoreCase("-bi")) {
           bi = true;
           testName = "javabitest";
         }
       }
-      if(doyuv) yuv = YUVENCODE;
-      doTest(35, 39, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_444, testName);
-      doTest(39, 41, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_444, testName);
+      if (doyuv) yuv = YUVENCODE;
+      doTest(35, 39, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_444,
+             testName);
+      doTest(39, 41, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_444,
+             testName);
       doTest(41, 35, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_422,
-        testName);
+             testName);
       doTest(35, 39, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_422,
-        testName);
+             testName);
       doTest(39, 41, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_420,
-        testName);
+             testName);
       doTest(41, 35, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_420,
-        testName);
+             testName);
       doTest(35, 39, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_440,
-        testName);
+             testName);
       doTest(39, 41, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_440,
-        testName);
+             testName);
       doTest(35, 39, bi ? onlyGrayBI : onlyGray, TJ.SAMP_GRAY, testName);
       doTest(39, 41, bi ? _3byteFormatsBI : _3byteFormats, TJ.SAMP_GRAY,
-        testName);
+             testName);
       doTest(41, 35, bi ? _4byteFormatsBI : _4byteFormats, TJ.SAMP_GRAY,
-        testName);
-      if(!doyuv && !bi) bufSizeTest();
-      if(doyuv && !bi) {
+             testName);
+      if (!doyuv && !bi)
+        bufSizeTest();
+      if (doyuv && !bi) {
         yuv = YUVDECODE;
         doTest(48, 48, onlyRGB, TJ.SAMP_444, "javatest_yuv0");
         doTest(35, 39, onlyRGB, TJ.SAMP_444, "javatest_yuv1");
@@ -886,8 +907,7 @@
         doTest(48, 48, onlyGray, TJ.SAMP_GRAY, "javatest_yuv0");
         doTest(39, 41, onlyGray, TJ.SAMP_GRAY, "javatest_yuv1");
       }
-    }
-    catch(Exception e) {
+    } catch(Exception e) {
       e.printStackTrace();
       exitStatus = -1;
     }
diff --git a/java/org/libjpegturbo/turbojpeg/TJ.java b/java/org/libjpegturbo/turbojpeg/TJ.java
index ca6616d..f182f96 100644
--- a/java/org/libjpegturbo/turbojpeg/TJ.java
+++ b/java/org/libjpegturbo/turbojpeg/TJ.java
@@ -31,38 +31,38 @@
 /**
  * TurboJPEG utility class (cannot be instantiated)
  */
-final public class TJ {
+public final class TJ {
 
 
   /**
    * The number of chrominance subsampling options
    */
-  final public static int NUMSAMP   = 5;
+  public static final int NUMSAMP   = 5;
   /**
    * 4:4:4 chrominance subsampling (no chrominance subsampling).  The JPEG
    * or YUV image will contain one chrominance component for every pixel in the
    * source image.
    */
-  final public static int SAMP_444  = 0;
+  public static final int SAMP_444  = 0;
   /**
    * 4:2:2 chrominance subsampling.  The JPEG or YUV image will contain one
    * chrominance component for every 2x1 block of pixels in the source image.
    */
-  final public static int SAMP_422  = 1;
+  public static final int SAMP_422  = 1;
   /**
    * 4:2:0 chrominance subsampling.  The JPEG or YUV image will contain one
    * chrominance component for every 2x2 block of pixels in the source image.
    */
-  final public static int SAMP_420  = 2;
+  public static final int SAMP_420  = 2;
   /**
    * Grayscale.  The JPEG or YUV image will contain no chrominance components.
    */
-  final public static int SAMP_GRAY = 3;
+  public static final int SAMP_GRAY = 3;
   /**
    * 4:4:0 chrominance subsampling.  The JPEG or YUV image will contain one
    * chrominance component for every 1x2 block of pixels in the source image.
    */
-  final public static int SAMP_440  = 4;
+  public static final int SAMP_440  = 4;
 
 
   /**
@@ -75,12 +75,12 @@
    * @return the MCU block width for the given level of chrominance subsampling
    */
   public static int getMCUWidth(int subsamp) throws Exception {
-    if(subsamp < 0 || subsamp >= NUMSAMP)
+    if (subsamp < 0 || subsamp >= NUMSAMP)
       throw new Exception("Invalid subsampling type");
     return mcuWidth[subsamp];
   }
 
-  final private static int mcuWidth[] = {
+  private static final int[] mcuWidth = {
     8, 16, 16, 8, 8
   };
 
@@ -96,12 +96,12 @@
    * subsampling
    */
   public static int getMCUHeight(int subsamp) throws Exception {
-    if(subsamp < 0 || subsamp >= NUMSAMP)
+    if (subsamp < 0 || subsamp >= NUMSAMP)
       throw new Exception("Invalid subsampling type");
     return mcuHeight[subsamp];
   }
 
-  final private static int mcuHeight[] = {
+  private static final int[] mcuHeight = {
     8, 8, 16, 8, 16
   };
 
@@ -109,76 +109,76 @@
   /**
    * The number of pixel formats
    */
-  final public static int NUMPF   = 11;
+  public static final int NUMPF   = 11;
   /**
    * RGB pixel format.  The red, green, and blue components in the image are
    * stored in 3-byte pixels in the order R, G, B from lowest to highest byte
    * address within each pixel.
    */
-  final public static int PF_RGB  = 0;
+  public static final int PF_RGB  = 0;
   /**
    * BGR pixel format.  The red, green, and blue components in the image are
    * stored in 3-byte pixels in the order B, G, R from lowest to highest byte
    * address within each pixel.
    */
-  final public static int PF_BGR  = 1;
+  public static final int PF_BGR  = 1;
   /**
    * RGBX pixel format.  The red, green, and blue components in the image are
    * stored in 4-byte pixels in the order R, G, B from lowest to highest byte
    * address within each pixel.  The X component is ignored when compressing
    * and undefined when decompressing.
    */
-  final public static int PF_RGBX = 2;
+  public static final int PF_RGBX = 2;
   /**
    * BGRX pixel format.  The red, green, and blue components in the image are
    * stored in 4-byte pixels in the order B, G, R from lowest to highest byte
    * address within each pixel.  The X component is ignored when compressing
    * and undefined when decompressing.
    */
-  final public static int PF_BGRX = 3;
+  public static final int PF_BGRX = 3;
   /**
    * XBGR pixel format.  The red, green, and blue components in the image are
    * stored in 4-byte pixels in the order R, G, B from highest to lowest byte
    * address within each pixel.  The X component is ignored when compressing
    * and undefined when decompressing.
    */
-  final public static int PF_XBGR = 4;
+  public static final int PF_XBGR = 4;
   /**
    * XRGB pixel format.  The red, green, and blue components in the image are
    * stored in 4-byte pixels in the order B, G, R from highest to lowest byte
    * address within each pixel.  The X component is ignored when compressing
    * and undefined when decompressing.
    */
-  final public static int PF_XRGB = 5;
+  public static final int PF_XRGB = 5;
   /**
    * Grayscale pixel format.  Each 1-byte pixel represents a luminance
    * (brightness) level from 0 to 255.
    */
-  final public static int PF_GRAY = 6;
+  public static final int PF_GRAY = 6;
   /**
    * RGBA pixel format.  This is the same as {@link #PF_RGBX}, except that when
    * decompressing, the X byte is guaranteed to be 0xFF, which can be
    * interpreted as an opaque alpha channel.
    */
-  final public static int PF_RGBA = 7;
+  public static final int PF_RGBA = 7;
   /**
    * BGRA pixel format.  This is the same as {@link #PF_BGRX}, except that when
    * decompressing, the X byte is guaranteed to be 0xFF, which can be
    * interpreted as an opaque alpha channel.
    */
-  final public static int PF_BGRA = 8;
+  public static final int PF_BGRA = 8;
   /**
    * ABGR pixel format.  This is the same as {@link #PF_XBGR}, except that when
    * decompressing, the X byte is guaranteed to be 0xFF, which can be
    * interpreted as an opaque alpha channel.
    */
-  final public static int PF_ABGR = 9;
+  public static final int PF_ABGR = 9;
   /**
    * ARGB pixel format.  This is the same as {@link #PF_XRGB}, except that when
    * decompressing, the X byte is guaranteed to be 0xFF, which can be
    * interpreted as an opaque alpha channel.
    */
-  final public static int PF_ARGB = 10;
+  public static final int PF_ARGB = 10;
 
 
   /**
@@ -189,12 +189,12 @@
    * @return the pixel size (in bytes) for the given pixel format
    */
   public static int getPixelSize(int pixelFormat) throws Exception {
-    if(pixelFormat < 0 || pixelFormat >= NUMPF)
+    if (pixelFormat < 0 || pixelFormat >= NUMPF)
       throw new Exception("Invalid pixel format");
     return pixelSize[pixelFormat];
   }
 
-  final private static int pixelSize[] = {
+  private static final int[] pixelSize = {
     3, 3, 4, 4, 4, 4, 1, 4, 4, 4, 4
   };
 
@@ -211,12 +211,12 @@
    * @return the red offset for the given pixel format
    */
   public static int getRedOffset(int pixelFormat) throws Exception {
-    if(pixelFormat < 0 || pixelFormat >= NUMPF)
+    if (pixelFormat < 0 || pixelFormat >= NUMPF)
       throw new Exception("Invalid pixel format");
     return redOffset[pixelFormat];
   }
 
-  final private static int redOffset[] = {
+  private static final int[] redOffset = {
     0, 2, 0, 2, 3, 1, 0, 0, 2, 3, 1
   };
 
@@ -233,12 +233,12 @@
    * @return the green offset for the given pixel format
    */
   public static int getGreenOffset(int pixelFormat) throws Exception {
-    if(pixelFormat < 0 || pixelFormat >= NUMPF)
+    if (pixelFormat < 0 || pixelFormat >= NUMPF)
       throw new Exception("Invalid pixel format");
     return greenOffset[pixelFormat];
   }
 
-  final private static int greenOffset[] = {
+  private static final int[] greenOffset = {
     1, 1, 1, 1, 2, 2, 0, 1, 1, 2, 2
   };
 
@@ -255,12 +255,12 @@
    * @return the blue offset for the given pixel format
    */
   public static int getBlueOffset(int pixelFormat) throws Exception {
-    if(pixelFormat < 0 || pixelFormat >= NUMPF)
+    if (pixelFormat < 0 || pixelFormat >= NUMPF)
       throw new Exception("Invalid pixel format");
     return blueOffset[pixelFormat];
   }
 
-  final private static int blueOffset[] = {
+  private static final int[] blueOffset = {
     2, 0, 2, 0, 1, 3, 0, 2, 0, 1, 3
   };
 
@@ -269,27 +269,27 @@
    * The uncompressed source/destination image is stored in bottom-up (Windows,
    * OpenGL) order, not top-down (X11) order.
    */
-  final public static int FLAG_BOTTOMUP     = 2;
+  public static final int FLAG_BOTTOMUP     = 2;
   /**
    * Turn off CPU auto-detection and force TurboJPEG to use MMX code
    * (if the underlying codec supports it.)
    */
-  final public static int FLAG_FORCEMMX     = 8;
+  public static final int FLAG_FORCEMMX     = 8;
   /**
    * Turn off CPU auto-detection and force TurboJPEG to use SSE code
    * (if the underlying codec supports it.)
    */
-  final public static int FLAG_FORCESSE     = 16;
+  public static final int FLAG_FORCESSE     = 16;
   /**
    * Turn off CPU auto-detection and force TurboJPEG to use SSE2 code
    * (if the underlying codec supports it.)
    */
-  final public static int FLAG_FORCESSE2    = 32;
+  public static final int FLAG_FORCESSE2    = 32;
   /**
    * Turn off CPU auto-detection and force TurboJPEG to use SSE3 code
    * (if the underlying codec supports it.)
    */
-  final public static int FLAG_FORCESSE3    = 128;
+  public static final int FLAG_FORCESSE3    = 128;
   /**
    * When decompressing an image that was compressed using chrominance
    * subsampling, use the fastest chrominance upsampling algorithm available in
@@ -297,7 +297,7 @@
    * creates a smooth transition between neighboring chrominance components in
    * order to reduce upsampling artifacts in the decompressed image.
    */
-  final public static int FLAG_FASTUPSAMPLE = 256;
+  public static final int FLAG_FASTUPSAMPLE = 256;
   /**
    * Use the fastest DCT/IDCT algorithm available in the underlying codec.  The
    * default if this flag is not specified is implementation-specific.  The
@@ -306,7 +306,7 @@
    * effect on accuracy, but it uses the accurate algorithm when decompressing,
    * because this has been shown to have a larger effect.
    */
-  final public static int FLAG_FASTDCT      =  2048;
+  public static final int FLAG_FASTDCT      =  2048;
   /**
    * Use the most accurate DCT/IDCT algorithm available in the underlying
    * codec.  The default if this flag is not specified is
@@ -316,7 +316,7 @@
    * accurate algorithm when decompressing, because this has been shown to have
    * a larger effect.
    */
-  final public static int FLAG_ACCURATEDCT  =  4096;
+  public static final int FLAG_ACCURATEDCT  =  4096;
 
 
   /**
@@ -333,7 +333,7 @@
    * @return the maximum size of the buffer (in bytes) required to hold a JPEG
    * image with the given width, height, and level of chrominance subsampling
    */
-  public native static int bufSize(int width, int height, int jpegSubsamp)
+  public static native int bufSize(int width, int height, int jpegSubsamp)
     throws Exception;
 
   /**
@@ -350,7 +350,7 @@
    * @return the size of the buffer (in bytes) required to hold a YUV planar
    * image with the given width, height, and level of chrominance subsampling
    */
-  public native static int bufSizeYUV(int width, int height,
+  public static native int bufSizeYUV(int width, int height,
     int subsamp)
     throws Exception;
 
@@ -361,7 +361,7 @@
    * @return a list of fractional scaling factors that the JPEG decompressor in
    * this implementation of TurboJPEG supports
    */
-  public native static TJScalingFactor[] getScalingFactors()
+  public static native TJScalingFactor[] getScalingFactors()
     throws Exception;
 
   static {
diff --git a/java/org/libjpegturbo/turbojpeg/TJCompressor.java b/java/org/libjpegturbo/turbojpeg/TJCompressor.java
index f46eee9..24c122b 100644
--- a/java/org/libjpegturbo/turbojpeg/TJCompressor.java
+++ b/java/org/libjpegturbo/turbojpeg/TJCompressor.java
@@ -36,7 +36,7 @@
  */
 public class TJCompressor {
 
-  private final static String NO_ASSOC_ERROR =
+  private static final String NO_ASSOC_ERROR =
     "No source image is associated with this instance";
 
   /**
@@ -63,7 +63,7 @@
    * {@link TJ TJ.PF_*})
    */
   public TJCompressor(byte[] srcImage, int width, int pitch, int height,
-    int pixelFormat) throws Exception {
+                      int pixelFormat) throws Exception {
     setSourceImage(srcImage, width, pitch, height, pixelFormat);
   }
 
@@ -88,7 +88,7 @@
    * {@link TJ TJ.PF_*})
    */
   public TJCompressor(byte[] srcImage, int x, int y, int width, int pitch,
-    int height, int pixelFormat) throws Exception {
+                      int height, int pixelFormat) throws Exception {
     setSourceImage(srcImage, x, y, width, pitch, height, pixelFormat);
   }
 
@@ -123,15 +123,18 @@
    * {@link TJ TJ.PF_*})
    */
   public void setSourceImage(byte[] srcImage, int x, int y, int width,
-    int pitch, int height, int pixelFormat) throws Exception {
-    if(handle == 0) init();
-    if(srcImage == null || x < 0 || y < 0 || width < 1 || height < 1
-      || pitch < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF)
+                             int pitch, int height, int pixelFormat)
+                             throws Exception {
+    if (handle == 0) init();
+    if (srcImage == null || x < 0 || y < 0 || width < 1 || height < 1 ||
+        pitch < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF)
       throw new Exception("Invalid argument in setSourceImage()");
     srcBuf = srcImage;
     srcWidth = width;
-    if(pitch == 0) srcPitch = width * TJ.getPixelSize(pixelFormat);
-    else srcPitch = pitch;
+    if (pitch == 0)
+      srcPitch = width * TJ.getPixelSize(pixelFormat);
+    else
+      srcPitch = pitch;
     srcHeight = height;
     srcPixelFormat = pixelFormat;
     srcX = x;
@@ -143,7 +146,7 @@
    * {@link #setSourceImage(byte[], int, int, int, int, int, int)} instead.
    */
   public void setSourceImage(byte[] srcImage, int width, int pitch,
-    int height, int pixelFormat) throws Exception {
+                             int height, int pixelFormat) throws Exception {
     setSourceImage(srcImage, 0, 0, width, pitch, height, pixelFormat);
     srcX = srcY = -1;
   }
@@ -157,7 +160,7 @@
    * {@link TJ TJ.SAMP_*})
    */
   public void setSubsamp(int newSubsamp) throws Exception {
-    if(newSubsamp < 0 || newSubsamp >= TJ.NUMSAMP)
+    if (newSubsamp < 0 || newSubsamp >= TJ.NUMSAMP)
       throw new Exception("Invalid argument in setSubsamp()");
     subsamp = newSubsamp;
   }
@@ -169,7 +172,7 @@
    * 100 = best)
    */
   public void setJPEGQuality(int quality) throws Exception {
-    if(quality < 1 || quality > 100)
+    if (quality < 1 || quality > 100)
       throw new Exception("Invalid argument in setJPEGQuality()");
     jpegQuality = quality;
   }
@@ -185,17 +188,22 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void compress(byte[] dstBuf, int flags) throws Exception {
-    if(dstBuf == null || flags < 0)
+    if (dstBuf == null || flags < 0)
       throw new Exception("Invalid argument in compress()");
-    if(srcBuf == null) throw new Exception(NO_ASSOC_ERROR);
-    if(jpegQuality < 0) throw new Exception("JPEG Quality not set");
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
+    if (srcBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (jpegQuality < 0)
+      throw new Exception("JPEG Quality not set");
+    if (subsamp < 0)
+      throw new Exception("Subsampling level not set");
     if (srcX >= 0 && srcY >= 0)
       compressedSize = compress(srcBuf, srcX, srcY, srcWidth, srcPitch,
-        srcHeight, srcPixelFormat, dstBuf, subsamp, jpegQuality, flags);
+                                srcHeight, srcPixelFormat, dstBuf, subsamp,
+                                jpegQuality, flags);
     else
-      compressedSize = compress(srcBuf, srcWidth, srcPitch,
-        srcHeight, srcPixelFormat, dstBuf, subsamp, jpegQuality, flags);
+      compressedSize = compress(srcBuf, srcWidth, srcPitch, srcHeight,
+                                srcPixelFormat, dstBuf, subsamp, jpegQuality,
+                                flags);
   }
 
   /**
@@ -209,7 +217,7 @@
    * #getCompressedSize} to obtain the size of the JPEG image.
    */
   public byte[] compress(int flags) throws Exception {
-    if(srcWidth < 1 || srcHeight < 1)
+    if (srcWidth < 1 || srcHeight < 1)
       throw new Exception(NO_ASSOC_ERROR);
     byte[] buf = new byte[TJ.bufSize(srcWidth, srcHeight, subsamp)];
     compress(buf, flags);
@@ -230,13 +238,14 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void compress(BufferedImage srcImage, byte[] dstBuf, int flags)
-    throws Exception {
-    if(srcImage == null || dstBuf == null || flags < 0)
+                       throws Exception {
+    if (srcImage == null || dstBuf == null || flags < 0)
       throw new Exception("Invalid argument in compress()");
     int width = srcImage.getWidth();
     int height = srcImage.getHeight();
-    int pixelFormat;  boolean intPixels = false;
-    if(byteOrder == null)
+    int pixelFormat;
+    boolean intPixels = false;
+    if (byteOrder == null)
       byteOrder = ByteOrder.nativeOrder();
     switch(srcImage.getType()) {
       case BufferedImage.TYPE_3BYTE_BGR:
@@ -247,7 +256,7 @@
       case BufferedImage.TYPE_BYTE_GRAY:
         pixelFormat = TJ.PF_GRAY;  break;
       case BufferedImage.TYPE_INT_BGR:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XBGR;
         else
           pixelFormat = TJ.PF_RGBX;
@@ -255,7 +264,7 @@
       case BufferedImage.TYPE_INT_RGB:
       case BufferedImage.TYPE_INT_ARGB:
       case BufferedImage.TYPE_INT_ARGB_PRE:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XRGB;
         else
           pixelFormat = TJ.PF_BGRX;
@@ -264,9 +273,11 @@
         throw new Exception("Unsupported BufferedImage format");
     }
     WritableRaster wr = srcImage.getRaster();
-    if(jpegQuality < 0) throw new Exception("JPEG Quality not set");
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
-    if(intPixels) {
+    if (jpegQuality < 0)
+      throw new Exception("JPEG Quality not set");
+    if (subsamp < 0)
+      throw new Exception("Subsampling level not set");
+    if (intPixels) {
       SinglePixelPackedSampleModel sm =
         (SinglePixelPackedSampleModel)srcImage.getSampleModel();
       int pitch = sm.getScanlineStride();
@@ -274,26 +285,27 @@
       int[] buf = db.getData();
       if (srcX >= 0 && srcY >= 0)
         compressedSize = compress(buf, srcX, srcY, width, pitch, height,
-          pixelFormat, dstBuf, subsamp, jpegQuality, flags);
+                                  pixelFormat, dstBuf, subsamp, jpegQuality,
+                                  flags);
       else
         compressedSize = compress(buf, width, pitch, height, pixelFormat,
-          dstBuf, subsamp, jpegQuality, flags);
-    }
-    else {
+                                  dstBuf, subsamp, jpegQuality, flags);
+    } else {
       ComponentSampleModel sm =
         (ComponentSampleModel)srcImage.getSampleModel();
       int pixelSize = sm.getPixelStride();
-      if(pixelSize != TJ.getPixelSize(pixelFormat))
+      if (pixelSize != TJ.getPixelSize(pixelFormat))
         throw new Exception("Inconsistency between pixel format and pixel size in BufferedImage");
       int pitch = sm.getScanlineStride();
       DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
       byte[] buf = db.getData();
       if (srcX >= 0 && srcY >= 0)
         compressedSize = compress(buf, srcX, srcY, width, pitch, height,
-          pixelFormat, dstBuf, subsamp, jpegQuality, flags);
+                                  pixelFormat, dstBuf, subsamp, jpegQuality,
+                                  flags);
       else
         compressedSize = compress(buf, width, pitch, height, pixelFormat,
-          dstBuf, subsamp, jpegQuality, flags);
+                                  dstBuf, subsamp, jpegQuality, flags);
     }
   }
 
@@ -340,12 +352,14 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void encodeYUV(byte[] dstBuf, int flags) throws Exception {
-    if(dstBuf == null || flags < 0)
+    if (dstBuf == null || flags < 0)
       throw new Exception("Invalid argument in compress()");
-    if(srcBuf == null) throw new Exception(NO_ASSOC_ERROR);
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
+    if (srcBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (subsamp < 0)
+      throw new Exception("Subsampling level not set");
     encodeYUV(srcBuf, srcWidth, srcPitch, srcHeight,
-      srcPixelFormat, dstBuf, subsamp, flags);
+              srcPixelFormat, dstBuf, subsamp, flags);
     compressedSize = TJ.bufSizeYUV(srcWidth, srcHeight, subsamp);
   }
 
@@ -359,9 +373,10 @@
    * @return a buffer containing a YUV planar image
    */
   public byte[] encodeYUV(int flags) throws Exception {
-    if(srcWidth < 1 || srcHeight < 1)
+    if (srcWidth < 1 || srcHeight < 1)
       throw new Exception(NO_ASSOC_ERROR);
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
+    if (subsamp < 0)
+      throw new Exception("Subsampling level not set");
     byte[] buf = new byte[TJ.bufSizeYUV(srcWidth, srcHeight, subsamp)];
     encodeYUV(buf, flags);
     return buf;
@@ -383,12 +398,12 @@
    */
   public void encodeYUV(BufferedImage srcImage, byte[] dstBuf, int flags)
     throws Exception {
-    if(srcImage == null || dstBuf == null || flags < 0)
+    if (srcImage == null || dstBuf == null || flags < 0)
       throw new Exception("Invalid argument in encodeYUV()");
     int width = srcImage.getWidth();
     int height = srcImage.getHeight();
     int pixelFormat;  boolean intPixels = false;
-    if(byteOrder == null)
+    if (byteOrder == null)
       byteOrder = ByteOrder.nativeOrder();
     switch(srcImage.getType()) {
       case BufferedImage.TYPE_3BYTE_BGR:
@@ -399,7 +414,7 @@
       case BufferedImage.TYPE_BYTE_GRAY:
         pixelFormat = TJ.PF_GRAY;  break;
       case BufferedImage.TYPE_INT_BGR:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XBGR;
         else
           pixelFormat = TJ.PF_RGBX;
@@ -407,7 +422,7 @@
       case BufferedImage.TYPE_INT_RGB:
       case BufferedImage.TYPE_INT_ARGB:
       case BufferedImage.TYPE_INT_ARGB_PRE:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XRGB;
         else
           pixelFormat = TJ.PF_BGRX;
@@ -416,27 +431,26 @@
         throw new Exception("Unsupported BufferedImage format");
     }
     WritableRaster wr = srcImage.getRaster();
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
-    if(intPixels) {
+    if (subsamp < 0) throw new Exception("Subsampling level not set");
+    if (intPixels) {
       SinglePixelPackedSampleModel sm =
         (SinglePixelPackedSampleModel)srcImage.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
       int[] buf = db.getData();
       encodeYUV(buf, width, pitch, height, pixelFormat, dstBuf, subsamp,
-        flags);
-    }
-    else {
+                flags);
+    } else {
       ComponentSampleModel sm =
         (ComponentSampleModel)srcImage.getSampleModel();
       int pixelSize = sm.getPixelStride();
-      if(pixelSize != TJ.getPixelSize(pixelFormat))
+      if (pixelSize != TJ.getPixelSize(pixelFormat))
         throw new Exception("Inconsistency between pixel format and pixel size in BufferedImage");
       int pitch = sm.getScanlineStride();
       DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
       byte[] buf = db.getData();
       encodeYUV(buf, width, pitch, height, pixelFormat, dstBuf, subsamp,
-        flags);
+                flags);
     }
     compressedSize = TJ.bufSizeYUV(width, height, subsamp);
   }
@@ -453,9 +467,9 @@
    *
    * @return a buffer containing a YUV planar image
    */
-  public byte[] encodeYUV(BufferedImage srcImage, int flags)
-    throws Exception {
-    if(subsamp < 0) throw new Exception("Subsampling level not set");
+  public byte[] encodeYUV(BufferedImage srcImage, int flags) throws Exception {
+    if (subsamp < 0)
+      throw new Exception("Subsampling level not set");
     int width = srcImage.getWidth();
     int height = srcImage.getHeight();
     byte[] buf = new byte[TJ.bufSizeYUV(width, height, subsamp)];
@@ -484,9 +498,8 @@
   protected void finalize() throws Throwable {
     try {
       close();
-    }
-    catch(Exception e) {}
-    finally {
+    } catch(Exception e) {
+    } finally {
       super.finalize();
     }
   };
diff --git a/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java b/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java
index 412e6a5..6e46fa1 100644
--- a/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java
+++ b/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java
@@ -69,8 +69,8 @@
    * @param transform a {@link TJTransform} instance that specifies the
    * parameters and/or cropping region for this transform
    */
-  public void customFilter(ShortBuffer coeffBuffer, Rectangle bufferRegion,
-    Rectangle planeRegion, int componentID, int transformID,
-    TJTransform transform)
+  void customFilter(ShortBuffer coeffBuffer, Rectangle bufferRegion,
+                    Rectangle planeRegion, int componentID, int transformID,
+                    TJTransform transform)
     throws Exception;
 }
diff --git a/java/org/libjpegturbo/turbojpeg/TJDecompressor.java b/java/org/libjpegturbo/turbojpeg/TJDecompressor.java
index 4530d41..c4bb5a3 100644
--- a/java/org/libjpegturbo/turbojpeg/TJDecompressor.java
+++ b/java/org/libjpegturbo/turbojpeg/TJDecompressor.java
@@ -36,7 +36,7 @@
  */
 public class TJDecompressor {
 
-  private final static String NO_ASSOC_ERROR =
+  private static final String NO_ASSOC_ERROR =
     "No JPEG image is associated with this instance";
 
   /**
@@ -82,7 +82,7 @@
    * @param imageSize size of the JPEG image (in bytes)
    */
   public void setJPEGImage(byte[] jpegImage, int imageSize) throws Exception {
-    if(jpegImage == null || imageSize < 1)
+    if (jpegImage == null || imageSize < 1)
       throw new Exception("Invalid argument in setJPEGImage()");
     jpegBuf = jpegImage;
     jpegBufSize = imageSize;
@@ -97,7 +97,8 @@
    * instance
    */
   public int getWidth() throws Exception {
-    if(jpegWidth < 1) throw new Exception(NO_ASSOC_ERROR);
+    if (jpegWidth < 1)
+      throw new Exception(NO_ASSOC_ERROR);
     return jpegWidth;
   }
 
@@ -109,7 +110,8 @@
    * instance
    */
   public int getHeight() throws Exception {
-    if(jpegHeight < 1) throw new Exception(NO_ASSOC_ERROR);
+    if (jpegHeight < 1)
+      throw new Exception(NO_ASSOC_ERROR);
     return jpegHeight;
   }
 
@@ -121,8 +123,9 @@
    * associated with this decompressor instance
    */
   public int getSubsamp() throws Exception {
-    if(jpegSubsamp < 0) throw new Exception(NO_ASSOC_ERROR);
-    if(jpegSubsamp >= TJ.NUMSAMP)
+    if (jpegSubsamp < 0)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (jpegSubsamp >= TJ.NUMSAMP)
       throw new Exception("JPEG header information is invalid");
     return jpegSubsamp;
   }
@@ -133,7 +136,8 @@
    * @return the JPEG image buffer associated with this decompressor instance
    */
   public byte[] getJPEGBuf() throws Exception {
-    if(jpegBuf == null) throw new Exception(NO_ASSOC_ERROR);
+    if (jpegBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
     return jpegBuf;
   }
 
@@ -145,7 +149,8 @@
    * decompressor instance
    */
   public int getJPEGSize() throws Exception {
-    if(jpegBufSize < 1) throw new Exception(NO_ASSOC_ERROR);
+    if (jpegBufSize < 1)
+      throw new Exception(NO_ASSOC_ERROR);
     return jpegBufSize;
   }
 
@@ -170,22 +175,24 @@
    * height
    */
   public int getScaledWidth(int desiredWidth, int desiredHeight)
-    throws Exception {
-    if(jpegWidth < 1 || jpegHeight < 1)
+                            throws Exception {
+    if (jpegWidth < 1 || jpegHeight < 1)
       throw new Exception(NO_ASSOC_ERROR);
-    if(desiredWidth < 0 || desiredHeight < 0)
+    if (desiredWidth < 0 || desiredHeight < 0)
       throw new Exception("Invalid argument in getScaledWidth()");
-    TJScalingFactor sf[] = TJ.getScalingFactors();
-    if(desiredWidth == 0) desiredWidth = jpegWidth;
-    if(desiredHeight == 0) desiredHeight = jpegHeight;
+    TJScalingFactor[] sf = TJ.getScalingFactors();
+    if (desiredWidth == 0)
+      desiredWidth = jpegWidth;
+    if (desiredHeight == 0)
+      desiredHeight = jpegHeight;
     int scaledWidth = jpegWidth, scaledHeight = jpegHeight;
-    for(int i = 0; i < sf.length; i++) {
+    for (int i = 0; i < sf.length; i++) {
       scaledWidth = sf[i].getScaled(jpegWidth);
       scaledHeight = sf[i].getScaled(jpegHeight);
-      if(scaledWidth <= desiredWidth && scaledHeight <= desiredHeight)
+      if (scaledWidth <= desiredWidth && scaledHeight <= desiredHeight)
         break;
     }
-    if(scaledWidth > desiredWidth || scaledHeight > desiredHeight)
+    if (scaledWidth > desiredWidth || scaledHeight > desiredHeight)
       throw new Exception("Could not scale down to desired image dimensions");
     return scaledWidth;
   }
@@ -210,22 +217,24 @@
    * height
    */
   public int getScaledHeight(int desiredWidth, int desiredHeight)
-    throws Exception {
-    if(jpegWidth < 1 || jpegHeight < 1)
+                             throws Exception {
+    if (jpegWidth < 1 || jpegHeight < 1)
       throw new Exception(NO_ASSOC_ERROR);
-    if(desiredWidth < 0 || desiredHeight < 0)
+    if (desiredWidth < 0 || desiredHeight < 0)
       throw new Exception("Invalid argument in getScaledHeight()");
-    TJScalingFactor sf[] = TJ.getScalingFactors();
-    if(desiredWidth == 0) desiredWidth = jpegWidth;
-    if(desiredHeight == 0) desiredHeight = jpegHeight;
+    TJScalingFactor[] sf = TJ.getScalingFactors();
+    if (desiredWidth == 0)
+      desiredWidth = jpegWidth;
+    if (desiredHeight == 0)
+      desiredHeight = jpegHeight;
     int scaledWidth = jpegWidth, scaledHeight = jpegHeight;
-    for(int i = 0; i < sf.length; i++) {
+    for (int i = 0; i < sf.length; i++) {
       scaledWidth = sf[i].getScaled(jpegWidth);
       scaledHeight = sf[i].getScaled(jpegHeight);
-      if(scaledWidth <= desiredWidth && scaledHeight <= desiredHeight)
+      if (scaledWidth <= desiredWidth && scaledHeight <= desiredHeight)
         break;
     }
-    if(scaledWidth > desiredWidth || scaledHeight > desiredHeight)
+    if (scaledWidth > desiredWidth || scaledHeight > desiredHeight)
       throw new Exception("Could not scale down to desired image dimensions");
     return scaledHeight;
   }
@@ -284,15 +293,16 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void decompress(byte[] dstBuf, int x, int y, int desiredWidth,
-    int pitch, int desiredHeight, int pixelFormat, int flags)
-    throws Exception {
-    if(jpegBuf == null) throw new Exception(NO_ASSOC_ERROR);
-    if(dstBuf == null || x < 0 || y < 0 || desiredWidth < 0 || pitch < 0
-      || desiredHeight < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF
-      || flags < 0)
+                         int pitch, int desiredHeight, int pixelFormat,
+                         int flags) throws Exception {
+    if (jpegBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (dstBuf == null || x < 0 || y < 0 || desiredWidth < 0 || pitch < 0 ||
+        desiredHeight < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF ||
+        flags < 0)
       throw new Exception("Invalid argument in decompress()");
     decompress(jpegBuf, jpegBufSize, dstBuf, x, y, desiredWidth, pitch,
-      desiredHeight, pixelFormat, flags);
+               desiredHeight, pixelFormat, flags);
   }
 
   /**
@@ -300,10 +310,10 @@
    * {@link #decompress(byte[], int, int, int, int, int, int, int)} instead.
    */
   public void decompress(byte[] dstBuf, int desiredWidth, int pitch,
-    int desiredHeight, int pixelFormat, int flags)
-    throws Exception {
+                         int desiredHeight, int pixelFormat, int flags)
+                         throws Exception {
     decompress(dstBuf, 0, 0, desiredWidth, pitch, desiredHeight, pixelFormat,
-      flags);
+               flags);
   }
 
   /**
@@ -330,14 +340,15 @@
    * @return a buffer containing the decompressed image
    */
   public byte[] decompress(int desiredWidth, int pitch, int desiredHeight,
-    int pixelFormat, int flags) throws Exception {
-    if(desiredWidth < 0 || pitch < 0 || desiredHeight < 0
-      || pixelFormat < 0 || pixelFormat >= TJ.NUMPF || flags < 0)
+                           int pixelFormat, int flags) throws Exception {
+    if (desiredWidth < 0 || pitch < 0 || desiredHeight < 0 ||
+        pixelFormat < 0 || pixelFormat >= TJ.NUMPF || flags < 0)
       throw new Exception("Invalid argument in decompress()");
     int pixelSize = TJ.getPixelSize(pixelFormat);
     int scaledWidth = getScaledWidth(desiredWidth, desiredHeight);
     int scaledHeight = getScaledHeight(desiredWidth, desiredHeight);
-    if(pitch == 0) pitch = scaledWidth * pixelSize;
+    if (pitch == 0)
+      pitch = scaledWidth * pixelSize;
     byte[] buf = new byte[pitch * scaledHeight];
     decompress(buf, desiredWidth, pitch, desiredHeight, pixelFormat, flags);
     return buf;
@@ -361,13 +372,14 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void decompressToYUV(byte[] dstBuf, int flags) throws Exception {
-    if(jpegBuf == null) throw new Exception(NO_ASSOC_ERROR);
-    if(dstBuf == null || flags < 0)
+    if (jpegBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (dstBuf == null || flags < 0)
       throw new Exception("Invalid argument in decompressToYUV()");
     decompressToYUV(jpegBuf, jpegBufSize, dstBuf, flags);
   }
 
-  
+
   /**
    * Decompress the JPEG source image associated with this decompressor
    * instance and return a buffer containing a YUV planar image.  See {@link
@@ -378,11 +390,11 @@
    * @return a buffer containing a YUV planar image
    */
   public byte[] decompressToYUV(int flags) throws Exception {
-    if(flags < 0)
+    if (flags < 0)
       throw new Exception("Invalid argument in decompressToYUV()");
-    if(jpegWidth < 1 || jpegHeight < 1 || jpegSubsamp < 0)
+    if (jpegWidth < 1 || jpegHeight < 1 || jpegSubsamp < 0)
       throw new Exception(NO_ASSOC_ERROR);
-    if(jpegSubsamp >= TJ.NUMSAMP)
+    if (jpegSubsamp >= TJ.NUMSAMP)
       throw new Exception("JPEG header information is invalid");
     byte[] buf = new byte[TJ.bufSizeYUV(jpegWidth, jpegHeight, jpegSubsamp)];
     decompressToYUV(buf, flags);
@@ -440,15 +452,16 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void decompress(int[] dstBuf, int x, int y, int desiredWidth,
-    int stride, int desiredHeight, int pixelFormat, int flags)
-    throws Exception {
-    if(jpegBuf == null) throw new Exception(NO_ASSOC_ERROR);
-    if(dstBuf == null || x < 0 || y < 0 || desiredWidth < 0 || stride < 0
-      || desiredHeight < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF
-      || flags < 0)
+                         int stride, int desiredHeight, int pixelFormat,
+                         int flags) throws Exception {
+    if (jpegBuf == null)
+      throw new Exception(NO_ASSOC_ERROR);
+    if (dstBuf == null || x < 0 || y < 0 || desiredWidth < 0 || stride < 0 ||
+        desiredHeight < 0 || pixelFormat < 0 || pixelFormat >= TJ.NUMPF ||
+        flags < 0)
       throw new Exception("Invalid argument in decompress()");
     decompress(jpegBuf, jpegBufSize, dstBuf, x, y, desiredWidth, stride,
-      desiredHeight, pixelFormat, flags);
+               desiredHeight, pixelFormat, flags);
   }
 
   /**
@@ -462,16 +475,16 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void decompress(BufferedImage dstImage, int flags) throws Exception {
-    if(dstImage == null || flags < 0)
+    if (dstImage == null || flags < 0)
       throw new Exception("Invalid argument in decompress()");
     int desiredWidth = dstImage.getWidth();
     int desiredHeight = dstImage.getHeight();
     int scaledWidth = getScaledWidth(desiredWidth, desiredHeight);
     int scaledHeight = getScaledHeight(desiredWidth, desiredHeight);
-    if(scaledWidth != desiredWidth || scaledHeight != desiredHeight)
+    if (scaledWidth != desiredWidth || scaledHeight != desiredHeight)
       throw new Exception("BufferedImage dimensions do not match a scaled image size that TurboJPEG is capable of generating.");
     int pixelFormat;  boolean intPixels = false;
-    if(byteOrder == null)
+    if (byteOrder == null)
       byteOrder = ByteOrder.nativeOrder();
     switch(dstImage.getType()) {
       case BufferedImage.TYPE_3BYTE_BGR:
@@ -482,20 +495,20 @@
       case BufferedImage.TYPE_BYTE_GRAY:
         pixelFormat = TJ.PF_GRAY;  break;
       case BufferedImage.TYPE_INT_BGR:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XBGR;
         else
           pixelFormat = TJ.PF_RGBX;
         intPixels = true;  break;
       case BufferedImage.TYPE_INT_RGB:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_XRGB;
         else
           pixelFormat = TJ.PF_BGRX;
         intPixels = true;  break;
       case BufferedImage.TYPE_INT_ARGB:
       case BufferedImage.TYPE_INT_ARGB_PRE:
-        if(byteOrder == ByteOrder.BIG_ENDIAN)
+        if (byteOrder == ByteOrder.BIG_ENDIAN)
           pixelFormat = TJ.PF_ARGB;
         else
           pixelFormat = TJ.PF_BGRA;
@@ -504,21 +517,21 @@
         throw new Exception("Unsupported BufferedImage format");
     }
     WritableRaster wr = dstImage.getRaster();
-    if(intPixels) {
+    if (intPixels) {
       SinglePixelPackedSampleModel sm =
         (SinglePixelPackedSampleModel)dstImage.getSampleModel();
       int pitch = sm.getScanlineStride();
       DataBufferInt db = (DataBufferInt)wr.getDataBuffer();
       int[] buf = db.getData();
-      if(jpegBuf == null) throw new Exception(NO_ASSOC_ERROR);
+      if (jpegBuf == null)
+        throw new Exception(NO_ASSOC_ERROR);
       decompress(jpegBuf, jpegBufSize, buf, scaledWidth, pitch, scaledHeight,
-        pixelFormat, flags);
-    }
-    else {
+                 pixelFormat, flags);
+    } else {
       ComponentSampleModel sm =
         (ComponentSampleModel)dstImage.getSampleModel();
       int pixelSize = sm.getPixelStride();
-      if(pixelSize != TJ.getPixelSize(pixelFormat))
+      if (pixelSize != TJ.getPixelSize(pixelFormat))
         throw new Exception("Inconsistency between pixel format and pixel size in BufferedImage");
       int pitch = sm.getScanlineStride();
       DataBufferByte db = (DataBufferByte)wr.getDataBuffer();
@@ -550,13 +563,14 @@
    * decompressed image
    */
   public BufferedImage decompress(int desiredWidth, int desiredHeight,
-    int bufferedImageType, int flags) throws Exception {
-    if(desiredWidth < 0 || desiredHeight < 0 || flags < 0)
+                                  int bufferedImageType, int flags)
+                                  throws Exception {
+    if (desiredWidth < 0 || desiredHeight < 0 || flags < 0)
       throw new Exception("Invalid argument in decompress()");
     int scaledWidth = getScaledWidth(desiredWidth, desiredHeight);
     int scaledHeight = getScaledHeight(desiredWidth, desiredHeight);
     BufferedImage img = new BufferedImage(scaledWidth, scaledHeight,
-      bufferedImageType);
+                                          bufferedImageType);
     decompress(img, flags);
     return img;
   }
@@ -571,9 +585,8 @@
   protected void finalize() throws Throwable {
     try {
       close();
-    }
-    catch(Exception e) {}
-    finally {
+    } catch(Exception e) {
+    } finally {
       super.finalize();
     }
   };
diff --git a/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java b/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java
index d71ceee..4e7363f 100644
--- a/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java
+++ b/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java
@@ -34,7 +34,7 @@
 public class TJScalingFactor {
 
   public TJScalingFactor(int num, int denom) throws Exception {
-    if(num < 1 || denom < 1)
+    if (num < 1 || denom < 1)
       throw new Exception("Numerator and denominator must be >= 1");
     this.num = num;
     this.denom = denom;
diff --git a/java/org/libjpegturbo/turbojpeg/TJTransform.java b/java/org/libjpegturbo/turbojpeg/TJTransform.java
index cfbc896..b464ffd 100644
--- a/java/org/libjpegturbo/turbojpeg/TJTransform.java
+++ b/java/org/libjpegturbo/turbojpeg/TJTransform.java
@@ -40,54 +40,54 @@
   /**
    * The number of lossless transform operations
    */
-  final public static int NUMOP         = 8;
+  public static final int NUMOP         = 8;
   /**
    * Do not transform the position of the image pixels.
    */
-  final public static int OP_NONE       = 0;
+  public static final int OP_NONE       = 0;
   /**
    * Flip (mirror) image horizontally.  This transform is imperfect if there
    * are any partial MCU blocks on the right edge.
    * @see #OPT_PERFECT
    */
-  final public static int OP_HFLIP      = 1;
+  public static final int OP_HFLIP      = 1;
   /**
    * Flip (mirror) image vertically.  This transform is imperfect if there are
    * any partial MCU blocks on the bottom edge.
    * @see #OPT_PERFECT
    */
-  final public static int OP_VFLIP      = 2;
+  public static final int OP_VFLIP      = 2;
   /**
    * Transpose image (flip/mirror along upper left to lower right axis).  This
    * transform is always perfect.
    * @see #OPT_PERFECT
    */
-  final public static int OP_TRANSPOSE  = 3;
+  public static final int OP_TRANSPOSE  = 3;
   /**
    * Transverse transpose image (flip/mirror along upper right to lower left
    * axis).  This transform is imperfect if there are any partial MCU blocks in
    * the image.
    * @see #OPT_PERFECT
    */
-  final public static int OP_TRANSVERSE = 4;
+  public static final int OP_TRANSVERSE = 4;
   /**
    * Rotate image clockwise by 90 degrees.  This transform is imperfect if
    * there are any partial MCU blocks on the bottom edge.
    * @see #OPT_PERFECT
    */
-  final public static int OP_ROT90      = 5;
+  public static final int OP_ROT90      = 5;
   /**
    * Rotate image 180 degrees.  This transform is imperfect if there are any
    * partial MCU blocks in the image.
    * @see #OPT_PERFECT
    */
-  final public static int OP_ROT180     = 6;
+  public static final int OP_ROT180     = 6;
   /**
    * Rotate image counter-clockwise by 90 degrees.  This transform is imperfect
    * if there are any partial MCU blocks on the right edge.
    * @see #OPT_PERFECT
    */
-  final public static int OP_ROT270     = 7;
+  public static final int OP_ROT270     = 7;
 
 
   /**
@@ -103,21 +103,21 @@
    * partial MCU blocks that cannot be transformed will be left in place, which
    * will create odd-looking strips on the right or bottom edge of the image.
    */
-  final public static int OPT_PERFECT  = 1;
+  public static final int OPT_PERFECT  = 1;
   /**
    * This option will discard any partial MCU blocks that cannot be
    * transformed.
    */
-  final public static int OPT_TRIM     = 2;
+  public static final int OPT_TRIM     = 2;
   /**
    * This option will enable lossless cropping.
    */
-  final public static int OPT_CROP     = 4;
+  public static final int OPT_CROP     = 4;
   /**
    * This option will discard the color data in the input image and produce
    * a grayscale output image.
    */
-  final public static int OPT_GRAY     = 8;
+  public static final int OPT_GRAY     = 8;
   /**
    * This option will prevent {@link TJTransformer#transform
    * TJTransformer.transform()} from outputting a JPEG image for this
@@ -125,9 +125,9 @@
    * filter to capture the transformed DCT coefficients without transcoding
    * them.
    */
-  final public static int OPT_NOOUTPUT = 16;
+  public static final int OPT_NOOUTPUT = 16;
 
-  
+
   /**
    * Create a new lossless transform instance.
    */
@@ -160,9 +160,11 @@
    * TJCustomFilter} interface, or null if no custom filter is needed
    */
   public TJTransform(int x, int y, int w, int h, int op, int options,
-    TJCustomFilter cf) throws Exception {
+                     TJCustomFilter cf) throws Exception {
     super(x, y, w, h);
-    this.op = op;  this.options = options;  this.cf = cf;
+    this.op = op;
+    this.options = options;
+    this.cf = cf;
   }
 
   /**
@@ -182,9 +184,11 @@
    * TJCustomFilter} interface, or null if no custom filter is needed
    */
   public TJTransform(Rectangle r, int op, int options,
-    TJCustomFilter cf) throws Exception {
+                     TJCustomFilter cf) throws Exception {
     super(r);
-    this.op = op;  this.options = options;  this.cf = cf;
+    this.op = op;
+    this.options = options;
+    this.cf = cf;
   }
 
   /**
diff --git a/java/org/libjpegturbo/turbojpeg/TJTransformer.java b/java/org/libjpegturbo/turbojpeg/TJTransformer.java
index 72c87cd..f84eaa1 100644
--- a/java/org/libjpegturbo/turbojpeg/TJTransformer.java
+++ b/java/org/libjpegturbo/turbojpeg/TJTransformer.java
@@ -93,12 +93,13 @@
    * @param flags the bitwise OR of one or more of {@link TJ TJ.FLAG_*}
    */
   public void transform(byte[][] dstBufs, TJTransform[] transforms,
-    int flags) throws Exception {
-    if(jpegBuf == null) throw new Exception("JPEG buffer not initialized");
+                        int flags) throws Exception {
+    if (jpegBuf == null)
+      throw new Exception("JPEG buffer not initialized");
     transformedSizes = transform(jpegBuf, jpegBufSize, dstBufs, transforms,
-      flags);
+                                 flags);
   }
-  
+
   /**
    * Losslessly transform the JPEG image associated with this transformer
    * instance and return an array of {@link TJDecompressor} instances, each of
@@ -116,23 +117,23 @@
   public TJDecompressor[] transform(TJTransform[] transforms, int flags)
     throws Exception {
     byte[][] dstBufs = new byte[transforms.length][];
-    if(jpegWidth < 1 || jpegHeight < 1)
+    if (jpegWidth < 1 || jpegHeight < 1)
       throw new Exception("JPEG buffer not initialized");
-    for(int i = 0; i < transforms.length; i++) {
+    for (int i = 0; i < transforms.length; i++) {
       int w = jpegWidth, h = jpegHeight;
-      if((transforms[i].options & TJTransform.OPT_CROP) != 0) {
-        if(transforms[i].width != 0) w = transforms[i].width;
-        if(transforms[i].height != 0) h = transforms[i].height;
+      if ((transforms[i].options & TJTransform.OPT_CROP) != 0) {
+        if (transforms[i].width != 0) w = transforms[i].width;
+        if (transforms[i].height != 0) h = transforms[i].height;
       }
       dstBufs[i] = new byte[TJ.bufSize(w, h, jpegSubsamp)];
     }
     TJDecompressor[] tjd = new TJDecompressor[transforms.length];
     transform(dstBufs, transforms, flags);
-    for(int i = 0; i < transforms.length; i++)
+    for (int i = 0; i < transforms.length; i++)
       tjd[i] = new TJDecompressor(dstBufs[i], transformedSizes[i]);
     return tjd;
   }
-  
+
   /**
    * Returns an array containing the sizes of the transformed JPEG images from
    * the most recent call to {@link #transform transform()}.
@@ -141,7 +142,7 @@
    * the most recent call to {@link #transform transform()}
    */
   public int[] getTransformedSizes() throws Exception {
-    if(transformedSizes == null)
+    if (transformedSizes == null)
       throw new Exception("No image has been transformed yet");
     return transformedSizes;
   }