aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-09-20 13:22:39 -0400
committerGitHub <noreply@github.com>2017-09-20 13:22:39 -0400
commiteb2a1330045d802bfe0366df7105c220a36f111f (patch)
tree2c1638c424ee9c0837c5de6d6e08a2398da69cdb /MediaBrowser.Model/Dlna
parentec426d5c92875639ceac64477ce10fab3e639335 (diff)
parenta015e1208885bc6a8788db683c4fe47e93dc26b7 (diff)
Merge pull request #2897 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.Model/Dlna')
-rw-r--r--MediaBrowser.Model/Dlna/DeviceProfile.cs3
-rw-r--r--MediaBrowser.Model/Dlna/ResolutionNormalizer.cs6
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs122
3 files changed, 116 insertions, 15 deletions
diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs
index d6f0eafc75..fc976b6052 100644
--- a/MediaBrowser.Model/Dlna/DeviceProfile.cs
+++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs
@@ -17,9 +17,6 @@ namespace MediaBrowser.Model.Dlna
[XmlIgnore]
public string Id { get; set; }
- [XmlIgnore]
- public MediaBrowser.Model.Dlna.DeviceProfileType ProfileType { get; set; }
-
/// <summary>
/// Gets or sets the identification.
/// </summary>
diff --git a/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs b/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
index ae74e255b0..de832314c9 100644
--- a/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
+++ b/MediaBrowser.Model/Dlna/ResolutionNormalizer.cs
@@ -58,12 +58,16 @@ namespace MediaBrowser.Model.Dlna
private static ResolutionConfiguration GetResolutionConfiguration(int outputBitrate)
{
+ ResolutionConfiguration previousOption = null;
+
foreach (var config in Configurations)
{
if (outputBitrate <= config.MaxBitrate)
{
- return config;
+ return previousOption ?? config;
}
+
+ previousOption = config;
}
return null;
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index 10c6a05c0f..a5ec0f26c9 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -849,8 +849,6 @@ namespace MediaBrowser.Model.Dlna
}
}
}
- ApplyTranscodingConditions(playlistItem, audioTranscodingConditions);
-
// Honor requested max channels
if (options.MaxAudioChannels.HasValue)
{
@@ -878,6 +876,9 @@ namespace MediaBrowser.Model.Dlna
var longBitrate = Math.Max(Math.Min(videoBitrate, currentValue), 64000);
playlistItem.VideoBitrate = longBitrate > int.MaxValue ? int.MaxValue : Convert.ToInt32(longBitrate);
}
+
+ // Do this after initial values are set to account for greater than/less than conditions
+ ApplyTranscodingConditions(playlistItem, audioTranscodingConditions);
}
playlistItem.TranscodeReasons = transcodeReasons;
@@ -1430,7 +1431,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.AudioBitrate = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.AudioBitrate = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.AudioBitrate = Math.Min(num, item.AudioBitrate ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.AudioBitrate = Math.Max(num, item.AudioBitrate ?? num);
+ }
}
break;
}
@@ -1439,7 +1451,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxAudioChannels = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxAudioChannels = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxAudioChannels = Math.Min(num, item.MaxAudioChannels ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxAudioChannels = Math.Max(num, item.MaxAudioChannels ?? num);
+ }
}
break;
}
@@ -1507,7 +1530,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxRefFrames = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxRefFrames = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxRefFrames = Math.Min(num, item.MaxRefFrames ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxRefFrames = Math.Max(num, item.MaxRefFrames ?? num);
+ }
}
break;
}
@@ -1516,7 +1550,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxVideoBitDepth = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxVideoBitDepth = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxVideoBitDepth = Math.Min(num, item.MaxVideoBitDepth ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxVideoBitDepth = Math.Max(num, item.MaxVideoBitDepth ?? num);
+ }
}
break;
}
@@ -1530,7 +1575,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxHeight = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxHeight = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxHeight = Math.Min(num, item.MaxHeight ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxHeight = Math.Max(num, item.MaxHeight ?? num);
+ }
}
break;
}
@@ -1539,7 +1595,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.VideoBitrate = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.VideoBitrate = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.VideoBitrate = Math.Min(num, item.VideoBitrate ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.VideoBitrate = Math.Max(num, item.VideoBitrate ?? num);
+ }
}
break;
}
@@ -1548,7 +1615,18 @@ namespace MediaBrowser.Model.Dlna
float num;
if (float.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxFramerate = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxFramerate = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxFramerate = Math.Min(num, item.MaxFramerate ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxFramerate = Math.Max(num, item.MaxFramerate ?? num);
+ }
}
break;
}
@@ -1557,7 +1635,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.VideoLevel = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.VideoLevel = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.VideoLevel = Math.Min(num, item.VideoLevel ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.VideoLevel = Math.Max(num, item.VideoLevel ?? num);
+ }
}
break;
}
@@ -1566,7 +1655,18 @@ namespace MediaBrowser.Model.Dlna
int num;
if (int.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out num))
{
- item.MaxWidth = num;
+ if (condition.Condition == ProfileConditionType.Equals)
+ {
+ item.MaxWidth = num;
+ }
+ else if (condition.Condition == ProfileConditionType.LessThanEqual)
+ {
+ item.MaxWidth = Math.Min(num, item.MaxWidth ?? num);
+ }
+ else if (condition.Condition == ProfileConditionType.GreaterThanEqual)
+ {
+ item.MaxWidth = Math.Max(num, item.MaxWidth ?? num);
+ }
}
break;
}