diff options
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamBuilder.cs')
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 84 |
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); } |
