pub enum ColorSpace {
Invalid,
Srgb,
Rec601Ntsc,
Rec601NtscFullRange,
Rec601Pal,
Rec601PalFullRange,
Rec709,
Rec2020,
Rec2100,
Passthrough,
DoNotCare,
// some variants omitted
}
Expand description
Expresses the color space used to interpret video pixel values.
This list has a separate entry for each variant of a color space standard.
For this reason, should we ever add support for the RGB variant of 709, for example, we’d add a separate entry to this list for that variant. Similarly for the RGB variants of 2020 or 2100. Similarly for the YcCbcCrc variant of 2020. Similarly for the ICtCp variant of 2100.
See ImageFormatIsSupportedColorSpaceForPixelFormat() for whether a
combination of PixelFormat
and ColorSpace
is potentially supported.
Generally, a ColorSpace
is not supported for any PixelFormat
whose
bits-per-sample isn’t compatible with the color space’s spec, nor for any
PixelFormat
which is a mismatch in terms of RGB vs. YUV.
The “limited range” in comments below refers to where black and white are defined to be (and simimlar for chroma), but should not be interpreted as guaranteeing that there won’t be values outside the nominal “limited range”. In other words, “limited range” doesn’t necessarily mean there won’t be any values below black or above white, or outside the “limited” chroma range. For “full range”, black is 0 and white is the max possible/permitted numeric value (and similar for chroma).
Variants§
Invalid
Not a valid color space type.
Srgb
sRGB, gamma transfer function and full range, per spec
Rec601Ntsc
601 NTSC (“525 line”) YCbCr primaries, limited range
Rec601NtscFullRange
601 NTSC (“525 line”) YCbCr primaries, full range
Rec601Pal
601 PAL (“625 line”) YCbCr primaries, limited range
Rec601PalFullRange
601 PAL (“625 line”) YCbCr primaries, full range
Rec709
709 YCbCr (not RGB), limited range
Rec2020
2020 YCbCr (not RGB, not YcCbcCrc), 10 or 12 bit according to
PixelFormat
, with primaries, limited range (not full range), transfer
function (“gamma”), etc all per spec, wide color gamut SDR
Rec2100
2100 YCbCr (not RGB, not ICtCp), 10 or 12 bit according to
PixelFormat
, BT.2020 primaries (same wide color gamut as REC2020),
limited range (not full range), PQ (aka SMPTE ST 2084) HDR transfer
function (not HLG, not SDR “gamma” used by REC2020 and REC709), wide
color gamut HDR
Passthrough
Either the pixel format doesn’t represent a color, or it’s in an application-specific colorspace that isn’t describable by another entry in this enum.
DoNotCare
A client is explicitly indicating that the client does not care which color space is chosen / used.
Implementations§
Source§impl ColorSpace
impl ColorSpace
pub fn from_primitive(prim: u32) -> Option<Self>
pub fn from_primitive_allow_unknown(prim: u32) -> Self
pub fn unknown() -> Self
pub const fn into_primitive(self) -> u32
pub fn is_unknown(&self) -> bool
Trait Implementations§
Source§impl Clone for ColorSpace
impl Clone for ColorSpace
Source§fn clone(&self) -> ColorSpace
fn clone(&self) -> ColorSpace
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ColorSpace
impl Debug for ColorSpace
Source§impl<D: ResourceDialect> Decode<ColorSpace, D> for ColorSpace
impl<D: ResourceDialect> Decode<ColorSpace, D> for ColorSpace
Source§impl<D: ResourceDialect> Encode<ColorSpace, D> for ColorSpace
impl<D: ResourceDialect> Encode<ColorSpace, D> for ColorSpace
Source§impl Hash for ColorSpace
impl Hash for ColorSpace
Source§impl Ord for ColorSpace
impl Ord for ColorSpace
Source§fn cmp(&self, other: &ColorSpace) -> Ordering
fn cmp(&self, other: &ColorSpace) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for ColorSpace
impl PartialEq for ColorSpace
Source§impl PartialOrd for ColorSpace
impl PartialOrd for ColorSpace
Source§impl TypeMarker for ColorSpace
impl TypeMarker for ColorSpace
Source§type Owned = ColorSpace
type Owned = ColorSpace
Source§fn inline_align(_context: Context) -> usize
fn inline_align(_context: Context) -> usize
Source§fn inline_size(_context: Context) -> usize
fn inline_size(_context: Context) -> usize
inline_align
.Source§fn encode_is_copy() -> bool
fn encode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and encoding requires no validation. When true, we can optimize
encoding arrays and vectors of Self::Owned
to a single memcpy. Read moreSource§fn decode_is_copy() -> bool
fn decode_is_copy() -> bool
Self::Owned
matches the FIDL wire
format and decoding requires no validation. When true, we can optimize
decoding arrays and vectors of Self::Owned
to a single memcpy.Source§impl ValueTypeMarker for ColorSpace
impl ValueTypeMarker for ColorSpace
Source§type Borrowed<'a> = ColorSpace
type Borrowed<'a> = ColorSpace
Encode<Self>
type cheaply obtainable from &Self::Owned
. There are three cases: Read moreimpl Copy for ColorSpace
impl Eq for ColorSpace
impl StructuralPartialEq for ColorSpace
Auto Trait Implementations§
impl Freeze for ColorSpace
impl RefUnwindSafe for ColorSpace
impl Send for ColorSpace
impl Sync for ColorSpace
impl Unpin for ColorSpace
impl UnwindSafe for ColorSpace
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)