#[non_exhaustive]#[repr(i32)]pub enum Subsamp {
None = 0,
Sub2x1 = 1,
Sub2x2 = 2,
Gray = 3,
Sub1x2 = 4,
Sub4x1 = 5,
Sub1x4 = 6,
}
Expand description
Chrominance subsampling options.
When pixels are converted from RGB to YCbCr or from CMYK to 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”.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
None = 0
No chrominance subsampling (4:4:4);
The JPEG or YUV image will contain one chrominance component for every pixel in the source image.
Sub2x1 = 1
2x1 chrominance subsampling (4:2:2).
The JPEG or YUV image will contain one chrominance component for every 2x1 block of pixels in the source image.
Sub2x2 = 2
2x2 chrominance subsampling (4:2:0).
The JPEG or YUV image will contain one chrominance component for every 2x2 block of pixels in the source image.
Gray = 3
Grayscale.
The JPEG or YUV image will contain no chrominance components.
Sub1x2 = 4
1x2 chrominance subsampling (4:4:0).
The JPEG or YUV image will contain one chrominance component for every 1x2 block of pixels in the source image.
§Note
4:4:0 subsampling is not fully accelerated in libjpeg-turbo.
Sub4x1 = 5
4x1 chrominance subsampling (4:1:1).
The JPEG or YUV image will contain one chrominance component for every 4x1 block of pixels in the source image. JPEG images compressed with 4:1:1 subsampling will be almost exactly the same size as those compressed with 4:2:0 subsampling, and in the aggregate, both subsampling methods produce approximately the same perceptual quality. However, 4:1:1 is better able to reproduce sharp horizontal features.
§Note
4:1:1 subsampling is not fully accelerated in libjpeg-turbo.
Sub1x4 = 6
1x4 chrominance subsampling (4:4:1).
The JPEG or YUV image will contain one chrominance component for every 1x4 block of pixels in the source image. JPEG images compressed with 4:4:1 subsampling will be almost exactly the same size as those compressed with 4:2:0 subsampling, and in the aggregate, both subsampling methods produce approximately the same perceptual quality. However, 4:4:1 is better able to reproduce sharp vertical features.
§Note
4:4:1 subsampling is not fully accelerated in libjpeg-turbo.
Implementations§
source§impl Subsamp
impl Subsamp
sourcepub fn mcu_width(self) -> usize
pub fn mcu_width(self) -> usize
Get the width of the MCU block for this level of chrominance subsampling.
This is equal to 8 * self.width()
.
§Example
assert_eq!(turbojpeg::Subsamp::Sub2x1.mcu_width(), 16);
sourcepub fn mcu_height(self) -> usize
pub fn mcu_height(self) -> usize
Get the height of the MCU block for this level of chrominance subsampling.
This is equal to 8 * self.height()
.
§Example
assert_eq!(turbojpeg::Subsamp::Sub2x1.mcu_height(), 8);
sourcepub fn mcu_size(self) -> (usize, usize)
pub fn mcu_size(self) -> (usize, usize)
Get the size of the MCU block for this level of chrominance subsampling as (width, height).
§Example
assert_eq!(turbojpeg::Subsamp::Sub2x1.mcu_size(), (16, 8));
Trait Implementations§
source§impl Ord for Subsamp
impl Ord for Subsamp
source§impl PartialEq for Subsamp
impl PartialEq for Subsamp
source§impl PartialOrd for Subsamp
impl PartialOrd for Subsamp
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more