Implements Timothy Lottes' CRT shader (port of mpv-retro-shaders) as an optional server-side post-processing filter activated per playback session via streamOptions[crtShader]=true. Server-side changes: - Add crt_lottes.cl OpenCL kernel (scanlines, bloom, curvature, shadow mask variants 0-4, sRGB linearisation) deployed alongside the server binary - Add IsCrtShaderEnabled / GetCrtShaderOclFilters / GetCrtShaderFilter helpers to EncodingHelper - SW pipeline: format=rgba → hwupload → program_opencl → hwdownload - Intel VAAPI + OCL tonemap: inline scale_opencl round-trip (zero PCIe) - Intel VAAPI, VAAPI encoder, no tonemap: hwmap→opencl→CRT→hwmap (zero PCIe) - Intel VAAPI, SW encoder, no tonemap: hwmap→opencl→CRT→hwdownload (1× PCIe) - AMD VAAPI + VK tonemap: hwmap→opencl→CRT→hwmap after scale_vaapi (zero PCIe) - AMD VAAPI, SW encoder: hwmap→opencl→CRT→hwdownload (1× PCIe) Shadow mask variant is configurable via streamOptions[crtShadowMask]=0..4. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
342 KiB
342 KiB