You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Windows: full-range imported video is drawn as limited range, clipping shadows and highlights #1531
On Windows, the decoders ignore the colour range of imported footage. A full-range (AVCOL_RANGE_JPEG) video tagged with a plain yuv* pixel format is drawn as limited range, so its shadows and highlights clip in both preview and export.
Where
crates/compositor/src/cpu_frames_windows.rs, ensure_sws: sws_getContext gets only the pixel format, never the frame's color_range, so swscale treats yuv420p / yuv420p10le as limited and copies full-range values as they are. Only the yuvj* formats are converted.
crates/compositor/src/shaders.hlsl, yuv709_limited: the NV12 shader always reads limited range.
The D3D11VA path passes the decoder's NV12 surface to the same shader, so full-range 8-bit H.264 is affected too.
Already true on main for AV1 and VP9 on CpuFrames, for every H.264 stream when the GPU backend is Cpu, and for full-range 8-bit H.264 on D3D11VA. OpenScreen's own recordings are tagged limited range (#923), so only imported files are concerned.
Possible fix: pass the frame's range to swscale (sws_setColorspaceDetails with srcRange from frame->color_range, dstRange limited), and normalise the hardware path the same way or pass the range to the shader.
Activity
fix(compositor): keep neutral chroma when expanding full range on Win…