From 8d1ca8ca2718b61b6167ffd6dfe61af0c75c7257 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 31 Mar 2017 15:50:55 -0400 Subject: improve direct play to transcoding fallback --- .../MediaEncoding/EncodingHelper.cs | 18 ++++++++++++++++++ .../MediaEncoding/EncodingJobOptions.cs | 5 +++++ 2 files changed, 23 insertions(+) (limited to 'MediaBrowser.Controller/MediaEncoding') diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index dd31d39b1..996009524 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -188,6 +188,14 @@ namespace MediaBrowser.Controller.MediaEncoding { return null; } + if (string.Equals(container, "ogm", StringComparison.OrdinalIgnoreCase)) + { + return null; + } + if (string.Equals(container, "divx", StringComparison.OrdinalIgnoreCase)) + { + return null; + } // Seeing reported failures here, not sure yet if this is related to specfying input format if (string.Equals(container, "m4v", StringComparison.OrdinalIgnoreCase)) @@ -750,6 +758,11 @@ namespace MediaBrowser.Controller.MediaEncoding var request = state.BaseRequest; + if (!request.AllowVideoStreamCopy) + { + return false; + } + if (videoStream.IsInterlaced) { if (request.DeInterlace) @@ -895,6 +908,11 @@ namespace MediaBrowser.Controller.MediaEncoding var request = state.BaseRequest; + if (!request.AllowAudioStreamCopy) + { + return false; + } + // Source and target codecs must match if (string.IsNullOrEmpty(audioStream.Codec) || !supportedAudioCodecs.Contains(audioStream.Codec, StringComparer.OrdinalIgnoreCase)) { diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs index 73be78dc9..f044db3d0 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs @@ -72,6 +72,9 @@ namespace MediaBrowser.Controller.MediaEncoding [ApiMember(Name = "EnableAutoStreamCopy", Description = "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] public bool EnableAutoStreamCopy { get; set; } + public bool AllowVideoStreamCopy { get; set; } + public bool AllowAudioStreamCopy { get; set; } + /// /// Gets or sets the audio sample rate. /// @@ -218,6 +221,8 @@ namespace MediaBrowser.Controller.MediaEncoding public BaseEncodingJobOptions() { EnableAutoStreamCopy = true; + AllowVideoStreamCopy = true; + AllowAudioStreamCopy = true; Context = EncodingContext.Streaming; } } -- cgit v1.2.3