From 992eed5ef7f2cfb3882e5670cca76b09d87cf9df Mon Sep 17 00:00:00 2001 From: gnattu Date: Thu, 18 Jul 2024 11:45:16 +0800 Subject: [PATCH] Fix AC-4 Sample rate check Some Audio codec will have a null CodecTag, check for that to avoid null reference If the client already requests a specific sample rate, use that instead of our default sample rate for AC-4 Signed-off-by: gnattu --- Jellyfin.Api/Controllers/DynamicHlsController.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Jellyfin.Api/Controllers/DynamicHlsController.cs b/Jellyfin.Api/Controllers/DynamicHlsController.cs index 2201225a8a..ccaa5b19a6 100644 --- a/Jellyfin.Api/Controllers/DynamicHlsController.cs +++ b/Jellyfin.Api/Controllers/DynamicHlsController.cs @@ -1735,18 +1735,17 @@ public class DynamicHlsController : BaseJellyfinApiController } } - if (state.AudioStream is not null && state.AudioStream.CodecTag.Equals("ac-4", StringComparison.Ordinal)) + if (state.OutputAudioSampleRate.HasValue) + { + args += " -ar " + state.OutputAudioSampleRate.Value.ToString(CultureInfo.InvariantCulture); + } + else if (state.AudioStream?.CodecTag is not null && state.AudioStream.CodecTag.Equals("ac-4", StringComparison.Ordinal)) { // ac-4 audio tends to hava a super weird sample rate that will fail most encoders // force resample it to 48KHz args += " -ar 48000"; } - if (state.OutputAudioSampleRate.HasValue) - { - args += " -ar " + state.OutputAudioSampleRate.Value.ToString(CultureInfo.InvariantCulture); - } - args += _encodingHelper.GetAudioFilterParam(state, _encodingOptions); return args;