</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac916144e26c3817ac514e64ae5d12e2aa7f5100ec44c91994e243f1cf55553f8b"></a>TJPF_CMYK</em> </td><td class="fielddoc">
<p>CMYK pixel format. </p>
-<p>Unlike RGB, which is a display colorspace, CMYK (Cyan/Magenta/Yellow/Key) is a print colorspace in which the value of each color component corresponds to the amount of cyan, magenta, yellow, or black ink that is applied to a white background. In order to convert between CMYK and RGB, it is necessary to use a color management system (CMS.) A CMS will attempt to map colors within the printer's gamut to perceptually similar colors in the display's gamut and vice versa, but the mapping is typically not 1:1 or reversible, nor can it be defined with a simple formula. Thus, such a conversion is out of scope for a codec library. However, the TurboJPEG API allows for compressing CMYK pixels into a YCCK JPEG image (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e" title="YCCK colorspace.">TJCS_YCCK</a>) and decompressing YCCK JPEG images into CMYK pixels. </p>
+<p>Unlike RGB, which is an additive color model used primarily for display, CMYK (Cyan/Magenta/Yellow/Key) is a subtractive color model used primarily for printing. In the CMYK color model, the value of each color component typically corresponds to an amount of cyan, magenta, yellow, or black ink that is applied to a white background. In order to convert between CMYK and RGB, it is necessary to use a color management system (CMS.) A CMS will attempt to map colors within the printer's gamut to perceptually similar colors in the display's gamut and vice versa, but the mapping is typically not 1:1 or reversible, nor can it be defined with a simple formula. Thus, such a conversion is out of scope for a codec library. However, the TurboJPEG API allows for compressing CMYK pixels into a YCCK JPEG image (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e" title="YCCK colorspace.">TJCS_YCCK</a>) and decompressing YCCK JPEG images into CMYK pixels. </p>
</td></tr>
</table>
</div><div class="memdoc">
<p>Chrominance subsampling options. </p>
-<p>When pixels are converted from the RGB colorspace to YCbCr (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75" title="YCbCr colorspace.">TJCS_YCbCr</a>) or from the CMYK colorspace to YCCK (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e" title="YCCK colorspace.">TJCS_YCCK</a>) as part of the JPEG compression process, some of the Cb and Cr (chrominance) components can be discarded or averaged together to produce a smaller image with little perceptible loss of image clarity (the human eye is more sensitive to small changes in brightness than small changes in color.) This is called "chrominance subsampling". (NOTE: In common usage, "YCbCr" and "YUV" have come to mean the same thing. The convention within the TurboJPEG API is to use "YUV" to refer to an image format consisting of Y, Cb, and Cr image planes, per the convention of the digital video community.) </p>
+<p>When pixels are converted from RGB to YCbCr (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a7389b8f65bb387ffedce3efd0d78ec75" title="YCbCr colorspace.">TJCS_YCbCr</a>) or from CMYK to YCCK (see <a class="el" href="group___turbo_j_p_e_g.html#gga4f83ad3368e0e29d1957be0efa7c3720a53839e0fe867b76b58d16b0a1a7c598e" title="YCCK colorspace.">TJCS_YCCK</a>) as part of the JPEG compression process, some of the Cb and Cr (chrominance) components can be discarded or averaged together to produce a smaller image with little perceptible loss of image clarity (the human eye is more sensitive to small changes in brightness than to small changes in color.) This is called "chrominance subsampling". </p>
+<p>NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the convention of the digital video community, the TurboJPEG API uses "YUV" to refer to an image format consisting of Y, Cb, and Cr image planes. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga1d047060ea80bb9820d540bb928e9074afb8da4f44197837bdec0a4f593dacae3"></a>TJSAMP_444</em> </td><td class="fielddoc">
<p>4:4:4 chrominance subsampling (no chrominance subsampling). </p>
</div><div class="memdoc">
<p>Decompress a JPEG image to a YUV planar image. </p>
-<p>This function performs JPEG decompression but leaves out the color conversion step, so a planar YUV image is generated instead of an RGB image. The structure of the planes in this image is the same as in the images generated by <a class="el" href="group___turbo_j_p_e_g.html#ga0a5ffbf7cb58a5b6a8201114fe889360" title="Encode an RGB or grayscale image into a YUV planar image.">tjEncodeYUV3()</a>. Note that, if the width or height of the JPEG image is not an even multiple of the MCU block size (see <a class="el" href="group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c" title="MCU block width (in pixels) for a given level of chrominance subsampling.">tjMCUWidth</a> and <a class="el" href="group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf" title="MCU block height (in pixels) for a given level of chrominance subsampling.">tjMCUHeight</a>), then an intermediate buffer copy will be performed within TurboJPEG.</p>
+<p>This function performs JPEG decompression but leaves out the color conversion step, so a planar YUV image is generated instead of an RGB image. The structure of the planes in this image is the same as in the images generated by <a class="el" href="group___turbo_j_p_e_g.html#ga0a5ffbf7cb58a5b6a8201114fe889360" title="Encode an RGB or grayscale image into a YUV planar image.">tjEncodeYUV3()</a>. Note that, if the width or height of the JPEG image is not an even multiple of the MCU block size (see <a class="el" href="group___turbo_j_p_e_g.html#ga9e61e7cd47a15a173283ba94e781308c" title="MCU block width (in pixels) for a given level of chrominance subsampling.">tjMCUWidth</a> and <a class="el" href="group___turbo_j_p_e_g.html#gabd247bb9fecb393eca57366feb8327bf" title="MCU block height (in pixels) for a given level of chrominance subsampling.">tjMCUHeight</a>), then an intermediate buffer copy will be performed within TurboJPEG. </p>
+<p>NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the convention of the digital video community, the TurboJPEG API uses "YUV" to refer to an image format consisting of Y, Cb, and Cr image planes.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">handle</td><td>a handle to a TurboJPEG decompressor or transformer instance </td></tr>
</div><div class="memdoc">
<p>Encode an RGB or grayscale image into a YUV planar image. </p>
-<p>This function uses the accelerated color conversion routines in TurboJPEG's underlying codec but does not execute any of the other steps in the JPEG compression process. The Y, U, and V image planes are stored sequentially into the destination buffer, and the size of each plane is determined by the width and height of the source image, as well as the specified padding and level of chrominance subsampling. If the chrominance components are subsampled along the horizontal dimension, then the width of the luminance plane is padded to the nearest multiple of 2 in the output image (same goes for the height of the luminance plane, if the chrominance components are subsampled along the vertical dimension.)</p>
+<p>This function uses the accelerated color conversion routines in TurboJPEG's underlying codec but does not execute any of the other steps in the JPEG compression process. The Y, U (Cb), and V (Cr) image planes are stored sequentially into the destination buffer, and the size of each plane is determined by the width and height of the source image, as well as the specified padding and level of chrominance subsampling. If the chrominance components are subsampled along the horizontal dimension, then the width of the luminance plane is padded to the nearest multiple of 2 in the output image (same goes for the height of the luminance plane, if the chrominance components are subsampled along the vertical dimension.) </p>
+<p>NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the convention of the digital video community, the TurboJPEG API uses "YUV" to refer to an image format consisting of Y, Cb, and Cr image planes.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">handle</td><td>a handle to a TurboJPEG compressor or transformer instance </td></tr>
<PRE>
public static final int <B>PF_CMYK</B></PRE>
<DL>
-<DD>CMYK pixel format. Unlike RGB, which is a display colorspace,
- CMYK (Cyan/Magenta/Yellow/Key) is a print colorspace in which the
- value of each color component corresponds to the amount of cyan, magenta,
- yellow, or black ink that is applied to a white background. In order to
- convert between CMYK and RGB, it is necessary to use a color management
- system (CMS.) A CMS will attempt to map colors within the printer's gamut
- to perceptually similar colors in the display's gamut and vice versa, but
- the mapping is typically not 1:1 or reversible, nor can it be defined with
- a simple formula. Thus, such a conversion is out of scope for a codec
- library. However, the TurboJPEG API allows for compressing CMYK pixels
- into a YCCK JPEG image (see <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#CS_YCCK"><CODE>CS_YCCK</CODE></A>) and decompressing YCCK JPEG
- images into CMYK pixels.
+<DD>CMYK pixel format. Unlike RGB, which is an additive color model used
+ primarily for display, CMYK (Cyan/Magenta/Yellow/Key) is a subtractive
+ color model used primarily for printing. In the CMYK color model, the
+ value of each color component typically corresponds to an amount of cyan,
+ magenta, yellow, or black ink that is applied to a white background. In
+ order to convert between CMYK and RGB, it is necessary to use a color
+ management system (CMS.) A CMS will attempt to map colors within the
+ printer's gamut to perceptually similar colors in the display's gamut and
+ vice versa, but the mapping is typically not 1:1 or reversible, nor can it
+ be defined with a simple formula. Thus, such a conversion is out of scope
+ for a codec library. However, the TurboJPEG API allows for compressing
+ CMYK pixels into a YCCK JPEG image (see <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#CS_YCCK"><CODE>CS_YCCK</CODE></A>) and
+ decompressing YCCK JPEG images into CMYK pixels.
<P>
<DL>
<DT><B>See Also:</B><DD><A HREF="../../../constant-values.html#org.libjpegturbo.turbojpeg.TJ.PF_CMYK">Constant Field Values</A></DL>
throws java.lang.Exception</PRE>
<DL>
<DD>Set the level of chrominance subsampling for subsequent compress/encode
- operations.
+ operations. When pixels are converted from RGB to YCbCr (see
+ <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#CS_YCbCr"><CODE>TJ.CS_YCbCr</CODE></A>) or from CMYK to YCCK (see <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#CS_YCCK"><CODE>TJ.CS_YCCK</CODE></A>) as part
+ of the JPEG compression process, some of the Cb and Cr (chrominance)
+ components can be discarded or averaged together to produce a smaller
+ image with little perceptible loss of image clarity (the human eye is more
+ sensitive to small changes in brightness than to small changes in color.)
+ This is called "chrominance subsampling".
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>newSubsamp</CODE> - the new level of chrominance subsampling (one of
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 but does not execute any of the other steps in the JPEG
- compression process. The Y, U, and V image planes are stored sequentially
- into the destination buffer, and the size of each plane is determined by
- the width and height of the source image, as well as the specified padding
- and level of chrominance subsampling. If the chrominance components are
- subsampled along the horizontal dimension, then the width of the luminance
- plane is padded to the nearest multiple of 2 in the output image (same
- goes for the height of the luminance plane, if the chrominance components
- are subsampled along the vertical dimension.)
+ compression process. The Y, U (Cb), and V (Cr) image planes are stored
+ sequentially into the destination buffer, and the size of each plane is
+ determined by the width and height of the source image, as well as the
+ specified padding and level of chrominance subsampling. If the
+ chrominance components are subsampled along the horizontal dimension, then
+ the width of the luminance plane is padded to the nearest multiple of 2 in
+ the output image (same goes for the height of the luminance plane, if the
+ chrominance components are subsampled along the vertical dimension.)
+ <p>
+ NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ convention of the digital video community, the TurboJPEG API uses "YUV" to
+ refer to an image format consisting of Y, Cb, and Cr image planes.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>dstBuf</CODE> - buffer that will receive the YUV planar image. Use
that, if the width or height of the image is not an even multiple of the
MCU block size (see <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#getMCUWidth(int)"><CODE>TJ.getMCUWidth(int)</CODE></A> and <A HREF="../../../org/libjpegturbo/turbojpeg/TJ.html#getMCUHeight(int)"><CODE>TJ.getMCUHeight(int)</CODE></A>),
then an intermediate buffer copy will be performed within TurboJPEG.
+ <p>
+ NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ convention of the digital video community, the TurboJPEG API uses "YUV" to
+ refer to an image format consisting of Y, Cb, and Cr image planes.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>dstBuf</CODE> - buffer that will receive the YUV planar image. Use
*/
public static final int PF_ARGB = 10;
/**
- * CMYK pixel format. Unlike RGB, which is a display colorspace,
- * CMYK (Cyan/Magenta/Yellow/Key) is a print colorspace in which the
- * value of each color component corresponds to the amount of cyan, magenta,
- * yellow, or black ink that is applied to a white background. In order to
- * convert between CMYK and RGB, it is necessary to use a color management
- * system (CMS.) A CMS will attempt to map colors within the printer's gamut
- * to perceptually similar colors in the display's gamut and vice versa, but
- * the mapping is typically not 1:1 or reversible, nor can it be defined with
- * a simple formula. Thus, such a conversion is out of scope for a codec
- * library. However, the TurboJPEG API allows for compressing CMYK pixels
- * into a YCCK JPEG image (see {@link #CS_YCCK}) and decompressing YCCK JPEG
- * images into CMYK pixels.
+ * CMYK pixel format. Unlike RGB, which is an additive color model used
+ * primarily for display, CMYK (Cyan/Magenta/Yellow/Key) is a subtractive
+ * color model used primarily for printing. In the CMYK color model, the
+ * value of each color component typically corresponds to an amount of cyan,
+ * magenta, yellow, or black ink that is applied to a white background. In
+ * order to convert between CMYK and RGB, it is necessary to use a color
+ * management system (CMS.) A CMS will attempt to map colors within the
+ * printer's gamut to perceptually similar colors in the display's gamut and
+ * vice versa, but the mapping is typically not 1:1 or reversible, nor can it
+ * be defined with a simple formula. Thus, such a conversion is out of scope
+ * for a codec library. However, the TurboJPEG API allows for compressing
+ * CMYK pixels into a YCCK JPEG image (see {@link #CS_YCCK}) and
+ * decompressing YCCK JPEG images into CMYK pixels.
*/
public static final int PF_CMYK = 11;
/**
* Set the level of chrominance subsampling for subsequent compress/encode
- * operations.
+ * operations. When pixels are converted from RGB to YCbCr (see
+ * {@link TJ#CS_YCbCr}) or from CMYK to YCCK (see {@link TJ#CS_YCCK}) as part
+ * of the JPEG compression process, some of the Cb and Cr (chrominance)
+ * components can be discarded or averaged together to produce a smaller
+ * image with little perceptible loss of image clarity (the human eye is more
+ * sensitive to small changes in brightness than to small changes in color.)
+ * This is called "chrominance subsampling".
*
* @param newSubsamp the new level of chrominance subsampling (one of
* {@link TJ TJ.SAMP_*})
* 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 but does not execute any of the other steps in the JPEG
- * compression process. The Y, U, and V image planes are stored sequentially
- * into the destination buffer, and the size of each plane is determined by
- * the width and height of the source image, as well as the specified padding
- * and level of chrominance subsampling. If the chrominance components are
- * subsampled along the horizontal dimension, then the width of the luminance
- * plane is padded to the nearest multiple of 2 in the output image (same
- * goes for the height of the luminance plane, if the chrominance components
- * are subsampled along the vertical dimension.)
+ * compression process. The Y, U (Cb), and V (Cr) image planes are stored
+ * sequentially into the destination buffer, and the size of each plane is
+ * determined by the width and height of the source image, as well as the
+ * specified padding and level of chrominance subsampling. If the
+ * chrominance components are subsampled along the horizontal dimension, then
+ * the width of the luminance plane is padded to the nearest multiple of 2 in
+ * the output image (same goes for the height of the luminance plane, if the
+ * chrominance components are subsampled along the vertical dimension.)
+ * <p>
+ * NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ * convention of the digital video community, the TurboJPEG API uses "YUV" to
+ * refer to an image format consisting of Y, Cb, and Cr image planes.
*
* @param dstBuf buffer that will receive the YUV planar image. Use
* {@link TJ#bufSizeYUV} to determine the appropriate size for this buffer
* that, if the width or height of the image is not an even multiple of the
* MCU block size (see {@link TJ#getMCUWidth} and {@link TJ#getMCUHeight}),
* then an intermediate buffer copy will be performed within TurboJPEG.
+ * <p>
+ * NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ * convention of the digital video community, the TurboJPEG API uses "YUV" to
+ * refer to an image format consisting of Y, Cb, and Cr image planes.
*
* @param dstBuf buffer that will receive the YUV planar image. Use
* {@link TJ#bufSizeYUV} to determine the appropriate size for this buffer
/**
* Chrominance subsampling options.
- * When pixels are converted from the RGB colorspace to YCbCr (see #TJCS_YCbCr)
- * or from the CMYK colorspace to YCCK (see #TJCS_YCCK) as part of the JPEG
- * compression process, some of the Cb and Cr (chrominance) components can be
- * discarded or averaged together to produce a smaller image with little
- * perceptible loss of image clarity (the human eye is more sensitive to small
- * changes in brightness than small changes in color.) This is called
- * "chrominance subsampling". (NOTE: In common usage, "YCbCr" and "YUV" have
- * come to mean the same thing. The convention within the TurboJPEG API is to
- * use "YUV" to refer to an image format consisting of Y, Cb, and Cr image
- * planes, per the convention of the digital video community.)
+ * When pixels are converted from RGB to YCbCr (see #TJCS_YCbCr) or from CMYK
+ * to YCCK (see #TJCS_YCCK) as part of the JPEG compression process, some of
+ * the Cb and Cr (chrominance) components can be discarded or averaged together
+ * to produce a smaller image with little perceptible loss of image clarity
+ * (the human eye is more sensitive to small changes in brightness than to
+ * small changes in color.) This is called "chrominance subsampling".
+ * <p>
+ * NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ * convention of the digital video community, the TurboJPEG API uses "YUV" to
+ * refer to an image format consisting of Y, Cb, and Cr image planes.
*/
enum TJSAMP
{
*/
TJPF_ARGB,
/**
- * CMYK pixel format. Unlike RGB, which is a display colorspace,
- * CMYK (Cyan/Magenta/Yellow/Key) is a print colorspace in which the
- * value of each color component corresponds to the amount of cyan, magenta,
- * yellow, or black ink that is applied to a white background. In order to
- * convert between CMYK and RGB, it is necessary to use a color management
- * system (CMS.) A CMS will attempt to map colors within the printer's gamut
- * to perceptually similar colors in the display's gamut and vice versa, but
- * the mapping is typically not 1:1 or reversible, nor can it be defined with
- * a simple formula. Thus, such a conversion is out of scope for a codec
- * library. However, the TurboJPEG API allows for compressing CMYK pixels
- * into a YCCK JPEG image (see #TJCS_YCCK) and decompressing YCCK JPEG images
- * into CMYK pixels.
+ * CMYK pixel format. Unlike RGB, which is an additive color model used
+ * primarily for display, CMYK (Cyan/Magenta/Yellow/Key) is a subtractive
+ * color model used primarily for printing. In the CMYK color model, the
+ * value of each color component typically corresponds to an amount of cyan,
+ * magenta, yellow, or black ink that is applied to a white background. In
+ * order to convert between CMYK and RGB, it is necessary to use a color
+ * management system (CMS.) A CMS will attempt to map colors within the
+ * printer's gamut to perceptually similar colors in the display's gamut and
+ * vice versa, but the mapping is typically not 1:1 or reversible, nor can it
+ * be defined with a simple formula. Thus, such a conversion is out of scope
+ * for a codec library. However, the TurboJPEG API allows for compressing
+ * CMYK pixels into a YCCK JPEG image (see #TJCS_YCCK) and decompressing YCCK
+ * JPEG images into CMYK pixels.
*/
TJPF_CMYK
};
* Encode an RGB or grayscale image into a YUV planar image. This function
* uses the accelerated color conversion routines in TurboJPEG's underlying
* codec but does not execute any of the other steps in the JPEG compression
- * process. The Y, U, and V image planes are stored sequentially into the
- * destination buffer, and the size of each plane is determined by the width
- * and height of the source image, as well as the specified padding and level
- * of chrominance subsampling. If the chrominance components are subsampled
- * along the horizontal dimension, then the width of the luminance plane is
- * padded to the nearest multiple of 2 in the output image (same goes for the
- * height of the luminance plane, if the chrominance components are subsampled
- * along the vertical dimension.)
+ * process. The Y, U (Cb), and V (Cr) image planes are stored sequentially
+ * into the destination buffer, and the size of each plane is determined by the
+ * width and height of the source image, as well as the specified padding and
+ * level of chrominance subsampling. If the chrominance components are
+ * subsampled along the horizontal dimension, then the width of the luminance
+ * plane is padded to the nearest multiple of 2 in the output image (same goes
+ * for the height of the luminance plane, if the chrominance components are
+ * subsampled along the vertical dimension.)
+ * <p>
+ * NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ * convention of the digital video community, the TurboJPEG API uses "YUV" to
+ * refer to an image format consisting of Y, Cb, and Cr image planes.
*
* @param handle a handle to a TurboJPEG compressor or transformer instance
* @param srcBuf pointer to an image buffer containing RGB or grayscale pixels
* that, if the width or height of the JPEG image is not an even multiple of
* the MCU block size (see #tjMCUWidth and #tjMCUHeight), then an intermediate
* buffer copy will be performed within TurboJPEG.
+ * <p>
+ * NOTE: Technically, the JPEG format uses the YCbCr colorspace, but per the
+ * convention of the digital video community, the TurboJPEG API uses "YUV" to
+ * refer to an image format consisting of Y, Cb, and Cr image planes.
*
* @param handle a handle to a TurboJPEG decompressor or transformer instance
* @param jpegBuf pointer to a buffer containing the JPEG image to decompress