diff options
Diffstat (limited to 'MediaBrowser.Api/Playback/BaseStreamingService.cs')
| -rw-r--r-- | MediaBrowser.Api/Playback/BaseStreamingService.cs | 50 |
1 files changed, 10 insertions, 40 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 15cac7e3b..04deea3cf 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -300,7 +300,7 @@ namespace MediaBrowser.Api.Playback case EncodingQuality.HighSpeed: return 2; case EncodingQuality.HighQuality: - return isWebm ? Math.Max((int)((Environment.ProcessorCount -1) / 2) , 2) : 0; + return 2; case EncodingQuality.MaxQuality: return isWebm ? Math.Max(Environment.ProcessorCount - 1, 2) : 0; default: @@ -373,7 +373,6 @@ namespace MediaBrowser.Api.Playback break; case EncodingQuality.MaxQuality: crf = "4"; - //profilescore aready set to 0 break; default: throw new ArgumentException("Unrecognized quality setting"); @@ -381,7 +380,9 @@ namespace MediaBrowser.Api.Playback if (isVc1) { - profileScore = 1; + profileScore ++; + // Max of 2 + profileScore = Math.Min(profileScore, 2); } // http://www.webmproject.org/docs/encoder-parameters/ @@ -1713,33 +1714,19 @@ namespace MediaBrowser.Api.Playback var extension = GetOutputFileExtension(state); // first bit means Time based seek supported, second byte range seek supported (not sure about the order now), so 01 = only byte seek, 10 = time based, 11 = both, 00 = none - var orgOp = ";DLNA.ORG_OP="; - - if (state.RunTimeTicks.HasValue) - { - // Time-based seeking currently only possible when transcoding - orgOp += isStaticallyStreamed ? "0" : "1"; + var orgOp = ";DLNA.ORG_OP=" + DlnaMaps.GetOrgOpValue(state.RunTimeTicks.HasValue, isStaticallyStreamed, state.TranscodeSeekInfo); - // Byte-based seeking only possible when not transcoding - orgOp += isStaticallyStreamed || state.TranscodeSeekInfo == TranscodeSeekInfo.Bytes ? "1" : "0"; - - if (!isStaticallyStreamed) - { - AddTimeSeekResponseHeaders(state, responseHeaders); - } - } - else + if (state.RunTimeTicks.HasValue && !isStaticallyStreamed) { - // No seeking is available if we don't know the content runtime - orgOp += "00"; + AddTimeSeekResponseHeaders(state, responseHeaders); } // 0 = native, 1 = transcoded var orgCi = isStaticallyStreamed ? ";DLNA.ORG_CI=0" : ";DLNA.ORG_CI=1"; - var flagValue = DlnaFlags.DLNA_ORG_FLAG_STREAMING_TRANSFER_MODE | - DlnaFlags.DLNA_ORG_FLAG_BACKGROUND_TRANSFERT_MODE | - DlnaFlags.DLNA_ORG_FLAG_DLNA_V15; + var flagValue = DlnaFlags.StreamingTransferMode | + DlnaFlags.BackgroundTransferMode | + DlnaFlags.DlnaV15; if (isStaticallyStreamed) { @@ -1801,23 +1788,6 @@ namespace MediaBrowser.Api.Playback } } - [Flags] - private enum DlnaFlags - { - DLNA_ORG_FLAG_SENDER_PACED = (1 << 31), - DLNA_ORG_FLAG_TIME_BASED_SEEK = (1 << 30), - DLNA_ORG_FLAG_BYTE_BASED_SEEK = (1 << 29), - DLNA_ORG_FLAG_PLAY_CONTAINER = (1 << 28), - DLNA_ORG_FLAG_S0_INCREASE = (1 << 27), - DLNA_ORG_FLAG_SN_INCREASE = (1 << 26), - DLNA_ORG_FLAG_RTSP_PAUSE = (1 << 25), - DLNA_ORG_FLAG_STREAMING_TRANSFER_MODE = (1 << 24), - DLNA_ORG_FLAG_INTERACTIVE_TRANSFERT_MODE = (1 << 23), - DLNA_ORG_FLAG_BACKGROUND_TRANSFERT_MODE = (1 << 22), - DLNA_ORG_FLAG_CONNECTION_STALL = (1 << 21), - DLNA_ORG_FLAG_DLNA_V15 = (1 << 20), - }; - private void AddTimeSeekResponseHeaders(StreamState state, IDictionary<string, string> responseHeaders) { var runtimeSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds.ToString(UsCulture); |
