From 442eb66e04518a249f635bb1fcc8336081c76662 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 29 Oct 2015 21:55:42 -0400 Subject: [PATCH 1/2] update mac startup --- MediaBrowser.Server.Mac/Main.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index 250dfd7e78..67effa95fd 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -92,6 +92,7 @@ namespace MediaBrowser.Server.Mac ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); var fileSystem = new ManagedFileSystem(new PatternsLogger(logManager.GetLogger("FileSystem")), false, true); + fileSystem.AddShortcutHandler(new MbLinkShortcutHandler(fileSystem)); var nativeApp = new NativeApp(); From a050f20ac5ce37ce501d399346a5be40054da7f4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 30 Oct 2015 11:26:36 -0400 Subject: [PATCH 2/2] extract ref frame count using ffprobe --- .../Probing/InternalMediaInfoResult.cs | 6 +++ .../Probing/ProbeResultNormalizer.cs | 43 ++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/MediaBrowser.MediaEncoding/Probing/InternalMediaInfoResult.cs b/MediaBrowser.MediaEncoding/Probing/InternalMediaInfoResult.cs index 9b95e83e74..3e4bfe1a70 100644 --- a/MediaBrowser.MediaEncoding/Probing/InternalMediaInfoResult.cs +++ b/MediaBrowser.MediaEncoding/Probing/InternalMediaInfoResult.cs @@ -114,6 +114,12 @@ namespace MediaBrowser.MediaEncoding.Probing /// The width. public int width { get; set; } + /// + /// Gets or sets the refs. + /// + /// The refs. + public int refs { get; set; } + /// /// Gets or sets the height. /// diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 7e9fa151b3..ddcd48b8b0 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -130,13 +130,18 @@ namespace MediaBrowser.MediaEncoding.Probing var stream = new MediaStream { Codec = streamInfo.codec_name, - CodecTag = streamInfo.codec_tag_string, Profile = streamInfo.profile, Level = streamInfo.level, Index = streamInfo.index, PixelFormat = streamInfo.pix_fmt }; + // Filter out junk + if (!string.IsNullOrWhiteSpace(streamInfo.codec_tag_string) && streamInfo.codec_tag_string.IndexOf("[0]", StringComparison.OrdinalIgnoreCase) == -1) + { + stream.CodecTag = streamInfo.codec_tag_string; + } + if (streamInfo.tags != null) { stream.Language = GetDictionaryValue(streamInfo.tags, "language"); @@ -184,6 +189,11 @@ namespace MediaBrowser.MediaEncoding.Probing // http://stackoverflow.com/questions/17353387/how-to-detect-anamorphic-video-with-ffprobe stream.IsAnamorphic = string.Equals(streamInfo.sample_aspect_ratio, "0:1", StringComparison.OrdinalIgnoreCase); + + if (streamInfo.refs > 0) + { + stream.RefFrames = streamInfo.refs; + } } else { @@ -922,25 +932,26 @@ namespace MediaBrowser.MediaEncoding.Probing private void UpdateFromMediaInfo(MediaSourceInfo video, MediaStream videoStream) { - if (video.Protocol == MediaProtocol.File) + if (video.Protocol == MediaProtocol.File && videoStream != null) { - if (videoStream != null) + try { - try - { - _logger.Debug("Running MediaInfo against {0}", video.Path); + _logger.Debug("Running MediaInfo against {0}", video.Path); - var result = new MediaInfoLib().GetVideoInfo(video.Path); + var result = new MediaInfoLib().GetVideoInfo(video.Path); - videoStream.IsCabac = result.IsCabac ?? videoStream.IsCabac; - videoStream.IsInterlaced = result.IsInterlaced ?? videoStream.IsInterlaced; - videoStream.BitDepth = result.BitDepth ?? videoStream.BitDepth; - videoStream.RefFrames = result.RefFrames; - } - catch (Exception ex) - { - _logger.ErrorException("Error running MediaInfo on {0}", ex, video.Path); - } + videoStream.IsCabac = result.IsCabac ?? videoStream.IsCabac; + videoStream.IsInterlaced = result.IsInterlaced ?? videoStream.IsInterlaced; + videoStream.BitDepth = result.BitDepth ?? videoStream.BitDepth; + videoStream.RefFrames = result.RefFrames ?? videoStream.RefFrames; + } + catch (TypeLoadException) + { + // This is non-essential. Don't spam the log + } + catch (Exception ex) + { + _logger.ErrorException("Error running MediaInfo on {0}", ex, video.Path); } } }