aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-11 21:46:02 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-11 21:46:02 -0400
commit314a51dff3f070be75bcaf00be244977fdd3ceb5 (patch)
tree9fd0588448932f9f829f314521f6f2ba340da9a6 /MediaBrowser.Model
parentf3539686bd7ff6c748a0a9441086538081fa8903 (diff)
add more device options
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Devices/DeviceInfo.cs5
-rw-r--r--MediaBrowser.Model/Devices/DevicesOptions.cs1
-rw-r--r--MediaBrowser.Model/Dlna/DeviceProfile.cs3
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs31
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfo.cs9
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);