diff options
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/Configuration/XbmcMetadataOptions.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dto/BaseItemDto.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Model/Entities/MediaStream.cs | 82 | ||||
| -rw-r--r-- | MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Session/GeneralCommandType.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Model/Session/PlayRequest.cs | 10 |
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 |
