diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-23 16:06:06 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-23 16:06:06 -0400 |
| commit | 1fba8d077bf5d6f59483484b8382b200da26fb27 (patch) | |
| tree | 13cbdff29acae21033b690805b8d809ae9d2ca6d /MediaBrowser.Model/Dlna/StreamBuilder.cs | |
| parent | 4fa822c00d9d2781751eae21894ee3de1776e470 (diff) | |
updated nuget
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamBuilder.cs')
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 51c63b5cb..3f88f9ac0 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -316,12 +316,14 @@ namespace MediaBrowser.Model.Dlna MediaStream videoStream = item.VideoStream; - int? maxBitrateSetting = options.GetMaxBitrate(); + // TODO: This doesn't accout for situation of device being able to handle media bitrate, but wifi connection not fast enough + bool isEligibleForDirectPlay = IsEligibleForDirectPlay(item, options.Profile.MaxStaticBitrate, subtitleStream, options); + bool isEligibleForDirectStream = IsEligibleForDirectPlay(item, options.GetMaxBitrate(), subtitleStream, options); - if (IsEligibleForDirectPlay(item, maxBitrateSetting, subtitleStream, options)) + if (isEligibleForDirectPlay || isEligibleForDirectStream) { // See if it can be direct played - var directPlay = GetVideoDirectPlayProfile(options, options.Profile, item, videoStream, audioStream); + PlayMethod? directPlay = GetVideoDirectPlayProfile(options.Profile, item, videoStream, audioStream, isEligibleForDirectPlay, isEligibleForDirectStream); if (directPlay != null) { @@ -416,6 +418,7 @@ namespace MediaBrowser.Model.Dlna playlistItem.AudioBitrate = GetAudioBitrate(playlistItem.TargetAudioChannels, playlistItem.TargetAudioCodec); } + int? maxBitrateSetting = options.GetMaxBitrate(); // Honor max rate if (maxBitrateSetting.HasValue) { @@ -448,11 +451,12 @@ namespace MediaBrowser.Model.Dlna return 128000; } - private PlayMethod? GetVideoDirectPlayProfile(VideoOptions options, - DeviceProfile profile, + private PlayMethod? GetVideoDirectPlayProfile(DeviceProfile profile, MediaSourceInfo mediaSource, MediaStream videoStream, - MediaStream audioStream) + MediaStream audioStream, + bool isEligibleForDirectPlay, + bool isEligibleForDirectStream) { // See if it can be direct played DirectPlayProfile directPlay = null; @@ -571,28 +575,34 @@ namespace MediaBrowser.Model.Dlna } } - if (mediaSource.Protocol == MediaProtocol.Http) + if (isEligibleForDirectPlay) { - if (_localPlayer.CanAccessUrl(mediaSource.Path, mediaSource.RequiredHttpHeaders.Count > 0)) + if (mediaSource.Protocol == MediaProtocol.Http) { - return PlayMethod.DirectPlay; + if (_localPlayer.CanAccessUrl(mediaSource.Path, mediaSource.RequiredHttpHeaders.Count > 0)) + { + return PlayMethod.DirectPlay; + } } - } - else if (mediaSource.Protocol == MediaProtocol.File) - { - if (_localPlayer.CanAccessFile(mediaSource.Path)) + else if (mediaSource.Protocol == MediaProtocol.File) { - return PlayMethod.DirectPlay; + if (_localPlayer.CanAccessFile(mediaSource.Path)) + { + return PlayMethod.DirectPlay; + } } } - if (!mediaSource.SupportsDirectStream) + if (isEligibleForDirectStream) { - return null; + if (mediaSource.SupportsDirectStream) + { + return PlayMethod.DirectStream; + } } - - return PlayMethod.DirectStream; + + return null; } private bool IsEligibleForDirectPlay(MediaSourceInfo item, |
