Debug CRT shader: add detailed logging to IsCrtShaderEnabled

Inject ILogger<EncodingHelper> and log all conditions individually
so we can see exactly which check is failing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mani
2026-02-25 02:42:35 +01:00
parent 7574c7eb83
commit fb4b87df07

View File

@@ -26,6 +26,7 @@ using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using IConfigurationManager = MediaBrowser.Common.Configuration.IConfigurationManager;
namespace MediaBrowser.Controller.MediaEncoding
@@ -157,13 +158,16 @@ namespace MediaBrowser.Controller.MediaEncoding
"wavpack"
];
private readonly ILogger<EncodingHelper> _logger;
public EncodingHelper(
IApplicationPaths appPaths,
IMediaEncoder mediaEncoder,
ISubtitleEncoder subtitleEncoder,
IConfiguration config,
IConfigurationManager configurationManager,
IPathManager pathManager)
IPathManager pathManager,
ILogger<EncodingHelper> logger)
{
_appPaths = appPaths;
_mediaEncoder = mediaEncoder;
@@ -171,6 +175,7 @@ namespace MediaBrowser.Controller.MediaEncoding
_config = config;
_configurationManager = configurationManager;
_pathManager = pathManager;
_logger = logger;
}
private enum DynamicHdrMetadataRemovalPlan
@@ -3714,12 +3719,19 @@ namespace MediaBrowser.Controller.MediaEncoding
/// </summary>
public bool IsCrtShaderEnabled(EncodingJobInfo state)
{
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"))
&& _mediaEncoder.SupportsHwaccel("opencl")
&& _mediaEncoder.SupportsFilter("program_opencl")
&& _mediaEncoder.SupportsFilter("scale_opencl");
var hasOption = state.BaseRequest.StreamOptions.TryGetValue("crtShader", out var val);
var optionTrue = hasOption && string.Equals(val, "true", StringComparison.OrdinalIgnoreCase);
var shaderPath = Path.Combine(AppContext.BaseDirectory, "Resources", "Shaders", "crt_lottes.cl");
var fileExists = File.Exists(shaderPath);
var hasOcl = _mediaEncoder.SupportsHwaccel("opencl");
var hasProgramOcl = _mediaEncoder.SupportsFilter("program_opencl");
var hasScaleOcl = _mediaEncoder.SupportsFilter("scale_opencl");
_logger.LogInformation(
"CRT shader check: hasOption={HasOption} val={Val} fileExists={FileExists} path={Path} hasOcl={HasOcl} hasProgramOcl={HasProgramOcl} hasScaleOcl={HasScaleOcl}",
hasOption, val, fileExists, shaderPath, hasOcl, hasProgramOcl, hasScaleOcl);
return optionTrue && fileExists && hasOcl && hasProgramOcl && hasScaleOcl;
}
private string GetCrtEscapedShaderPath()