aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-06-03 01:29:00 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-06-03 01:29:00 -0400
commitb14ee636351789f79ae6257a605f8e3fa934edb4 (patch)
tree19fa48dd9aad90969c7aca1d996c71a48919d072
parent0c27ae714d0145d321ccf291d31895390733331c (diff)
improve probing of ogg
-rw-r--r--MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs25
1 files changed, 24 insertions, 1 deletions
diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
index 6ca489f6d..33b703611 100644
--- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
+++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
@@ -56,10 +56,33 @@ namespace MediaBrowser.MediaEncoding.Probing
{
SetAudioRuntimeTicks(data, info);
+ var tags = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+ // tags are normally located under data.format, but we've seen some cases with ogg where they're part of the audio stream
+ // so let's create a combined list of both
+
+ if (data.streams != null)
+ {
+ var audioStream = data.streams.FirstOrDefault(i => string.Equals(i.codec_type, "audio", StringComparison.OrdinalIgnoreCase));
+
+ if (audioStream != null && audioStream.tags != null)
+ {
+ foreach (var pair in audioStream.tags)
+ {
+ tags[pair.Key] = pair.Value;
+ }
+ }
+ }
+
if (data.format != null && data.format.tags != null)
{
- SetAudioInfoFromTags(info, data.format.tags);
+ foreach (var pair in data.format.tags)
+ {
+ tags[pair.Key] = pair.Value;
+ }
}
+
+ SetAudioInfoFromTags(info, tags);
}
else
{