From b7a811992ba8a660ade212e2ed37306e9d9721d9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 3 Feb 2014 15:37:18 -0500 Subject: [PATCH] limit bitrate to original file --- .../Playback/BaseStreamingService.cs | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index ca3e2c050..f91a35dca 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -355,10 +355,10 @@ namespace MediaBrowser.Api.Playback param += " -crf 18"; break; case EncodingQuality.HighQuality: - param += " -crf 14"; + param += " -crf 10"; break; case EncodingQuality.MaxQuality: - param += " -crf 10"; + param += " -crf 4"; break; } } @@ -968,7 +968,35 @@ namespace MediaBrowser.Api.Playback protected int? GetVideoBitrateParamValue(StreamState state) { - return state.VideoRequest.VideoBitRate; + var bitrate = state.VideoRequest.VideoBitRate; + + if (state.VideoStream != null) + { + var isUpscaling = false; + + if (state.VideoRequest.Height.HasValue && state.VideoStream.Height.HasValue && + state.VideoRequest.Height.Value > state.VideoStream.Height.Value) + { + isUpscaling = true; + } + + if (state.VideoRequest.Width.HasValue && state.VideoStream.Width.HasValue && + state.VideoRequest.Width.Value > state.VideoStream.Width.Value) + { + isUpscaling = true; + } + + // Don't allow bitrate increases unless upscaling + if (!isUpscaling) + { + if (bitrate.HasValue && state.VideoStream.BitRate.HasValue) + { + bitrate = Math.Min(bitrate.Value, state.VideoStream.BitRate.Value); + } + } + } + + return bitrate; } protected string GetVideoBitrateParam(StreamState state, string videoCodec, bool isHls)