From c03f01172e246d80baadb0e4c39e7443c0179f8e Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 5 Dec 2013 21:59:47 -0800 Subject: [PATCH] Use audio and general stream runtimes when video runtime is zero Fixed: Getting runtime from files should be more reliable --- .../MediaInfo/VideoFileInfoReader.cs | 29 +++++++++++++++---- .../{Controller.js => ModalController.js} | 0 2 files changed, 24 insertions(+), 5 deletions(-) rename src/UI/Shared/Modal/{Controller.js => ModalController.js} (100%) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs index 9ae5421af..85ccdb263 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs @@ -46,7 +46,9 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo int height; int videoBitRate; int audioBitRate; - int runTime; + int audioRuntime; + int videoRuntime; + int generalRuntime; int streamCount; int audioChannels; decimal videoFrameRate; @@ -56,9 +58,13 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo Int32.TryParse(mediaInfo.Get(StreamKind.Video, 0, "Width"), out width); Int32.TryParse(mediaInfo.Get(StreamKind.Video, 0, "Height"), out height); Int32.TryParse(mediaInfo.Get(StreamKind.Video, 0, "BitRate"), out videoBitRate); - Int32.TryParse(mediaInfo.Get(StreamKind.Video, 0, "PlayTime"), out runTime); Decimal.TryParse(mediaInfo.Get(StreamKind.Video, 0, "FrameRate"), out videoFrameRate); + //Runtime + Int32.TryParse(mediaInfo.Get(StreamKind.Video, 0, "PlayTime"), out videoRuntime); + Int32.TryParse(mediaInfo.Get(StreamKind.Audio, 0, "PlayTime"), out audioRuntime); + Int32.TryParse(mediaInfo.Get(StreamKind.General, 0, "PlayTime"), out generalRuntime); + string aBitRate = mediaInfo.Get(StreamKind.Audio, 0, "BitRate"); int aBindex = aBitRate.IndexOf(" /", StringComparison.InvariantCultureIgnoreCase); if (aBindex > 0) @@ -87,10 +93,9 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo VideoBitrate = videoBitRate, Height = height, Width = width, - AudioFormat = mediaInfo.Get(StreamKind.Audio, 0, "Format"), AudioBitrate = audioBitRate, - RunTime = TimeSpan.FromMilliseconds(runTime), + RunTime = GetBestRuntime(audioRuntime, videoRuntime, generalRuntime), AudioStreamCount = streamCount, AudioChannels = audioChannels, AudioProfile = audioProfile.Trim(), @@ -100,7 +105,6 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo ScanType = scanType }; - mediaInfo.Close(); return mediaInfoModel; } } @@ -135,5 +139,20 @@ namespace NzbDrone.Core.MediaFiles.MediaInfo return info.RunTime; } + + private TimeSpan GetBestRuntime(int audio, int video, int general) + { + if (video == 0) + { + if (audio == 0) + { + return TimeSpan.FromMilliseconds(general); + } + + return TimeSpan.FromMilliseconds(audio); + } + + return TimeSpan.FromMilliseconds(video); + } } } diff --git a/src/UI/Shared/Modal/Controller.js b/src/UI/Shared/Modal/ModalController.js similarity index 100% rename from src/UI/Shared/Modal/Controller.js rename to src/UI/Shared/Modal/ModalController.js