diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/Playback/BaseStreamingService.cs | 45 | ||||
| -rw-r--r-- | MediaBrowser.Api/SessionsService.cs | 8 |
2 files changed, 33 insertions, 20 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index b9eb4db072..a72b2088bc 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -328,7 +328,8 @@ namespace MediaBrowser.Api.Playback { var param = string.Empty; - var hasFixedResolution = state.VideoRequest.HasFixedResolution; + var isVc1 = state.VideoStream != null && + string.Equals(state.VideoStream.Codec, "vc1", StringComparison.OrdinalIgnoreCase); var qualitySetting = GetQualitySetting(); @@ -364,24 +365,36 @@ namespace MediaBrowser.Api.Playback // webm else if (string.Equals(videoCodec, "libvpx", StringComparison.OrdinalIgnoreCase)) { - // http://www.webmproject.org/docs/encoder-parameters/ - param = "-speed 16 -quality good -profile:v 0 -slices 8"; + // Values 0-3, 0 being highest quality but slower + var profileScore = 0; + + string crf; - if (!hasFixedResolution) + switch (qualitySetting) { - switch (qualitySetting) - { - case EncodingQuality.HighSpeed: - param += " -crf 18"; - break; - case EncodingQuality.HighQuality: - param += " -crf 10"; - break; - case EncodingQuality.MaxQuality: - param += " -crf 4"; - break; - } + case EncodingQuality.HighSpeed: + crf = "18"; + profileScore++; + break; + case EncodingQuality.HighQuality: + crf = "10"; + break; + case EncodingQuality.MaxQuality: + crf = "4"; + break; + default: + throw new ArgumentException("Unrecognized quality setting"); + } + + if (isVc1) + { + profileScore++; } + + // http://www.webmproject.org/docs/encoder-parameters/ + param = string.Format("-speed 16 -quality good -profile:v {0} -slices 8 -crf {1}", + profileScore.ToString(UsCulture), + crf); } else if (string.Equals(videoCodec, "mpeg4", StringComparison.OrdinalIgnoreCase)) diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs index 1f3bcf75be..d1d0f742ff 100644 --- a/MediaBrowser.Api/SessionsService.cs +++ b/MediaBrowser.Api/SessionsService.cs @@ -231,8 +231,8 @@ namespace MediaBrowser.Api [ApiMember(Name = "PlayableMediaTypes", Description = "A list of playable media types, comma delimited. Audio, Video, Book, Game, Photo.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] public string PlayableMediaTypes { get; set; } - [ApiMember(Name = "SupportsFullscreenToggle", Description = "Whether or not the session supports fullscreen toggle", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "POST")] - public bool SupportsFullscreenToggle { get; set; } + [ApiMember(Name = "SupportedCommands", Description = "A list of supported remote control commands, comma delimited", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string SupportedCommands { get; set; } } /// <summary> @@ -425,9 +425,9 @@ namespace MediaBrowser.Api { _sessionManager.ReportCapabilities(request.Id, new SessionCapabilities { - PlayableMediaTypes = request.PlayableMediaTypes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries), + PlayableMediaTypes = request.PlayableMediaTypes.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(), - SupportsFullscreenToggle = request.SupportsFullscreenToggle + SupportedCommands = request.SupportedCommands.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() }); } |
