org.libjpegturbo.turbojpeg
Class TJCompressor

java.lang.Object
  extended by org.libjpegturbo.turbojpeg.TJCompressor

public class TJCompressor
extends java.lang.Object

TurboJPEG compressor


Constructor Summary
TJCompressor()
          Create a TurboJPEG compressor instance.
TJCompressor(byte[] srcImage, int width, int pitch, int height, int pixelFormat)
          Create a TurboJPEG compressor instance and associate the uncompressed source image stored in srcImage with the newly-created instance.
 
Method Summary
 void close()
          Free the native structures associated with this compressor instance.
 void compress(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags)
          Compress the uncompressed source image stored in srcImage and output a JPEG image to the given destination buffer.
 byte[] compress(java.awt.image.BufferedImage srcImage, int flags)
          Compress the uncompressed source image stored in srcImage and return a buffer containing a JPEG image.
 void compress(byte[] dstBuf, int flags)
          Compress the uncompressed source image associated with this compressor instance and output a JPEG image to the given destination buffer.
 byte[] compress(int flags)
          Compress the uncompressed source image associated with this compressor instance and return a buffer containing a JPEG image.
 void encodeYUV(java.awt.image.BufferedImage srcImage, byte[] dstBuf, int flags)
          Encode the uncompressed source image stored in srcImage and output a YUV planar image to the given destination buffer.
 byte[] encodeYUV(java.awt.image.BufferedImage srcImage, int flags)
          Encode the uncompressed source image stored in srcImage and return a buffer containing a YUV planar image.
 void encodeYUV(byte[] dstBuf, int flags)
          Encode the uncompressed source image associated with this compressor instance and output a YUV planar image to the given destination buffer.
 byte[] encodeYUV(int flags)
          Encode the uncompressed source image associated with this compressor instance and return a buffer containing a YUV planar image.
protected  void finalize()
           
 int getCompressedSize()
          Returns the size of the image (in bytes) generated by the most recent compress/encode operation.
 void setJPEGQuality(int quality)
          Set the JPEG image quality level for subsequent compress operations.
 void setSourceImage(byte[] srcImage, int width, int pitch, int height, int pixelFormat)
          Associate an uncompressed source image with this compressor instance.
 void setSubsamp(int newSubsamp)
          Set the level of chrominance subsampling for subsequent compress/encode operations.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TJCompressor

public TJCompressor()
             throws java.lang.Exception
Create a TurboJPEG compressor instance.

Throws:
java.lang.Exception

TJCompressor

public TJCompressor(byte[] srcImage,
                    int width,
                    int pitch,
                    int height,
                    int pixelFormat)
             throws java.lang.Exception
Create a TurboJPEG compressor instance and associate the uncompressed source image stored in srcImage with the newly-created instance.

Parameters:
srcImage - see setSourceImage(byte[], int, int, int, int) for description
width - see setSourceImage(byte[], int, int, int, int) for description
pitch - see setSourceImage(byte[], int, int, int, int) for description
height - see setSourceImage(byte[], int, int, int, int) for description
pixelFormat - see setSourceImage(byte[], int, int, int, int) for description
Throws:
java.lang.Exception
Method Detail

setSourceImage

public void setSourceImage(byte[] srcImage,
                           int width,
                           int pitch,
                           int height,
                           int pixelFormat)
                    throws java.lang.Exception
Associate an uncompressed source image with this compressor instance.

Parameters:
srcImage - image buffer containing RGB or grayscale pixels to be compressed
width - width (in pixels) of the source image
pitch - bytes per line of the source image. Normally, this should be width * TJ.pixelSize(pixelFormat) if the source image is unpadded, but you can use this parameter to, for instance, specify that the scanlines in the source image are padded to 4-byte boundaries, as is the case for Windows bitmaps. You can also be clever and use this parameter to skip lines, etc. Setting this parameter to 0 is the equivalent of setting it to width * TJ.pixelSize(pixelFormat).
height - height (in pixels) of the source image
pixelFormat - pixel format of the source image (one of TJ.PF_*)
Throws:
java.lang.Exception

setSubsamp

public void setSubsamp(int newSubsamp)
                throws java.lang.Exception
Set the level of chrominance subsampling for subsequent compress/encode operations.

Parameters:
newSubsamp - the new level of chrominance subsampling (one of TJ.SAMP_*)
Throws:
java.lang.Exception

setJPEGQuality

public void setJPEGQuality(int quality)
                    throws java.lang.Exception
Set the JPEG image quality level for subsequent compress operations.

Parameters:
quality - the new JPEG image quality level (1 to 100, 1 = worst, 100 = best)
Throws:
java.lang.Exception

compress

public void compress(byte[] dstBuf,
                     int flags)
              throws java.lang.Exception
Compress the uncompressed source image associated with this compressor instance and output a JPEG image to the given destination buffer.

