aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model
diff options
context:
space:
mode:
authorIsaac Gordezky <eye.zak@gmail.com>2022-02-19 17:02:41 +0000
committerCody Robibero <cody@robibe.ro>2022-03-06 18:13:54 -0700
commit84a3db6f84bab04ee85141b3e923713e58b4bde6 (patch)
tree4aeebbb8c28e84db37341b99e32b86ca65e6a1e3 /MediaBrowser.Model
parent5e779f20ee88de93b75d06b255c93d0196c1255b (diff)
Fix transcode video matching and add tests for Transcode and Safari
Diffstat (limited to 'MediaBrowser.Model')
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs19
1 files changed, 13 insertions, 6 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index 0f48e985d..8001e2efb 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -749,13 +749,20 @@ namespace MediaBrowser.Model.Dlna
transcodingProfiles = transcodingProfiles.ToLookup(transcodingProfile =>
{
var videoCodecs = ContainerProfile.SplitValue(transcodingProfile.VideoCodec);
- var match = ContainerProfile.ContainsContainer(videoCodecs, item.VideoStream.Codec) &&
- options.Profile.CodecProfiles
- .Any(i => i.Type == CodecType.Video &&
- i.ContainsAnyCodec(transcodingProfile.VideoCodec, transcodingProfile.Container) &&
- i.ApplyConditions.Any(applyCondition => !ConditionProcessor.IsVideoConditionSatisfied(applyCondition, videoStream?.Width, videoStream?.Height, videoStream?.BitDepth, videoStream?.BitRate, videoStream?.Profile, videoStream?.Level, videoFramerate, videoStream?.PacketLength, timestamp, videoStream?.IsAnamorphic, videoStream?.IsInterlaced, videoStream?.RefFrames, numVideoStreams, numAudioStreams, videoStream?.CodecTag, videoStream?.IsAVC)));
- return match ? 1 : 2;
+ if (ContainerProfile.ContainsContainer(videoCodecs, item.VideoStream.Codec)) {
+ var videoCodec = transcodingProfile.VideoCodec;
+ var container = transcodingProfile.Container;
+ var appliedVideoConditions = options.Profile.CodecProfiles
+ .Where(i => i.Type == CodecType.Video &&
+ i.ContainsAnyCodec(videoCodec, container))
+ .Select(i =>
+ i.ApplyConditions.Any(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, videoStream?.Width, videoStream?.Height, videoStream?.BitDepth, videoStream?.BitRate, videoStream?.Profile, videoStream?.Level, videoFramerate, videoStream?.PacketLength, timestamp, videoStream?.IsAnamorphic, videoStream?.IsInterlaced, videoStream?.RefFrames, numVideoStreams, numAudioStreams, videoStream?.CodecTag, videoStream?.IsAVC)));
+ var conditionsSatisfied = !appliedVideoConditions.Any() || !appliedVideoConditions.Any(satisfied => !satisfied);
+ return conditionsSatisfied ? 1 : 2;
+ }
+
+ return 3;
})
.OrderBy(lookup => lookup.Key)
.SelectMany(lookup => lookup);