diff options
| author | dmitrylyzo <56478732+dmitrylyzo@users.noreply.github.com> | 2024-08-25 02:46:42 -0400 |
|---|---|---|
| committer | Joshua M. Boniface <joshua@boniface.me> | 2024-08-25 02:46:42 -0400 |
| commit | ca4bd57b8d4545144c2c4a39b99d189d9a044842 (patch) | |
| tree | 05d5ffac338ef547bbf7ecf02273c59901ebb167 /MediaBrowser.Model/Dlna | |
| parent | fd73b0cac0d9a333eeb5f46a357e3ddda048016b (diff) | |
Backport pull request #12499 from jellyfin/release-10.9.z
Apply all codec conditions
Original-merge: fff4477a933a4b580fb255348191e8ddcba661a7
Merged-by: crobibero <cody@robibe.ro>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
Diffstat (limited to 'MediaBrowser.Model/Dlna')
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index d2715e2ac..1101c76ea 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -965,8 +965,10 @@ namespace MediaBrowser.Model.Dlna var appliedVideoConditions = options.Profile.CodecProfiles .Where(i => i.Type == CodecType.Video && i.ContainsAnyCodec(videoStream?.Codec, container) && - i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))); - var isFirstAppliedCodecProfile = true; + i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))) + // Reverse codec profiles for backward compatibility - first codec profile has higher priority + .Reverse(); + foreach (var i in appliedVideoConditions) { var transcodingVideoCodecs = ContainerProfile.SplitValue(videoCodec); @@ -974,8 +976,7 @@ namespace MediaBrowser.Model.Dlna { if (i.ContainsAnyCodec(transcodingVideoCodec, container)) { - ApplyTranscodingConditions(playlistItem, i.Conditions, transcodingVideoCodec, true, isFirstAppliedCodecProfile); - isFirstAppliedCodecProfile = false; + ApplyTranscodingConditions(playlistItem, i.Conditions, transcodingVideoCodec, true, true); continue; } } @@ -997,8 +998,10 @@ namespace MediaBrowser.Model.Dlna var appliedAudioConditions = options.Profile.CodecProfiles .Where(i => i.Type == CodecType.VideoAudio && i.ContainsAnyCodec(audioStream?.Codec, container) && - i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, inputAudioBitrate, inputAudioSampleRate, inputAudioBitDepth, audioProfile, isSecondaryAudio))); - isFirstAppliedCodecProfile = true; + i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, inputAudioBitrate, inputAudioSampleRate, inputAudioBitDepth, audioProfile, isSecondaryAudio))) + // Reverse codec profiles for backward compatibility - first codec profile has higher priority + .Reverse(); + foreach (var codecProfile in appliedAudioConditions) { var transcodingAudioCodecs = ContainerProfile.SplitValue(audioCodec); @@ -1006,8 +1009,7 @@ namespace MediaBrowser.Model.Dlna { if (codecProfile.ContainsAnyCodec(transcodingAudioCodec, container)) { - ApplyTranscodingConditions(playlistItem, codecProfile.Conditions, transcodingAudioCodec, true, isFirstAppliedCodecProfile); - isFirstAppliedCodecProfile = false; + ApplyTranscodingConditions(playlistItem, codecProfile.Conditions, transcodingAudioCodec, true, true); break; } } |