Parameters:
dstBuf - buffer that will receive the JPEG image. Use TJ.bufSize(int, int, int) to determine the maximum size for this buffer based on the image width and height.
flags - the bitwise OR of one or more of TJ.FLAG_*
Throws:
java.lang.Exception

compress

public byte[] compress(int flags)
                throws java.lang.Exception
Compress the uncompressed source image associated with this compressor instance and return a buffer containing a JPEG image.

Parameters:
flags - the bitwise OR of one or more of TJ.FLAG_*
Returns:
a buffer containing a JPEG image. The length of this buffer will not be equal to the size of the JPEG image. Use getCompressedSize() to obtain the size of the JPEG image.
Throws:
java.lang.Exception

compress

public void compress(java.awt.image.BufferedImage srcImage,
                     byte[] dstBuf,
                     int flags)
              throws java.lang.Exception
Compress the uncompressed source image stored in srcImage and output a JPEG image to the given destination buffer.

Parameters:
srcImage - a BufferedImage instance containing RGB or grayscale pixels to be compressed
dstBuf - buffer that will receive the JPEG image. Use TJ.bufSize(int, int, int) to determine the maximum size for this buffer based on the image width and height.
flags - the bitwise OR of one or more of TJ.FLAG_*
Throws:
java.lang.Exception

compress

public byte[] compress(java.awt.image.BufferedImage srcImage,
                       int flags)
                throws java.lang.Exception
Compress the uncompressed source image stored in srcImage and return a buffer containing a JPEG image.

Parameters:
srcImage - a BufferedImage instance containing RGB or grayscale pixels to be compressed
flags - the bitwise OR of one or more of TJ.FLAG_*
Returns:
a buffer containing a JPEG image. The length of this buffer will not be equal to the size of the JPEG image. Use getCompressedSize() to obtain the size of the JPEG image.
Throws:
java.lang.Exception

encodeYUV

public void encodeYUV(byte[] dstBuf,
                      int flags)
               throws java.lang.Exception
Encode the uncompressed source image associated with this compressor instance and output a YUV planar image to the given destination buffer. This method uses the accelerated color conversion routines in TurboJPEG's underlying codec to produce a planar YUV image that is suitable for direct video display. Specifically, if the chrominance components are subsampled along the horizontal dimension, then the width of the luminance plane is padded to 2 in the output image (same goes for the height of the luminance plane, if the chrominance components are subsampled along the vertical dimension.) Also, each line of each plane in the output image is padded to 4 bytes. Although this will work with any subsampling option, it is really only useful in combination with TJ.SAMP_420, which produces an image compatible with the I420 (AKA "YUV420P") format.

Parameters:
dstBuf - buffer that will receive the YUV planar image. Use TJ.bufSizeYUV(int, int, int) to determine the appropriate size for this buffer based on the image width, height, and level of chrominance subsampling.
flags - the bitwise OR of one or more of TJ.FLAG_*
Throws:
java.lang.Exception

encodeYUV

public byte[] encodeYUV(int flags)
                 throws java.lang.Exception
Encode the uncompressed source image associated with this compressor instance and return a buffer containing a YUV planar image. See encodeYUV(byte[], int) for more detail.

Parameters:
flags - the bitwise OR of one or more of TJ.FLAG_*
Returns:
a buffer containing a YUV planar image
Throws:
java.lang.Exception

encodeYUV

public void encodeYUV(java.awt.image.BufferedImage srcImage,
                      byte[] dstBuf,
                      int flags)
               throws java.lang.Exception
Encode the uncompressed source image stored in srcImage and output a YUV planar image to the given destination buffer. See encodeYUV(byte[], int) for more detail.

Parameters:
srcImage - a BufferedImage instance containing RGB or grayscale pixels to be encoded
dstBuf - buffer that will receive the YUV planar image. Use TJ.bufSizeYUV(int, int, int) to determine the appropriate size for this buffer based on the image width, height, and level of chrominance subsampling.
flags - the bitwise OR of one or more of TJ.FLAG_*
Throws:
java.lang.Exception

encodeYUV

public byte[] encodeYUV(java.awt.image.BufferedImage srcImage,
                        int flags)
                 throws java.lang.Exception
Encode the uncompressed source image stored in srcImage and return a buffer containing a YUV planar image. See encodeYUV(byte[], int) for more detail.

Parameters:
srcImage - a BufferedImage instance containing RGB or grayscale pixels to be encoded
flags - the bitwise OR of one or more of TJ.FLAG_*
Returns:
a buffer containing a YUV planar image
Throws:
java.lang.Exception

getCompressedSize

public int getCompressedSize()
Returns the size of the image (in bytes) generated by the most recent compress/encode operation.

Returns:
the size of the image (in bytes) generated by the most recent compress/encode operation

close

public void close()
           throws java.lang.Exception
Free the native structures associated with this compressor instance.

Throws:
java.lang.Exception

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable