aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
diff options
context:
space:
mode:
authorgnattu <gnattu@users.noreply.github.com>2024-07-30 23:50:22 +0800
committerGitHub <noreply@github.com>2024-07-30 09:50:22 -0600
commit0a1a109b2e9503213debdc8445910cb4c93ae382 (patch)
tree580940d87a79c48ae7edec2b35cf4ce3618e2923 /MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
parentf7ab17d24da65875fa7e2b53b68caa4171832d9c (diff)
Add RFC7845 downmix algorithm (#12300)
Diffstat (limited to 'MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs')
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs28
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;
}