diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index 6ff48a044e..84a815dfc0 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -35,7 +35,13 @@ namespace MediaBrowser.Model.ApiClient /// Occurs when [remote logged out]. /// event EventHandler RemoteLoggedOut; - + + /// + /// Gets the device. + /// + /// The device. + IDevice Device { get; } + /// /// Gets the connect user. /// diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 51c63b5cb4..3f88f9ac06 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, diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 395aed067c..5ca36d8f89 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.595 + 3.0.597 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index a0838e321a..c8ee52f098 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.595 + 3.0.597 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 854ba83532..35aca7ac00 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.595 + 3.0.597 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 76bd7b755b..4f2225f8fe 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.595 + 3.0.597 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +