diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-13 12:04:37 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-12-13 12:04:37 -0500 |
| commit | afabbfa22beba80d448dc435a2008ec45e805dd6 (patch) | |
| tree | eb5fbcffd9570681bdfac1a66218302f3f4cacf1 /MediaBrowser.Model/Dlna/ConditionProcessor.cs | |
| parent | 81d685b882de369cd42ed8f3dbf78fc6bc0f36df (diff) | |
add ios dts workaround
Diffstat (limited to 'MediaBrowser.Model/Dlna/ConditionProcessor.cs')
| -rw-r--r-- | MediaBrowser.Model/Dlna/ConditionProcessor.cs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/MediaBrowser.Model/Dlna/ConditionProcessor.cs b/MediaBrowser.Model/Dlna/ConditionProcessor.cs index 1fbb4ffa1..aa0b6f431 100644 --- a/MediaBrowser.Model/Dlna/ConditionProcessor.cs +++ b/MediaBrowser.Model/Dlna/ConditionProcessor.cs @@ -1,7 +1,9 @@ using MediaBrowser.Model.Extensions; using MediaBrowser.Model.MediaInfo; using System; +using System.Collections.Generic; using System.Globalization; +using System.Linq; namespace MediaBrowser.Model.Dlna { @@ -22,12 +24,15 @@ namespace MediaBrowser.Model.Dlna int? numVideoStreams, int? numAudioStreams, string videoCodecTag, - bool? isAvc) + bool? isAvc, + List<string> allAudioCodecs ) { switch (condition.Property) { case ProfileConditionValue.IsAnamorphic: return IsConditionSatisfied(condition, isAnamorphic); + case ProfileConditionValue.HasAudioCodec: + return IsHasAudioCodecConditionSatisfied(condition, allAudioCodecs); case ProfileConditionValue.IsAvc: return IsConditionSatisfied(condition, isAvc); case ProfileConditionValue.VideoFramerate: @@ -162,6 +167,25 @@ namespace MediaBrowser.Model.Dlna } } + private bool IsHasAudioCodecConditionSatisfied(ProfileCondition condition, List<string> allAudioCodecs) + { + if (allAudioCodecs.Count == 0) + { + // If the value is unknown, it satisfies if not marked as required + return !condition.IsRequired; + } + + switch (condition.Condition) + { + case ProfileConditionType.Equals: + return allAudioCodecs.Contains(condition.Value, StringComparer.Ordinal); + case ProfileConditionType.NotEquals: + return !allAudioCodecs.Contains(condition.Value, StringComparer.Ordinal); + default: + throw new InvalidOperationException("Unexpected ProfileConditionType"); + } + } + private bool IsConditionSatisfied(ProfileCondition condition, bool? currentValue) { if (!currentValue.HasValue) |
