diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs index fbd32ee4a..4469e51cc 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/MediaInfoFormatter.cs @@ -458,13 +458,37 @@ public static string FormatVideoCodecLegacy(MediaInfoModel mediaInfo, string sce if (audioChannelPositions.Contains("/")) { - return Regex.Replace(audioChannelPositions, @"^\d+\sobjects", "", + var channelStringList = Regex.Replace(audioChannelPositions, + @"^\d+\sobjects", + "", RegexOptions.Compiled | RegexOptions.IgnoreCase) .Replace("Object Based / ", "") .Split(new string[] {" / "}, StringSplitOptions.RemoveEmptyEntries) .FirstOrDefault() - ?.Split('/') - .Sum(s => decimal.Parse(s, CultureInfo.InvariantCulture)); + ?.Split('/'); + + var positions = default(decimal); + + if (channelStringList == null) + { + return 0; + } + + foreach (var channel in channelStringList) + { + var channelSplit = channel.Split(new string[] { "." }, StringSplitOptions.None); + + if (channelSplit.Count() == 3) + { + positions += decimal.Parse(string.Format("{0}.{1}", channelSplit[1], channelSplit[2])); + } + else + { + positions += decimal.Parse(channel); + } + } + + return positions; } } catch (Exception e)