diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-11 21:46:02 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-11 21:46:02 -0400 |
| commit | 314a51dff3f070be75bcaf00be244977fdd3ceb5 (patch) | |
| tree | 9fd0588448932f9f829f314521f6f2ba340da9a6 /MediaBrowser.Model | |
| parent | f3539686bd7ff6c748a0a9441086538081fa8903 (diff) | |
add more device options
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/Devices/DeviceInfo.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Model/Devices/DevicesOptions.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/DeviceProfile.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 31 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamInfo.cs | 9 |
5 files changed, 42 insertions, 7 deletions
diff --git a/MediaBrowser.Model/Devices/DeviceInfo.cs b/MediaBrowser.Model/Devices/DeviceInfo.cs index cc622af27..fce3b02f6 100644 --- a/MediaBrowser.Model/Devices/DeviceInfo.cs +++ b/MediaBrowser.Model/Devices/DeviceInfo.cs @@ -21,6 +21,11 @@ namespace MediaBrowser.Model.Devices /// <value>The last name of the user.</value> public string LastUserName { get; set; } /// <summary> + /// Gets or sets the name of the application. + /// </summary> + /// <value>The name of the application.</value> + public string AppName { get; set; } + /// <summary> /// Gets or sets the last user identifier. /// </summary> /// <value>The last user identifier.</value> diff --git a/MediaBrowser.Model/Devices/DevicesOptions.cs b/MediaBrowser.Model/Devices/DevicesOptions.cs index 6c2082e8d..ba2baddbe 100644 --- a/MediaBrowser.Model/Devices/DevicesOptions.cs +++ b/MediaBrowser.Model/Devices/DevicesOptions.cs @@ -5,6 +5,7 @@ namespace MediaBrowser.Model.Devices { public string[] EnabledCameraUploadDevices { get; set; } public string CameraUploadPath { get; set; } + public bool EnableCameraUploadSubfolders { get; set; } public DevicesOptions() { diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs index 244b52b70..7ed779213 100644 --- a/MediaBrowser.Model/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -74,6 +74,9 @@ namespace MediaBrowser.Model.Dlna public bool RequiresPlainVideoItems { get; set; } public bool RequiresPlainFolders { get; set; } + public bool SupportsDirectRemoteContent { get; set; } + public bool SupportsCustomHttpHeaders { get; set; } + public XmlAttribute[] XmlRootAttributes { get; set; } /// <summary> diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 815e8e20b..776d9927a 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -82,7 +82,14 @@ namespace MediaBrowser.Model.Dlna // If that doesn't produce anything, just take the first foreach (StreamInfo i in streams) { - if (i.IsDirectStream) + if (i.PlayMethod == PlayMethod.DirectPlay) + { + return i; + } + } + foreach (StreamInfo i in streams) + { + if (i.PlayMethod == PlayMethod.DirectStream) { return i; } @@ -249,11 +256,11 @@ namespace MediaBrowser.Model.Dlna if (IsEligibleForDirectPlay(item, maxBitrateSetting, subtitleStream, options)) { // See if it can be direct played - DirectPlayProfile directPlay = GetVideoDirectPlayProfile(options.Profile, item, videoStream, audioStream); + var directPlay = GetVideoDirectPlayProfile(options.Profile, item, videoStream, audioStream); if (directPlay != null) { - playlistItem.PlayMethod = PlayMethod.DirectStream; + playlistItem.PlayMethod = directPlay.Value; playlistItem.Container = item.Container; if (subtitleStream != null) @@ -366,7 +373,7 @@ namespace MediaBrowser.Model.Dlna return 128000; } - private DirectPlayProfile GetVideoDirectPlayProfile(DeviceProfile profile, + private PlayMethod? GetVideoDirectPlayProfile(DeviceProfile profile, MediaSourceInfo mediaSource, MediaStream videoStream, MediaStream audioStream) @@ -487,7 +494,21 @@ namespace MediaBrowser.Model.Dlna } } - return directPlay; + if (mediaSource.Protocol == MediaProtocol.Http) + { + if (!profile.SupportsDirectRemoteContent) + { + return null; + } + + if (mediaSource.RequiredHttpHeaders.Count > 0 && !profile.SupportsCustomHttpHeaders) + { + return null; + } + return PlayMethod.DirectPlay; + } + + return PlayMethod.DirectStream; } private bool IsEligibleForDirectPlay(MediaSourceInfo item, diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 36dc611f2..58848ff50 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -1,5 +1,4 @@ -using System.Globalization; -using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; @@ -7,6 +6,7 @@ using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Session; using System; using System.Collections.Generic; +using System.Globalization; namespace MediaBrowser.Model.Dlna { @@ -89,6 +89,11 @@ namespace MediaBrowser.Model.Dlna public string ToDlnaUrl(string baseUrl) { + if (PlayMethod == PlayMethod.DirectPlay) + { + return MediaSource.Path; + } + if (string.IsNullOrEmpty(baseUrl)) { throw new ArgumentNullException(baseUrl); |
