Enum crispy::shaders::yuv::ColorSpace
source · pub enum ColorSpace {
BT470 = 2,
BT709 = 1,
Identity = 0,
}
Expand description
FIXME: I don’t know enough about UVC, but the USB Device Class Definition for Video Devices - FAQ in version 1.5, 2.19 Multiple Color Matching Descriptors and table 2.6 states that there are 3 parameters to tweak: Color primary, transfer function, and luma matrix.
Not exactly sure how they work. This here is best effort. Someone with more experience can fix this.
So far, I’ve gathered:
- the luma transfer function gives the matrix calculating yuv = M·rgb
- the primaries matrix calculates rgb = P·xyz
- the transfer function calculates gamma
so the output should be srgb = gamma(M⁻¹·yuv).
TODO in libvidi: read the descriptor values.
Variants§
Trait Implementations§
source§impl From<ColorSpace> for Matrix3<f32>
impl From<ColorSpace> for Matrix3<f32>
source§fn from(value: ColorSpace) -> Self
fn from(value: ColorSpace) -> Self
Converts to this type from the input type.
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.