aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna/ConditionProcessor.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-13 12:04:37 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-13 12:04:37 -0500
commitafabbfa22beba80d448dc435a2008ec45e805dd6 (patch)
treeeb5fbcffd9570681bdfac1a66218302f3f4cacf1 /MediaBrowser.Model/Dlna/ConditionProcessor.cs
parent81d685b882de369cd42ed8f3dbf78fc6bc0f36df (diff)
add ios dts workaround
Diffstat (limited to 'MediaBrowser.Model/Dlna/ConditionProcessor.cs')
-rw-r--r--MediaBrowser.Model/Dlna/ConditionProcessor.cs26
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)