aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Session
diff options
context:
space:
mode:
authorIsaac Gordezky <eye.zak@gmail.com>2022-01-23 16:37:52 +0000
committerCody Robibero <cody@robibe.ro>2022-03-06 18:13:54 -0700
commitd871dded9fc7b704f778764a73830ae6a481f3ff (patch)
tree508f8d267052557eaa2353cdb41cab521bc67c05 /MediaBrowser.Model/Session
parenta3057afde82f314d01e5af72acb75beb4e08f778 (diff)
Convert TranscodeReason to Flags
Diffstat (limited to 'MediaBrowser.Model/Session')
-rw-r--r--MediaBrowser.Model/Session/TranscodeReason.cs67
-rw-r--r--MediaBrowser.Model/Session/TranscodeReasonExtensions.cs22
-rw-r--r--MediaBrowser.Model/Session/TranscodingInfo.cs12
3 files changed, 70 insertions, 31 deletions
diff --git a/MediaBrowser.Model/Session/TranscodeReason.cs b/MediaBrowser.Model/Session/TranscodeReason.cs
index 3c95df66d..c3570840f 100644
--- a/MediaBrowser.Model/Session/TranscodeReason.cs
+++ b/MediaBrowser.Model/Session/TranscodeReason.cs
@@ -1,32 +1,51 @@
#pragma warning disable CS1591
+using System;
+
namespace MediaBrowser.Model.Session
{
+ [Flags]
public enum TranscodeReason
{
- ContainerNotSupported = 0,
- VideoCodecNotSupported = 1,
- AudioCodecNotSupported = 2,
- ContainerBitrateExceedsLimit = 3,
- AudioBitrateNotSupported = 4,
- AudioChannelsNotSupported = 5,
- VideoResolutionNotSupported = 6,
- UnknownVideoStreamInfo = 7,
- UnknownAudioStreamInfo = 8,
- AudioProfileNotSupported = 9,
- AudioSampleRateNotSupported = 10,
- AnamorphicVideoNotSupported = 11,
- InterlacedVideoNotSupported = 12,
- SecondaryAudioNotSupported = 13,
- RefFramesNotSupported = 14,
- VideoBitDepthNotSupported = 15,
- VideoBitrateNotSupported = 16,
- VideoFramerateNotSupported = 17,
- VideoLevelNotSupported = 18,
- VideoProfileNotSupported = 19,
- AudioBitDepthNotSupported = 20,
- SubtitleCodecNotSupported = 21,
- DirectPlayError = 22,
- AudioIsExternal = 23
+ None = 0,
+
+ // Primary
+ ContainerNotSupported = 1 << 0,
+ VideoCodecNotSupported = 1 << 1,
+ AudioCodecNotSupported = 1 << 2,
+ SubtitleCodecNotSupported = 1 << 3,
+ AudioIsExternal = 1 << 4,
+ SecondaryAudioNotSupported = 1 << 5,
+
+ // Video Constraints
+ VideoProfileNotSupported = 1 << 6,
+ VideoLevelNotSupported = 1 << 7,
+ VideoResolutionNotSupported = 1 << 8,
+ VideoBitDepthNotSupported = 1 << 9,
+ VideoFramerateNotSupported = 1 << 10,
+ RefFramesNotSupported = 1 << 11,
+ AnamorphicVideoNotSupported = 1 << 12,
+ InterlacedVideoNotSupported = 1 << 13,
+
+ // Audio Constraints
+ AudioChannelsNotSupported = 1 << 14,
+ AudioProfileNotSupported = 1 << 15,
+ AudioSampleRateNotSupported = 1 << 16,
+ AudioBitDepthNotSupported = 1 << 20,
+
+ // Bitrate Constraints
+ ContainerBitrateExceedsLimit = 1 << 17,
+ VideoBitrateNotSupported = 1 << 18,
+ AudioBitrateNotSupported = 1 << 19,
+
+ // Errors
+ UnknownVideoStreamInfo = 1 << 20,
+ UnknownAudioStreamInfo = 1 << 21,
+ DirectPlayError = 1 << 22,
+
+ // Aliases
+ ContainerReasons = ContainerNotSupported | ContainerBitrateExceedsLimit,
+ AudioReasons = AudioCodecNotSupported | AudioBitrateNotSupported | AudioChannelsNotSupported | AudioProfileNotSupported | AudioSampleRateNotSupported | SecondaryAudioNotSupported | AudioBitDepthNotSupported | AudioIsExternal,
+ VideoReasons = VideoCodecNotSupported | VideoResolutionNotSupported | AnamorphicVideoNotSupported | InterlacedVideoNotSupported | VideoBitDepthNotSupported | VideoBitrateNotSupported | VideoFramerateNotSupported | VideoLevelNotSupported | RefFramesNotSupported,
}
}
diff --git a/MediaBrowser.Model/Session/TranscodeReasonExtensions.cs b/MediaBrowser.Model/Session/TranscodeReasonExtensions.cs
new file mode 100644
index 000000000..c7a5095f7
--- /dev/null
+++ b/MediaBrowser.Model/Session/TranscodeReasonExtensions.cs
@@ -0,0 +1,22 @@
+#pragma warning disable CS1591
+
+using System;
+using System.Linq;
+
+namespace MediaBrowser.Model.Session
+{
+ public static class TranscodeReasonExtensions
+ {
+ private static TranscodeReason[] values = Enum.GetValues<TranscodeReason>();
+
+ public static string Serialize(this MediaBrowser.Model.Session.TranscodeReason reasons, string sep = ",")
+ {
+ return string.Join(sep, reasons.ToArray());
+ }
+
+ public static TranscodeReason[] ToArray(this MediaBrowser.Model.Session.TranscodeReason reasons)
+ {
+ return values.Where(r => r != 0 && reasons.HasFlag(r)).ToArray();
+ }
+ }
+}
diff --git a/MediaBrowser.Model/Session/TranscodingInfo.cs b/MediaBrowser.Model/Session/TranscodingInfo.cs
index 68ab691f8..78e5baad7 100644
--- a/MediaBrowser.Model/Session/TranscodingInfo.cs
+++ b/MediaBrowser.Model/Session/TranscodingInfo.cs
@@ -1,17 +1,12 @@
#nullable disable
#pragma warning disable CS1591
-using System;
+using System.Text.Json.Serialization;
namespace MediaBrowser.Model.Session
{
public class TranscodingInfo
{
- public TranscodingInfo()
- {
- TranscodeReasons = Array.Empty<TranscodeReason>();
- }
-
public string AudioCodec { get; set; }
public string VideoCodec { get; set; }
@@ -36,6 +31,9 @@ namespace MediaBrowser.Model.Session
public HardwareEncodingType? HardwareAccelerationType { get; set; }
- public TranscodeReason[] TranscodeReasons { get; set; }
+ public TranscodeReason[] TranscodeReasons { get => TranscodeReason.ToArray(); }
+
+ [JsonIgnore]
+ public TranscodeReason TranscodeReason { get; set; }
}
}