aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2015-12-24 15:06:52 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-12-26 09:25:13 -0500
commitfb3c69c61207e9f9fe87b515932a81228c4942d4 (patch)
treec28c1bd173230471e4d229c90f4d2785d2f14ae9
parent07d0384e87d1b9d8c7b480b27705889b65f327ab (diff)
fixes #1310 - Downscaling 1280x720 to 720x404
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs5
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs5
-rw-r--r--MediaBrowser.Model/Dlna/ResolutionNormalizer.cs23
3 files changed, 27 insertions, 6 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index fa230473b..fcdd01c73 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -1623,7 +1623,10 @@ namespace MediaBrowser.Api.Playback
if (state.OutputVideoBitrate.HasValue)
{
- var resolution = ResolutionNormalizer.Normalize(state.OutputVideoBitrate.Value,
+ var resolution = ResolutionNormalizer.Normalize(
+ state.VideoStream == null ? (int?)null : state.VideoStream.BitRate,
+ state.OutputVideoBitrate.Value,
+ state.VideoStream == null ? null : state.VideoStream.Codec,
state.OutputVideoCodec,
videoRequest.MaxWidth,
videoRequest.MaxHeight);
diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs
index 692fe2b6a..afbd29578 100644
--- a/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs
@@ -82,7 +82,10 @@ namespace MediaBrowser.MediaEncoding.Encoder
if (state.OutputVideoBitrate.HasValue)
{
- var resolution = ResolutionNormalizer.Normalize(state.OutputVideoBitrate.Value,
+ var resolution = ResolutionNormalizer.Normalize(
+ state.VideoStream == null ? (int?)null : state.VideoStream.BitRate,
+ state.OutputVideoBitrate.Value,
+ state.VideoStream == null ? null : state.VideoStream.Codec,
state.OutputVideoCodec,
request.MaxWidth,
request.MaxHeight);
diff --git a/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs b/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
index b23c0b20b..8a412ac2c 100644
--- a/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
+++ b/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
@@ -14,14 +14,29 @@ namespace MediaBrowser.Model.Dlna
new ResolutionConfiguration(1280, 2500000)
};
- public static ResolutionOptions Normalize(int maxBitrate,
- string codec,
+ public static ResolutionOptions Normalize(int? inputBitrate,
+ int outputBitrate,
+ string inputCodec,
+ string outputCodec,
int? maxWidth,
int? maxHeight)
{
- foreach (var config in Configurations)
+ // If the bitrate isn't changing, then don't downlscale the resolution
+ if (inputBitrate.HasValue && outputBitrate >= inputBitrate.Value)
+ {
+ if (maxWidth.HasValue || maxHeight.HasValue)
+ {
+ return new ResolutionOptions
+ {
+ MaxWidth = maxWidth,
+ MaxHeight = maxHeight
+ };
+ }
+ }
+
+ foreach (var config in Configurations)
{
- if (maxBitrate <= config.MaxBitrate)
+ if (outputBitrate <= config.MaxBitrate)
{
var originvalValue = maxWidth;