diff options
| author | Isaac Gordezky <eye.zak@gmail.com> | 2022-02-19 17:02:41 +0000 |
|---|---|---|
| committer | Cody Robibero <cody@robibe.ro> | 2022-03-06 18:13:54 -0700 |
| commit | 84a3db6f84bab04ee85141b3e923713e58b4bde6 (patch) | |
| tree | 4aeebbb8c28e84db37341b99e32b86ca65e6a1e3 /MediaBrowser.Model | |
| parent | 5e779f20ee88de93b75d06b255c93d0196c1255b (diff) | |
Fix transcode video matching and add tests for Transcode and Safari
Diffstat (limited to 'MediaBrowser.Model')
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 19 |
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); |
