diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-06-03 01:29:00 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-06-03 01:29:00 -0400 |
| commit | b14ee636351789f79ae6257a605f8e3fa934edb4 (patch) | |
| tree | 19fa48dd9aad90969c7aca1d996c71a48919d072 | |
| parent | 0c27ae714d0145d321ccf291d31895390733331c (diff) | |
improve probing of ogg
| -rw-r--r-- | MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs | 25 |
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 { |
