Add CRT shader support to Intel QSV pipeline

Insert VAAPI→OpenCL→CRT→VAAPI round-trip (isVaapiDecoder path) and
inline OCL filters (doOclTonemap path) into GetIntelQsvVaapiVidFiltersPrefered
so the CRT Lottes shader is applied when the h264_qsv encoder is active.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mani
2026-02-24 14:39:21 +01:00
parent cddaff96c2
commit d725f9a583

View File

@@ -4896,6 +4896,12 @@ namespace MediaBrowser.Controller.MediaEncoding
{
if (doOclTonemap)
{
// CRT shader while already in OpenCL memory (after tonemap)
if (IsCrtShaderEnabled(state))
{
mainFilters.AddRange(GetCrtShaderOclFilters(state));
}
// OUTPUT qsv(nv12) surface(vram)
// reverse-mapping via qsv(vaapi)-opencl interop.
// add extra pool size to avoid the 'cannot allocate memory' error on hevc_qsv.
@@ -4904,6 +4910,14 @@ namespace MediaBrowser.Controller.MediaEncoding
}
else if (isVaapiDecoder)
{
if (IsCrtShaderEnabled(state))
{
// VAAPI → OpenCL → CRT → VAAPI round-trip, then map to QSV
mainFilters.Add("hwmap=derive_device=opencl:mode=read");
mainFilters.AddRange(GetCrtShaderOclFilters(state));
mainFilters.Add("hwmap=derive_device=vaapi:mode=write:reverse=1");
}
mainFilters.Add("hwmap=derive_device=qsv");
mainFilters.Add("format=qsv");
}