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:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user