feat(client/windows): HDR10 (BT.2020 PQ) decode + present
Light up the dormant 10-bit/HDR path end to end on the Windows client. - core: NativeClient::connect gains a video_caps param threaded into the Hello. The Windows client advertises VIDEO_CAP_10BIT | VIDEO_CAP_HDR; every other caller (the C ABI shim, Linux, Android, host test connects) passes 0, so the 8-bit BT.709 path is unchanged. The host already gates a Main10/PQ encode on these bits + PUNKTFUNK_10BIT. - video.rs: a PQ frame (color_trc == SMPTE2084) converts 10-bit YUV → X2BGR10 (== DXGI R10G10B10A2) with the BT.2020 matrix via sws_setColorspaceDetails; swscale applies only the matrix + range, so the PQ-encoded samples pass through untouched. - present.rs: on an HDR frame the swapchain flips in place (ResizeBuffers) to R10G10B10A2 + DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 + HDR10 metadata; the passthrough shader is unchanged and the compositor maps PQ→display. Switched to ALPHA_MODE_IGNORE so the 10-bit padding bits don't render transparent. SDR stays 8-bit B8G8R8A8. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -891,6 +891,9 @@ pub unsafe extern "C" fn punktfunk_connect_ex4(
|
||||
pref,
|
||||
gamepad,
|
||||
bitrate_kbps,
|
||||
// 8-bit only over the C ABI for now — the ABI doesn't yet carry the embedder's video
|
||||
// caps (Apple/Android decode 8-bit). The native Windows client advertises 10-bit/HDR.
|
||||
0,
|
||||
launch,
|
||||
pin,
|
||||
identity,
|
||||
|
||||
Reference in New Issue
Block a user