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:
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user