aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna/StreamBuilder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamBuilder.cs')
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs84
1 files changed, 35 insertions, 49 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index d87fbb1096..48356ef924 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -109,15 +109,7 @@ namespace MediaBrowser.Model.Dlna
int? maxBitrateSetting = options.MaxBitrate ?? options.Profile.MaxBitrate;
- MediaStream audioStream = null;
- foreach (MediaStream i in item.MediaStreams)
- {
- if (i.Type == MediaStreamType.Audio)
- {
- audioStream = i;
- break;
- }
- }
+ MediaStream audioStream = item.DefaultAudioStream;
// Honor the max bitrate setting
if (IsAudioEligibleForDirectPlay(item, maxBitrateSetting))
@@ -191,11 +183,20 @@ namespace MediaBrowser.Model.Dlna
playlistItem.AudioCodec = transcodingProfile.AudioCodec;
playlistItem.Protocol = transcodingProfile.Protocol;
- List<ProfileCondition> audioTranscodingConditions = options.Profile.CodecProfiles
- .Where(i => i.Type == CodecType.Audio && i.ContainsCodec(transcodingProfile.AudioCodec))
- .Take(1)
- .SelectMany(i => i.Conditions)
- .ToList();
+ List<CodecProfile> audioCodecProfiles = new List<CodecProfile>();
+ foreach (CodecProfile i in options.Profile.CodecProfiles)
+ {
+ if (i.Type == CodecType.Audio && i.ContainsCodec(transcodingProfile.AudioCodec))
+ {
+ audioCodecProfiles.Add(i);
+ }
+
+ if (audioCodecProfiles.Count >= 1) break;
+ }
+
+ List<ProfileCondition> audioTranscodingConditions = new List<ProfileCondition>();
+ foreach (CodecProfile i in audioCodecProfiles)
+ audioTranscodingConditions.AddRange(i.Conditions);
ApplyTranscodingConditions(playlistItem, audioTranscodingConditions);
@@ -229,25 +230,8 @@ namespace MediaBrowser.Model.Dlna
RunTimeTicks = item.RunTimeTicks
};
- MediaStream audioStream = null;
- foreach (MediaStream i in item.MediaStreams)
- {
- if (i.Type == MediaStreamType.Audio)
- {
- audioStream = i;
- break;
- }
- }
-
- MediaStream videoStream = null;
- foreach (MediaStream i in item.MediaStreams)
- {
- if (i.Type == MediaStreamType.Video)
- {
- videoStream = i;
- break;
- }
- }
+ MediaStream audioStream = item.DefaultAudioStream;
+ MediaStream videoStream = item.VideoStream;
int? maxBitrateSetting = options.MaxBitrate ?? options.Profile.MaxBitrate;
@@ -288,18 +272,26 @@ namespace MediaBrowser.Model.Dlna
playlistItem.AudioStreamIndex = options.AudioStreamIndex;
playlistItem.SubtitleStreamIndex = options.SubtitleStreamIndex;
- IEnumerable<ProfileCondition> videoTranscodingConditions = options.Profile.CodecProfiles
- .Where(i => i.Type == CodecType.Video && i.ContainsCodec(transcodingProfile.VideoCodec))
- .Take(1)
- .SelectMany(i => i.Conditions);
-
+ List<ProfileCondition> videoTranscodingConditions = new List<ProfileCondition>();
+ foreach (CodecProfile i in options.Profile.CodecProfiles)
+ {
+ if (i.Type == CodecType.Video && i.ContainsCodec(transcodingProfile.VideoCodec))
+ {
+ videoTranscodingConditions.AddRange(i.Conditions);
+ break;
+ }
+ }
ApplyTranscodingConditions(playlistItem, videoTranscodingConditions);
- IEnumerable<ProfileCondition> audioTranscodingConditions = options.Profile.CodecProfiles
- .Where(i => i.Type == CodecType.VideoAudio && i.ContainsCodec(transcodingProfile.AudioCodec))
- .Take(1)
- .SelectMany(i => i.Conditions);
-
+ List<ProfileCondition> audioTranscodingConditions = new List<ProfileCondition>();
+ foreach (CodecProfile i in options.Profile.CodecProfiles)
+ {
+ if (i.Type == CodecType.VideoAudio && i.ContainsCodec(transcodingProfile.AudioCodec))
+ {
+ audioTranscodingConditions.AddRange(i.Conditions);
+ break;
+ }
+ }
ApplyTranscodingConditions(playlistItem, audioTranscodingConditions);
// Honor requested max channels
@@ -453,12 +445,6 @@ namespace MediaBrowser.Model.Dlna
return false;
}
- if (options.AudioStreamIndex.HasValue &&
- item.MediaStreams.Count(i => i.Type == MediaStreamType.Audio) > 1)
- {
- return false;
- }
-
return IsAudioEligibleForDirectPlay(item, maxBitrate);
}