fixes #1310 - Downscaling 1280x720 to 720x404

This commit is contained in:
Luke 2015-12-24 15:06:52 -05:00
parent f9804ce6d1
commit 2841eba202
3 changed files with 27 additions and 6 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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;