color: non-sRGB preview, per-monitor display ICC, pipeline hardening
Preview now follows the project output colorspace end to end: the display chain derives its content space from the project's OutputColorSpec instead of a hardcoded sRGB name, self-managed ICC transforms go through an XYZ D65 interchange stage (OCIO cie_xyz_d65_interchange) for non-sRGB targets, and the platform layer declares the content colorspace (gpui submodule bump). macOS defaults to OS-managed (fixes wide-gamut UI oversaturation); Windows ACM warns once on non-sRGB targets. Multi-monitor: the display ICC is looked up per the window's current screen (macOS display id, Windows per-monitor DC, X11 RandR output profile) with a throttled poll that invalidates frame caches on moves. Pipeline precision: 10-bit+ sources fall back to YUV444P16LE + a Rust matrix conversion when swscale lacks F32 output (no more 8-bit truncation); BT.709/2020 SDR decodes with BT.1886 gamma 2.4 instead of the sRGB EOTF; working-space compositing no longer clamps RGB to [0,1] (alpha still clamped); the output node clamps to the target gamut; frames without colorimetry metadata convert with BT.709 defaults (warned once) instead of passing through; scopes read the output-colorspace signal on both F32 paths. Also: only emit rerun-if-changed for .env when it exists (a missing file made every build fully dirty).
This commit is contained in:
@@ -145,6 +145,21 @@ pub struct RetrieveVideoParams {
|
||||
pub target_size: Option<(u32, u32)>,
|
||||
}
|
||||
|
||||
/// The colorimetry of a decoded frame, as carried out of the bitstream
|
||||
/// (raw ISO/IEC 23001-8 / H.273 code points — the same numbering FFmpeg's
|
||||
/// `AVCodecParameters` uses). The render layer maps these to its input
|
||||
/// transform (source colorspace → the pipeline working space).
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
|
||||
pub struct DecodedColorMeta {
|
||||
/// Color primaries code point (`AVCOL_PRI_*`; 0/2 = unknown).
|
||||
pub color_primaries: i32,
|
||||
/// Transfer characteristic code point (`AVCOL_TRC_*`; 0/2 = unknown).
|
||||
pub color_trc: i32,
|
||||
/// True when the decoded RGB is full range (the YUV→RGB used the
|
||||
/// full-range coefficients).
|
||||
pub full_range: bool,
|
||||
}
|
||||
|
||||
/// `Decoder::RetrieveAudioStatus` — outcome of an audio retrieve.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
pub enum RetrieveAudioStatus {
|
||||
|
||||
Reference in New Issue
Block a user