Fix CRT shader: add OpenCL capability check and scale_opencl syntax
- IsCrtShaderEnabled now guards on SupportsHwaccel("opencl"),
SupportsFilter("program_opencl") and SupportsFilter("scale_opencl")
so the filter is silently skipped instead of causing an FFmpeg error
when OpenCL is unavailable
- Drop w=iw:h=ih from scale_opencl (iw/ih are not valid expressions in
the OpenCL scale filter; omitting them defaults to input dimensions)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3716,7 +3716,10 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
{
|
||||
return state.BaseRequest.StreamOptions.TryGetValue("crtShader", out var val)
|
||||
&& string.Equals(val, "true", StringComparison.OrdinalIgnoreCase)
|
||||
&& File.Exists(Path.Combine(AppContext.BaseDirectory, "Resources", "Shaders", "crt_lottes.cl"));
|
||||
&& File.Exists(Path.Combine(AppContext.BaseDirectory, "Resources", "Shaders", "crt_lottes.cl"))
|
||||
&& _mediaEncoder.SupportsHwaccel("opencl")
|
||||
&& _mediaEncoder.SupportsFilter("program_opencl")
|
||||
&& _mediaEncoder.SupportsFilter("scale_opencl");
|
||||
}
|
||||
|
||||
private string GetCrtEscapedShaderPath()
|
||||
@@ -3751,10 +3754,10 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|
||||
return
|
||||
[
|
||||
"scale_opencl=w=iw:h=ih:format=rgba",
|
||||
"scale_opencl=format=rgba",
|
||||
FormattableString.Invariant(
|
||||
$"program_opencl=source={escapedPath}:kernel=crt_lottes:build_opts='{buildOpts}'"),
|
||||
"scale_opencl=w=iw:h=ih:format=nv12"
|
||||
"scale_opencl=format=nv12"
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user