aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2023-02-25 16:43:55 +0100
committerGitHub <noreply@github.com>2023-02-25 16:43:55 +0100
commite5ba1bcba9061ff30bb728f0cc4a5aa9c6eed840 (patch)
tree9f52297d55fe1e3d759e0cd856c467430c754a6f
parentf8f8505286b7b6865b46eb4a500904a79077ff86 (diff)
parent49eb04899c1e4f0864674b475a87a26e6dddbd58 (diff)
Merge pull request #9389 from crobibero/remove-switch
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs38
1 files changed, 21 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
index f4684a221..e8d011a15 100644
--- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
+++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
@@ -71,6 +71,21 @@ namespace MediaBrowser.Controller.MediaEncoding
"m4v",
};
+ // Set max transcoding channels for encoders that can't handle more than a set amount of channels
+ // AAC, FLAC, ALAC, libopus, libvorbis encoders all support at least 8 channels
+ private static readonly Dictionary<string, int> _audioTranscodeChannelLookup = new(StringComparer.OrdinalIgnoreCase)
+ {
+ { "wmav2", 2 },
+ { "libmp3lame", 2 },
+ { "libfdk_aac", 6 },
+ { "aac_at", 6 },
+ { "ac3", 6 },
+ { "eac3", 6 },
+ { "dca", 6 },
+ { "mlp", 6 },
+ { "truehd", 6 },
+ };
+
public EncodingHelper(
IApplicationPaths appPaths,
IMediaEncoder mediaEncoder,
@@ -2231,25 +2246,14 @@ namespace MediaBrowser.Controller.MediaEncoding
if (isTranscodingAudio)
{
- // Set max transcoding channels for encoders that can't handle more than a set amount of channels
- // AAC, FLAC, ALAC, libopus, libvorbis encoders all support at least 8 channels
- int transcoderChannelLimit = GetAudioEncoder(state) switch
- {
- string audioEncoder when audioEncoder.Equals("wmav2", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("libmp3lame", StringComparison.OrdinalIgnoreCase) => 2,
- string audioEncoder when audioEncoder.Equals("libfdk_aac", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("aac_at", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("ac3", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("eac3", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("dts", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("mlp", StringComparison.OrdinalIgnoreCase)
- || audioEncoder.Equals("truehd", StringComparison.OrdinalIgnoreCase) => 6,
- // Set default max transcoding channels to 8 to prevent encoding errors due to asking for too many channels
- _ => 8,
- };
+ var audioEncoder = GetAudioEncoder(state);
+ if (!_audioTranscodeChannelLookup.TryGetValue(audioEncoder, out var transcoderChannelLimit))
+ {
+ // Set default max transcoding channels to 8 to prevent encoding errors due to asking for too many channels.
+ transcoderChannelLimit = 8;
+ }
// Set resultChannels to minimum between resultChannels, TranscodingMaxAudioChannels, transcoderChannelLimit
-
resultChannels = transcoderChannelLimit < resultChannels ? transcoderChannelLimit : resultChannels ?? transcoderChannelLimit;
if (request.TranscodingMaxAudioChannels < resultChannels)