Fix CRT shader: add missing QSV decoder path in VAAPI+QSV pipeline

The SDR case (QSV decoder + QSV encoder, no OCL tonemap) was never
handled — the frame stayed in QSV VRAM with no OpenCL round-trip,
so the CRT filter was simply never applied.

Add else-if (isQsvDecoder) branch that maps QSV→OpenCL, applies the
CRT kernel, then reverse-maps back to QSV.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mani
2026-02-25 21:15:41 +01:00
parent fb4b87df07
commit 464c02885e

View File

@@ -4933,6 +4933,17 @@ namespace MediaBrowser.Controller.MediaEncoding
mainFilters.Add("hwmap=derive_device=qsv");
mainFilters.Add("format=qsv");
}
else if (isQsvDecoder)
{
if (IsCrtShaderEnabled(state))
{
// QSV → OpenCL → CRT → QSV round-trip (SDR, no tonemap)
mainFilters.Add("hwmap=derive_device=opencl:mode=read");
mainFilters.AddRange(GetCrtShaderOclFilters(state));
mainFilters.Add("hwmap=derive_device=qsv:mode=write:reverse=1:extra_hw_frames=16");
mainFilters.Add("format=qsv");
}
}
}
/* Make sub and overlay filters for subtitle stream */