pub enum ColorimetryMode {
Fast,
Exact,
}Expand description
How convert() trades colorimetric exactness against speed on platforms
where the exact path is expensive.
Today this affects one decision: NV12 sources on Vivante GC7000UL (i.MX 8M Plus), where the hardware external sampler converts ~12× faster than the colorimetry-exact in-shader matrix (2.5 ms vs 29 ms at 720p) but applies the driver’s fixed BT.601-limited matrix regardless of the source’s tagged colorimetry. Platforms where the exact path is already the fastest correct path (Mali, V3D, Tegra, ANGLE) behave identically in both modes.
Override at runtime with EDGEFIRST_COLORIMETRY=fast|exact (takes
precedence over the config field), or per-source by forcing a path with
EDGEFIRST_NV_CONVERT_PATH.
Variants§
Fast
Prefer the fastest path whose output is correct-enough video RGB (default; issue #106 policy). On Vivante, NV12 takes the hardware sampler even when the source is not BT.601-limited.
Exact
Prefer bit-exact colorimetry everywhere: the fast path is used only when it matches the source’s resolved (encoding, range) exactly.
Trait Implementations§
Source§impl Clone for ColorimetryMode
impl Clone for ColorimetryMode
Source§fn clone(&self) -> ColorimetryMode
fn clone(&self) -> ColorimetryMode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ColorimetryMode
Source§impl Debug for ColorimetryMode
impl Debug for ColorimetryMode
Source§impl Default for ColorimetryMode
impl Default for ColorimetryMode
Source§fn default() -> ColorimetryMode
fn default() -> ColorimetryMode
impl Eq for ColorimetryMode
Source§impl PartialEq for ColorimetryMode
impl PartialEq for ColorimetryMode
impl StructuralPartialEq for ColorimetryMode
Auto Trait Implementations§
impl Freeze for ColorimetryMode
impl RefUnwindSafe for ColorimetryMode
impl Send for ColorimetryMode
impl Sync for ColorimetryMode
impl Unpin for ColorimetryMode
impl UnsafeUnpin for ColorimetryMode
impl UnwindSafe for ColorimetryMode
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more