aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs1
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs18
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs2
-rw-r--r--MediaBrowser.Model/Entities/MediaStream.cs82
-rw-r--r--MediaBrowser.Model/LiveTv/LiveTvOptions.cs1
-rw-r--r--MediaBrowser.Model/Session/GeneralCommandType.cs3
-rw-r--r--MediaBrowser.Model/Session/PlayRequest.cs10
7 files changed, 96 insertions, 21 deletions
diff --git a/MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs b/MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs
index 86eb40b975..de8a59a3d9 100644
--- a/MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs
+++ b/MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs
@@ -18,7 +18,6 @@ namespace MediaBrowser.Model.Configuration
SaveImagePathsInNfo = true;
EnablePathSubstitution = true;
- EnableExtraThumbsDuplication = true;
}
}
}
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index cf4cd99258..37d266ac09 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -1335,21 +1335,15 @@ namespace MediaBrowser.Model.Dlna
return true;
}
- if (!maxBitrate.HasValue)
- {
- _logger.Info("Cannot " + playMethod + " due to unknown supported bitrate");
- return false;
- }
+ var requestedMaxBitrate = maxBitrate ?? 1000000;
- if (!item.Bitrate.HasValue)
- {
- _logger.Info("Cannot " + playMethod + " due to unknown content bitrate");
- return false;
- }
+ // If we don't know the bitrate, then force a transcode if requested max bitrate is under 40 mbps
+ var itemBitrate = item.Bitrate ??
+ 40000000;
- if (item.Bitrate.Value > maxBitrate.Value)
+ if (itemBitrate > requestedMaxBitrate)
{
- _logger.Info("Bitrate exceeds " + playMethod + " limit: media bitrate: {0}, max bitrate: {1}", item.Bitrate.Value.ToString(CultureInfo.InvariantCulture), maxBitrate.Value.ToString(CultureInfo.InvariantCulture));
+ _logger.Info("Bitrate exceeds " + playMethod + " limit: media bitrate: {0}, max bitrate: {1}", item.Bitrate.Value.ToString(CultureInfo.InvariantCulture), requestedMaxBitrate.ToString(CultureInfo.InvariantCulture));
return false;
}
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index 8bad650b53..ba975db442 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -75,7 +75,7 @@ namespace MediaBrowser.Model.Dto
public bool? CanDownload { get; set; }
public bool? HasSubtitles { get; set; }
-
+
public string PreferredMetadataLanguage { get; set; }
public string PreferredMetadataCountryCode { get; set; }
diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs
index 747528cbfe..8a402e6f45 100644
--- a/MediaBrowser.Model/Entities/MediaStream.cs
+++ b/MediaBrowser.Model/Entities/MediaStream.cs
@@ -46,13 +46,13 @@ namespace MediaBrowser.Model.Entities
{
get
{
- if (!string.IsNullOrEmpty(Title))
- {
- return AddLanguageIfNeeded(Title);
- }
-
if (Type == MediaStreamType.Audio)
{
+ //if (!string.IsNullOrEmpty(Title))
+ //{
+ // return AddLanguageIfNeeded(Title);
+ //}
+
List<string> attributes = new List<string>();
if (!string.IsNullOrEmpty(Language))
@@ -84,8 +84,32 @@ namespace MediaBrowser.Model.Entities
return string.Join(" ", attributes.ToArray(attributes.Count));
}
+ if (Type == MediaStreamType.Video)
+ {
+ List<string> attributes = new List<string>();
+
+ var resolutionText = GetResolutionText();
+
+ if (!string.IsNullOrEmpty(resolutionText))
+ {
+ attributes.Add(resolutionText);
+ }
+
+ if (!string.IsNullOrEmpty(Codec))
+ {
+ attributes.Add(Codec.ToUpper());
+ }
+
+ return string.Join(" ", attributes.ToArray(attributes.Count));
+ }
+
if (Type == MediaStreamType.Subtitle)
{
+ //if (!string.IsNullOrEmpty(Title))
+ //{
+ // return AddLanguageIfNeeded(Title);
+ //}
+
List<string> attributes = new List<string>();
if (!string.IsNullOrEmpty(Language))
@@ -121,6 +145,54 @@ namespace MediaBrowser.Model.Entities
}
}
+ private string GetResolutionText()
+ {
+ var i = this;
+
+ if (i.Width.HasValue)
+ {
+ if (i.Width >= 3800)
+ {
+ return "4K";
+ }
+ if (i.Width >= 2500)
+ {
+ if (i.IsInterlaced)
+ {
+ return "1440I";
+ }
+ return "1440P";
+ }
+ if (i.Width >= 1900)
+ {
+ if (i.IsInterlaced)
+ {
+ return "1080I";
+ }
+ return "1080P";
+ }
+ if (i.Width >= 1260)
+ {
+ if (i.IsInterlaced)
+ {
+ return "720I";
+ }
+ return "720P";
+ }
+ if (i.Width >= 700)
+ {
+
+ if (i.IsInterlaced)
+ {
+ return "480I";
+ }
+ return "480P";
+ }
+
+ }
+ return null;
+ }
+
private string AddLanguageIfNeeded(string title)
{
if (!string.IsNullOrEmpty(Language) &&
diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
index f177233f9b..75edf05aa8 100644
--- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
+++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs
@@ -47,6 +47,7 @@ namespace MediaBrowser.Model.LiveTv
public bool EnableStreamLooping { get; set; }
public bool EnableNewHdhrChannelIds { get; set; }
public string Source { get; set; }
+ public int TunerCount { get; set; }
public TunerHostInfo()
{
diff --git a/MediaBrowser.Model/Session/GeneralCommandType.cs b/MediaBrowser.Model/Session/GeneralCommandType.cs
index 8dd0c29e43..616d5f9b41 100644
--- a/MediaBrowser.Model/Session/GeneralCommandType.cs
+++ b/MediaBrowser.Model/Session/GeneralCommandType.cs
@@ -39,6 +39,7 @@
ChannelDown = 31,
SetMaxStreamingBitrate = 31,
Guide = 32,
- ToggleStats = 33
+ ToggleStats = 33,
+ PlayMediaSource = 34
}
} \ No newline at end of file
diff --git a/MediaBrowser.Model/Session/PlayRequest.cs b/MediaBrowser.Model/Session/PlayRequest.cs
index 5db5e90cb7..d50cb59533 100644
--- a/MediaBrowser.Model/Session/PlayRequest.cs
+++ b/MediaBrowser.Model/Session/PlayRequest.cs
@@ -1,4 +1,5 @@
-
+using MediaBrowser.Model.Services;
+
namespace MediaBrowser.Model.Session
{
/// <summary>
@@ -10,18 +11,21 @@ namespace MediaBrowser.Model.Session
/// Gets or sets the item ids.
/// </summary>
/// <value>The item ids.</value>
+ [ApiMember(Name = "ItemIds", Description = "The ids of the items to play, comma delimited", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST", AllowMultiple = true)]
public string[] ItemIds { get; set; }
/// <summary>
/// Gets or sets the start position ticks that the first item should be played at
/// </summary>
/// <value>The start position ticks.</value>
+ [ApiMember(Name = "StartPositionTicks", Description = "The starting position of the first item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
public long? StartPositionTicks { get; set; }
/// <summary>
/// Gets or sets the play command.
/// </summary>
/// <value>The play command.</value>
+ [ApiMember(Name = "PlayCommand", Description = "The type of play command to issue (PlayNow, PlayNext, PlayLast). Clients who have not yet implemented play next and play last may play now.", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public PlayCommand PlayCommand { get; set; }
/// <summary>
@@ -29,5 +33,9 @@ namespace MediaBrowser.Model.Session
/// </summary>
/// <value>The controlling user identifier.</value>
public string ControllingUserId { get; set; }
+
+ public int? SubtitleStreamIndex { get; set; }
+ public int? AudioStreamIndex { get; set; }
+ public string MediaSourceId { get; set; }
}
} \ No newline at end of file