Fix error with weirdly formatted audioChannelPositions on MediaInfo.

pull/1060/head
Leonardo Galli 8 years ago
parent 0083e95019
commit 0668f12e62

@ -100,5 +100,23 @@ namespace NzbDrone.Core.Test.MediaFiles.MediaInfo
stream.Close(); stream.Close();
} }
[Test]
[TestCase("/ Front: L R", 2.0)]
public void should_correctly_read_audio_channels(string ChannelPositions, decimal formattedChannels)
{
var info = new MediaInfoModel()
{
VideoCodec = "AVC",
AudioFormat = "DTS",
AudioLanguages = "English",
Subtitles = "English",
AudioChannels = 2,
AudioChannelPositions = ChannelPositions,
SchemaRevision = 3,
};
info.FormattedAudioChannels.Should().Be(formattedChannels);
}
} }
} }

@ -34,27 +34,33 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo
{ {
get get
{ {
if (AudioChannelPositions.IsNullOrWhiteSpace()) try
{ {
if (AudioChannelPositionsText.IsNullOrWhiteSpace()) return
{ AudioChannelPositions.Replace("Object Based /", "").Replace(" / ", "$")
if (SchemaRevision >= 3) .Split('$')
{ .First()
return AudioChannels; .Split('/')
} .Sum(s => decimal.Parse(s, CultureInfo.InvariantCulture));
}
return 0; catch
} {
return AudioChannelPositionsText.ContainsIgnoreCase("LFE") ? AudioChannels - 1 + 0.1m : AudioChannels; if (AudioChannelPositionsText.IsNullOrWhiteSpace())
} {
if (SchemaRevision >= 3)
return {
AudioChannelPositions.Replace("Object Based /", "").Replace(" / ", "$") return AudioChannels;
.Split('$') }
.First()
.Split('/') return 0;
.Sum(s => decimal.Parse(s, CultureInfo.InvariantCulture)); }
return AudioChannelPositionsText.ContainsIgnoreCase("LFE") ? AudioChannels - 1 + 0.1m : AudioChannels;
}
} }
} }
} }

Loading…
Cancel
Save