From fb4b87df0711ef620874ffd39a5f38fa943e0a50 Mon Sep 17 00:00:00 2001 From: mani Date: Wed, 25 Feb 2026 02:42:35 +0100 Subject: [PATCH] Debug CRT shader: add detailed logging to IsCrtShaderEnabled Inject ILogger and log all conditions individually so we can see exactly which check is failing. Co-Authored-By: Claude Sonnet 4.6 --- .../MediaEncoding/EncodingHelper.cs | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index cc088a411c..4c8a2b39e9 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -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 _logger; + public EncodingHelper( IApplicationPaths appPaths, IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder, IConfiguration config, IConfigurationManager configurationManager, - IPathManager pathManager) + IPathManager pathManager, + ILogger 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 /// 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()