I doubt about using SetPixel() function. It seems like a slow wrapper function. It's not crucial for small images or single conversions, but for batch decoding the speed is important factor.
In Delphi, there is Canvas.Pixels[x, y] property, which returns pixel color at specified position. And there is ScanLine[y], which returns array of bytes for specified line. ScanLine works approximately 1000 times faster than Canvas.Pixels.
Isn't there a similar situation in Java?
Also, may I ask, where do you plan to use this decoder?