aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-05-12 14:19:33 -0400
committerGitHub <noreply@github.com>2017-05-12 14:19:33 -0400
commit1a6ee3d48aec8aa592ea2b0aab9560292ce717d6 (patch)
tree558b953b1e01a16bd47d902c841cc747a50e0ae7 /MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
parent65db32b1f878cd478e9f4b2b4c988890a7ca47c9 (diff)
parent3cdb75190d457cbb3bed91bf79bfb4816cad29e2 (diff)
Merge pull request #2633 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs')
-rw-r--r--MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
index 8b20dca1b..6270b87c6 100644
--- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
+++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
@@ -176,6 +176,14 @@ namespace MediaBrowser.MediaEncoding.Probing
info.Video3DFormat = Video3DFormat.FullSideBySide;
}
+ foreach (var mediaStream in info.MediaStreams)
+ {
+ if (mediaStream.Type == MediaStreamType.Audio && !mediaStream.BitRate.HasValue)
+ {
+ mediaStream.BitRate = GetEstimatedAudioBitrate(mediaStream.Codec, mediaStream.Channels);
+ }
+ }
+
var videoStreamsBitrate = info.MediaStreams.Where(i => i.Type == MediaStreamType.Video).Select(i => i.BitRate ?? 0).Sum();
// If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong
if (videoStreamsBitrate == (info.Bitrate ?? 0))
@@ -187,6 +195,32 @@ namespace MediaBrowser.MediaEncoding.Probing
return info;
}
+ private int? GetEstimatedAudioBitrate(string codec, int? channels)
+ {
+ if (!channels.HasValue)
+ {
+ return null;
+ }
+
+ var channelsValue = channels.Value;
+
+ if (string.Equals(codec, "aac", StringComparison.OrdinalIgnoreCase) ||
+ string.Equals(codec, "mp3", StringComparison.OrdinalIgnoreCase))
+ {
+ if (channelsValue <= 2)
+ {
+ return 192000;
+ }
+
+ if (channelsValue >= 5)
+ {
+ return 320000;
+ }
+ }
+
+ return null;
+ }
+
private void FetchFromItunesInfo(string xml, MediaInfo info)
{
// Make things simpler and strip out the dtd