aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs45
-rw-r--r--MediaBrowser.Api/SessionsService.cs8
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()
});
}