diff options
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 14 | ||||
| -rw-r--r-- | MediaBrowser.Model/Configuration/EncodingOptions.cs | 5 |
2 files changed, 18 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index d23eb00fe..62799f01e 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -309,6 +309,18 @@ namespace MediaBrowser.Controller.MediaEncoding && state.VideoStream.VideoRangeType == VideoRangeType.HDR10; } + private bool IsVideoToolboxVppTonemapAvailable(EncodingJobInfo state, EncodingOptions options) + { + if (state.VideoStream is null + || !options.EnableVideoToolboxTonemapping + || GetVideoColorBitDepth(state) != 10) + { + return false; + } + return state.VideoStream.VideoRange == VideoRange.HDR + && state.VideoStream.VideoRangeType == VideoRangeType.HDR10; + } + /// <summary> /// Gets the name of the output video codec. /// </summary> @@ -4991,7 +5003,7 @@ namespace MediaBrowser.Controller.MediaEncoding var supportsHwDeint = _mediaEncoder.SupportsFilter("yadif_videotoolbox"); var supportsHwScale = _mediaEncoder.SupportsFilter("scale_vt"); // VideoToolbox is special. It does not use a separate tone mapping filter like others. Instead, it performs both tone mapping and scaling in a single filter. - var useHwToneMapping = IsHwTonemapAvailable(state, options) && supportsHwScale; + var useHwToneMapping = IsVideoToolboxVppTonemapAvailable(state, options) && supportsHwScale; // fallback to software filters if we are using filters not supported by hardware yet. var useHardwareFilters = noOverlay && (!doDeintH2645 || supportsHwDeint); diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs index 84c735f9c..13ebebded 100644 --- a/MediaBrowser.Model/Configuration/EncodingOptions.cs +++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs @@ -147,6 +147,11 @@ public class EncodingOptions public bool EnableVppTonemapping { get; set; } /// <summary> + /// Gets or sets a value indicating whether videotoolbox tonemapping is enabled. + /// </summary> + public bool EnableVideoToolboxTonemapping { get; set; } + + /// <summary> /// Gets or sets the tone-mapping algorithm. /// </summary> public string TonemappingAlgorithm { get; set; } |
