diff options
| author | gnattu <gnattu@users.noreply.github.com> | 2024-07-30 23:50:22 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-30 09:50:22 -0600 |
| commit | 0a1a109b2e9503213debdc8445910cb4c93ae382 (patch) | |
| tree | 580940d87a79c48ae7edec2b35cf4ce3618e2923 /MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | |
| parent | f7ab17d24da65875fa7e2b53b68caa4171832d9c (diff) | |
Add RFC7845 downmix algorithm (#12300)
Diffstat (limited to 'MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs')
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 42b09a29e..2c3d44bf8 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -2666,28 +2666,17 @@ namespace MediaBrowser.Controller.MediaEncoding var filters = new List<string>(); - if (channels.HasValue - && channels.Value == 2 - && state.AudioStream is not null - && state.AudioStream.Channels.HasValue - && state.AudioStream.Channels.Value == 6) + if (channels is 2 && state.AudioStream?.Channels is > 2) { - if (!encodingOptions.DownMixAudioBoost.Equals(1)) + var hasDownMixFilter = DownMixAlgorithmsHelper.AlgorithmFilterStrings.TryGetValue((encodingOptions.DownMixStereoAlgorithm, DownMixAlgorithmsHelper.InferChannelLayout(state.AudioStream)), out var downMixFilterString); + if (hasDownMixFilter) { - filters.Add("volume=" + encodingOptions.DownMixAudioBoost.ToString(CultureInfo.InvariantCulture)); + filters.Add(downMixFilterString); } - switch (encodingOptions.DownMixStereoAlgorithm) + if (!encodingOptions.DownMixAudioBoost.Equals(1)) { - case DownMixStereoAlgorithms.Dave750: - filters.Add("pan=stereo|c0=0.5*c2+0.707*c0+0.707*c4+0.5*c3|c1=0.5*c2+0.707*c1+0.707*c5+0.5*c3"); - break; - case DownMixStereoAlgorithms.NightmodeDialogue: - filters.Add("pan=stereo|c0=c2+0.30*c0+0.30*c4|c1=c2+0.30*c1+0.30*c5"); - break; - case DownMixStereoAlgorithms.None: - default: - break; + filters.Add("volume=" + encodingOptions.DownMixAudioBoost.ToString(CultureInfo.InvariantCulture)); } } @@ -7008,7 +6997,10 @@ namespace MediaBrowser.Controller.MediaEncoding var channels = state.OutputAudioChannels; - if (channels.HasValue && ((channels.Value != 2 && state.AudioStream?.Channels != 6) || encodingOptions.DownMixStereoAlgorithm == DownMixStereoAlgorithms.None)) + var useDownMixAlgorithm = state.AudioStream is not null + && DownMixAlgorithmsHelper.AlgorithmFilterStrings.ContainsKey((encodingOptions.DownMixStereoAlgorithm, DownMixAlgorithmsHelper.InferChannelLayout(state.AudioStream))); + + if (channels.HasValue && !useDownMixAlgorithm) { args += " -ac " + channels.Value; } |
