浏览代码

move methods to base class

Luke Pulverenti 8 年之前
父节点
当前提交
820b4873fb

+ 0 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -783,7 +783,6 @@ namespace MediaBrowser.Api.Playback
             state.OutputContainer = (container ?? string.Empty).TrimStart('.');
             state.OutputContainer = (container ?? string.Empty).TrimStart('.');
 
 
             state.OutputAudioBitrate = EncodingHelper.GetAudioBitrateParam(state.Request, state.AudioStream);
             state.OutputAudioBitrate = EncodingHelper.GetAudioBitrateParam(state.Request, state.AudioStream);
-            state.OutputAudioSampleRate = request.AudioSampleRate;
 
 
             state.OutputAudioCodec = state.Request.AudioCodec;
             state.OutputAudioCodec = state.Request.AudioCodec;
 
 

+ 0 - 242
MediaBrowser.Api/Playback/StreamState.cs

@@ -250,248 +250,6 @@ namespace MediaBrowser.Api.Playback
 
 
         public DeviceProfile DeviceProfile { get; set; }
         public DeviceProfile DeviceProfile { get; set; }
 
 
-        public int? TotalOutputBitrate
-        {
-            get
-            {
-                return (OutputAudioBitrate ?? 0) + (OutputVideoBitrate ?? 0);
-            }
-        }
-
-        public int? OutputWidth
-        {
-            get
-            {
-                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
-                {
-                    var size = new ImageSize
-                    {
-                        Width = VideoStream.Width.Value,
-                        Height = VideoStream.Height.Value
-                    };
-
-                    var newSize = DrawingUtils.Resize(size,
-                        VideoRequest.Width,
-                        VideoRequest.Height,
-                        VideoRequest.MaxWidth,
-                        VideoRequest.MaxHeight);
-
-                    return Convert.ToInt32(newSize.Width);
-                }
-
-                if (VideoRequest == null)
-                {
-                    return null;
-                }
-
-                return VideoRequest.MaxWidth ?? VideoRequest.Width;
-            }
-        }
-
-        public int? OutputHeight
-        {
-            get
-            {
-                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
-                {
-                    var size = new ImageSize
-                    {
-                        Width = VideoStream.Width.Value,
-                        Height = VideoStream.Height.Value
-                    };
-
-                    var newSize = DrawingUtils.Resize(size,
-                        VideoRequest.Width,
-                        VideoRequest.Height,
-                        VideoRequest.MaxWidth,
-                        VideoRequest.MaxHeight);
-
-                    return Convert.ToInt32(newSize.Height);
-                }
-
-                if (VideoRequest == null)
-                {
-                    return null;
-                }
-
-                return VideoRequest.MaxHeight ?? VideoRequest.Height;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public int? TargetVideoBitDepth
-        {
-            get
-            {
-                var stream = VideoStream;
-                return stream == null || !Request.Static ? null : stream.BitDepth;
-            }
-        }
-
-        /// <summary>
-        /// Gets the target reference frames.
-        /// </summary>
-        /// <value>The target reference frames.</value>
-        public int? TargetRefFrames
-        {
-            get
-            {
-                var stream = VideoStream;
-                return stream == null || !Request.Static ? null : stream.RefFrames;
-            }
-        }
-
-        public int? TargetVideoStreamCount
-        {
-            get
-            {
-                if (Request.Static)
-                {
-                    return GetMediaStreamCount(MediaStreamType.Video, int.MaxValue);
-                }
-                return GetMediaStreamCount(MediaStreamType.Video, 1);
-            }
-        }
-
-        public int? TargetAudioStreamCount
-        {
-            get
-            {
-                if (Request.Static)
-                {
-                    return GetMediaStreamCount(MediaStreamType.Audio, int.MaxValue);
-                }
-                return GetMediaStreamCount(MediaStreamType.Audio, 1);
-            }
-        }
-
-        public bool? IsTargetAnamorphic
-        {
-            get
-            {
-                if (Request.Static)
-                {
-                    return VideoStream == null ? null : VideoStream.IsAnamorphic;
-                }
-
-                return false;
-            }
-        }
-
-        public bool? IsTargetInterlaced
-        {
-            get
-            {
-                if (Request.Static)
-                {
-                    return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
-                }
-
-                if (DeInterlace)
-                {
-                    return false;
-                }
-
-                return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
-            }
-        }
-
-        private int? GetMediaStreamCount(MediaStreamType type, int limit)
-        {
-            var count = MediaSource.GetStreamCount(type);
-
-            if (count.HasValue)
-            {
-                count = Math.Min(count.Value, limit);
-            }
-
-            return count;
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public float? TargetFramerate
-        {
-            get
-            {
-                var stream = VideoStream;
-                var requestedFramerate = VideoRequest.MaxFramerate ?? VideoRequest.Framerate;
-
-                return requestedFramerate.HasValue && !Request.Static
-                    ? requestedFramerate
-                    : stream == null ? null : stream.AverageFrameRate ?? stream.RealFrameRate;
-            }
-        }
-
-        public TransportStreamTimestamp TargetTimestamp
-        {
-            get
-            {
-                var defaultValue = string.Equals(OutputContainer, "m2ts", StringComparison.OrdinalIgnoreCase) ?
-                    TransportStreamTimestamp.Valid :
-                    TransportStreamTimestamp.None;
-
-                return !Request.Static
-                    ? defaultValue
-                    : InputTimestamp;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public int? TargetPacketLength
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !Request.Static
-                    ? null
-                    : stream == null ? null : stream.PacketLength;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public string TargetVideoProfile
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !string.IsNullOrEmpty(VideoRequest.Profile) && !Request.Static
-                    ? VideoRequest.Profile
-                    : stream == null ? null : stream.Profile;
-            }
-        }
-
-        public string TargetVideoCodecTag
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !Request.Static
-                    ? null
-                    : stream == null ? null : stream.CodecTag;
-            }
-        }
-
-        public bool? IsTargetAVC
-        {
-            get
-            {
-                if (Request.Static)
-                {
-                    return VideoStream == null ? null : VideoStream.IsAVC;
-                }
-
-                return true;
-            }
-        }
-
         public TranscodingJob TranscodingJob;
         public TranscodingJob TranscodingJob;
         public override void ReportTranscodingProgress(TimeSpan? transcodingPosition, float? framerate, double? percentComplete, long? bytesTranscoded, int? bitRate)
         public override void ReportTranscodingProgress(TimeSpan? transcodingPosition, float? framerate, double? percentComplete, long? bytesTranscoded, int? bitRate)
         {
         {

+ 266 - 1
MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs

@@ -8,6 +8,7 @@ using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.MediaInfo;
 using MediaBrowser.Model.MediaInfo;
+using MediaBrowser.Model.Drawing;
 
 
 namespace MediaBrowser.Controller.MediaEncoding
 namespace MediaBrowser.Controller.MediaEncoding
 {
 {
@@ -134,7 +135,6 @@ namespace MediaBrowser.Controller.MediaEncoding
 
 
         public int? OutputAudioBitrate;
         public int? OutputAudioBitrate;
         public int? OutputAudioChannels;
         public int? OutputAudioChannels;
-        public int? OutputAudioSampleRate;
         public bool DeInterlace { get; set; }
         public bool DeInterlace { get; set; }
         public bool IsVideoRequest { get; set; }
         public bool IsVideoRequest { get; set; }
         public TranscodingJobType TranscodingType { get; set; }
         public TranscodingJobType TranscodingType { get; set; }
@@ -173,6 +173,97 @@ namespace MediaBrowser.Controller.MediaEncoding
             return false;
             return false;
         }
         }
 
 
+        public int? TotalOutputBitrate
+        {
+            get
+            {
+                return (OutputAudioBitrate ?? 0) + (OutputVideoBitrate ?? 0);
+            }
+        }
+
+        public int? OutputWidth
+        {
+            get
+            {
+                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
+                {
+                    var size = new ImageSize
+                    {
+                        Width = VideoStream.Width.Value,
+                        Height = VideoStream.Height.Value
+                    };
+
+                    var newSize = DrawingUtils.Resize(size,
+                        BaseRequest.Width,
+                        BaseRequest.Height,
+                        BaseRequest.MaxWidth,
+                        BaseRequest.MaxHeight);
+
+                    return Convert.ToInt32(newSize.Width);
+                }
+
+                if (!IsVideoRequest)
+                {
+                    return null;
+                }
+
+                return BaseRequest.MaxWidth ?? BaseRequest.Width;
+            }
+        }
+
+        public int? OutputHeight
+        {
+            get
+            {
+                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
+                {
+                    var size = new ImageSize
+                    {
+                        Width = VideoStream.Width.Value,
+                        Height = VideoStream.Height.Value
+                    };
+
+                    var newSize = DrawingUtils.Resize(size,
+                        BaseRequest.Width,
+                        BaseRequest.Height,
+                        BaseRequest.MaxWidth,
+                        BaseRequest.MaxHeight);
+
+                    return Convert.ToInt32(newSize.Height);
+                }
+
+                if (!IsVideoRequest)
+                {
+                    return null;
+                }
+
+                return BaseRequest.MaxHeight ?? BaseRequest.Height;
+            }
+        }
+
+        public int? OutputAudioSampleRate
+        {
+            get
+            {
+                if (BaseRequest.Static || string.Equals(OutputAudioCodec, "copy", StringComparison.OrdinalIgnoreCase))
+                {
+                    if (AudioStream != null)
+                    {
+                        return AudioStream.SampleRate;
+                    }
+                } 
+
+                else if (BaseRequest.AudioSampleRate.HasValue)
+                {
+                    // Don't exceed what the encoder supports
+                    // Seeing issues of attempting to encode to 88200
+                    return Math.Min(44100, BaseRequest.AudioSampleRate.Value);
+                }
+
+                return null;
+            }
+        }
+
         /// <summary>
         /// <summary>
         /// Predicts the audio sample rate that will be in the output stream
         /// Predicts the audio sample rate that will be in the output stream
         /// </summary>
         /// </summary>
@@ -189,6 +280,180 @@ namespace MediaBrowser.Controller.MediaEncoding
             }
             }
         }
         }
 
 
+        /// <summary>
+        /// Predicts the audio sample rate that will be in the output stream
+        /// </summary>
+        public int? TargetVideoBitDepth
+        {
+            get
+            {
+                var stream = VideoStream;
+                return stream == null || !BaseRequest.Static ? null : stream.BitDepth;
+            }
+        }
+
+        /// <summary>
+        /// Gets the target reference frames.
+        /// </summary>
+        /// <value>The target reference frames.</value>
+        public int? TargetRefFrames
+        {
+            get
+            {
+                var stream = VideoStream;
+                return stream == null || !BaseRequest.Static ? null : stream.RefFrames;
+            }
+        }
+
+        /// <summary>
+        /// Predicts the audio sample rate that will be in the output stream
+        /// </summary>
+        public float? TargetFramerate
+        {
+            get
+            {
+                var stream = VideoStream;
+                var requestedFramerate = BaseRequest.MaxFramerate ?? BaseRequest.Framerate;
+
+                return requestedFramerate.HasValue && !BaseRequest.Static
+                    ? requestedFramerate
+                    : stream == null ? null : stream.AverageFrameRate ?? stream.RealFrameRate;
+            }
+        }
+
+        public TransportStreamTimestamp TargetTimestamp
+        {
+            get
+            {
+                var defaultValue = string.Equals(OutputContainer, "m2ts", StringComparison.OrdinalIgnoreCase) ?
+                    TransportStreamTimestamp.Valid :
+                    TransportStreamTimestamp.None;
+
+                return !BaseRequest.Static
+                    ? defaultValue
+                    : InputTimestamp;
+            }
+        }
+
+        /// <summary>
+        /// Predicts the audio sample rate that will be in the output stream
+        /// </summary>
+        public int? TargetPacketLength
+        {
+            get
+            {
+                var stream = VideoStream;
+                return !BaseRequest.Static
+                    ? null
+                    : stream == null ? null : stream.PacketLength;
+            }
+        }
+
+        /// <summary>
+        /// Predicts the audio sample rate that will be in the output stream
+        /// </summary>
+        public string TargetVideoProfile
+        {
+            get
+            {
+                var stream = VideoStream;
+                return !string.IsNullOrEmpty(BaseRequest.Profile) && !BaseRequest.Static
+                    ? BaseRequest.Profile
+                    : stream == null ? null : stream.Profile;
+            }
+        }
+
+        public string TargetVideoCodecTag
+        {
+            get
+            {
+                var stream = VideoStream;
+                return !BaseRequest.Static
+                    ? null
+                    : stream == null ? null : stream.CodecTag;
+            }
+        }
+
+        public bool? IsTargetAnamorphic
+        {
+            get
+            {
+                if (BaseRequest.Static)
+                {
+                    return VideoStream == null ? null : VideoStream.IsAnamorphic;
+                }
+
+                return false;
+            }
+        }
+
+        public bool? IsTargetInterlaced
+        {
+            get
+            {
+                if (BaseRequest.Static)
+                {
+                    return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
+                }
+
+                if (DeInterlace)
+                {
+                    return false;
+                }
+
+                return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
+            }
+        }
+
+        public bool? IsTargetAVC
+        {
+            get
+            {
+                if (BaseRequest.Static)
+                {
+                    return VideoStream == null ? null : VideoStream.IsAVC;
+                }
+
+                return false;
+            }
+        }
+
+        public int? TargetVideoStreamCount
+        {
+            get
+            {
+                if (BaseRequest.Static)
+                {
+                    return GetMediaStreamCount(MediaStreamType.Video, int.MaxValue);
+                }
+                return GetMediaStreamCount(MediaStreamType.Video, 1);
+            }
+        }
+
+        public int? TargetAudioStreamCount
+        {
+            get
+            {
+                if (BaseRequest.Static)
+                {
+                    return GetMediaStreamCount(MediaStreamType.Audio, int.MaxValue);
+                }
+                return GetMediaStreamCount(MediaStreamType.Audio, 1);
+            }
+        }
+
+        private int? GetMediaStreamCount(MediaStreamType type, int limit)
+        {
+            var count = MediaSource.GetStreamCount(type);
+
+            if (count.HasValue)
+            {
+                count = Math.Min(count.Value, limit);
+            }
+
+            return count;
+        }
+
         protected void DisposeIsoMount()
         protected void DisposeIsoMount()
         {
         {
             if (IsoMount != null)
             if (IsoMount != null)

+ 0 - 242
MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs

@@ -150,248 +150,6 @@ namespace MediaBrowser.MediaEncoding.Encoder
             }
             }
         }
         }
 
 
-        public int? TotalOutputBitrate
-        {
-            get
-            {
-                return (OutputAudioBitrate ?? 0) + (OutputVideoBitrate ?? 0);
-            }
-        }
-
-        public int? OutputWidth
-        {
-            get
-            {
-                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
-                {
-                    var size = new ImageSize
-                    {
-                        Width = VideoStream.Width.Value,
-                        Height = VideoStream.Height.Value
-                    };
-
-                    var newSize = DrawingUtils.Resize(size,
-                        Options.Width,
-                        Options.Height,
-                        Options.MaxWidth,
-                        Options.MaxHeight);
-
-                    return Convert.ToInt32(newSize.Width);
-                }
-
-                if (!IsVideoRequest)
-                {
-                    return null;
-                }
-
-                return Options.MaxWidth ?? Options.Width;
-            }
-        }
-
-        public int? OutputHeight
-        {
-            get
-            {
-                if (VideoStream != null && VideoStream.Width.HasValue && VideoStream.Height.HasValue)
-                {
-                    var size = new ImageSize
-                    {
-                        Width = VideoStream.Width.Value,
-                        Height = VideoStream.Height.Value
-                    };
-
-                    var newSize = DrawingUtils.Resize(size,
-                        Options.Width,
-                        Options.Height,
-                        Options.MaxWidth,
-                        Options.MaxHeight);
-
-                    return Convert.ToInt32(newSize.Height);
-                }
-
-                if (!IsVideoRequest)
-                {
-                    return null;
-                }
-
-                return Options.MaxHeight ?? Options.Height;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public int? TargetVideoBitDepth
-        {
-            get
-            {
-                var stream = VideoStream;
-                return stream == null || !Options.Static ? null : stream.BitDepth;
-            }
-        }
-
-        /// <summary>
-        /// Gets the target reference frames.
-        /// </summary>
-        /// <value>The target reference frames.</value>
-        public int? TargetRefFrames
-        {
-            get
-            {
-                var stream = VideoStream;
-                return stream == null || !Options.Static ? null : stream.RefFrames;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public float? TargetFramerate
-        {
-            get
-            {
-                var stream = VideoStream;
-                var requestedFramerate = Options.MaxFramerate ?? Options.Framerate;
-
-                return requestedFramerate.HasValue && !Options.Static
-                    ? requestedFramerate
-                    : stream == null ? null : stream.AverageFrameRate ?? stream.RealFrameRate;
-            }
-        }
-
-        public TransportStreamTimestamp TargetTimestamp
-        {
-            get
-            {
-                var defaultValue = string.Equals(OutputContainer, "m2ts", StringComparison.OrdinalIgnoreCase) ?
-                    TransportStreamTimestamp.Valid :
-                    TransportStreamTimestamp.None;
-
-                return !Options.Static
-                    ? defaultValue
-                    : InputTimestamp;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public int? TargetPacketLength
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !Options.Static
-                    ? null
-                    : stream == null ? null : stream.PacketLength;
-            }
-        }
-
-        /// <summary>
-        /// Predicts the audio sample rate that will be in the output stream
-        /// </summary>
-        public string TargetVideoProfile
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !string.IsNullOrEmpty(Options.Profile) && !Options.Static
-                    ? Options.Profile
-                    : stream == null ? null : stream.Profile;
-            }
-        }
-
-        public string TargetVideoCodecTag
-        {
-            get
-            {
-                var stream = VideoStream;
-                return !Options.Static
-                    ? null
-                    : stream == null ? null : stream.CodecTag;
-            }
-        }
-
-        public bool? IsTargetAnamorphic
-        {
-            get
-            {
-                if (Options.Static)
-                {
-                    return VideoStream == null ? null : VideoStream.IsAnamorphic;
-                }
-
-                return false;
-            }
-        }
-
-        public bool? IsTargetInterlaced
-        {
-            get
-            {
-                if (Options.Static)
-                {
-                    return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
-                }
-
-                if (DeInterlace)
-                {
-                    return false;
-                }
-
-                return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
-            }
-        }
-
-        public bool? IsTargetAVC
-        {
-            get
-            {
-                if (Options.Static)
-                {
-                    return VideoStream == null ? null : VideoStream.IsAVC;
-                }
-
-                return false;
-            }
-        }
-
-        public int? TargetVideoStreamCount
-        {
-            get
-            {
-                if (Options.Static)
-                {
-                    return GetMediaStreamCount(MediaStreamType.Video, int.MaxValue);
-                }
-                return GetMediaStreamCount(MediaStreamType.Video, 1);
-            }
-        }
-
-        public int? TargetAudioStreamCount
-        {
-            get
-            {
-                if (Options.Static)
-                {
-                    return GetMediaStreamCount(MediaStreamType.Audio, int.MaxValue);
-                }
-                return GetMediaStreamCount(MediaStreamType.Audio, 1);
-            }
-        }
-
-        private int? GetMediaStreamCount(MediaStreamType type, int limit)
-        {
-            var count = MediaSource.GetStreamCount(type);
-
-            if (count.HasValue)
-            {
-                count = Math.Min(count.Value, limit);
-            }
-
-            return count;
-        }
-
         public override void ReportTranscodingProgress(TimeSpan? transcodingPosition, float? framerate, double? percentComplete, long? bytesTranscoded, int? bitRate)
         public override void ReportTranscodingProgress(TimeSpan? transcodingPosition, float? framerate, double? percentComplete, long? bytesTranscoded, int? bitRate)
         {
         {
             var ticks = transcodingPosition.HasValue ? transcodingPosition.Value.Ticks : (long?)null;
             var ticks = transcodingPosition.HasValue ? transcodingPosition.Value.Ticks : (long?)null;

+ 0 - 1
MediaBrowser.MediaEncoding/Encoder/EncodingJobFactory.cs

@@ -105,7 +105,6 @@ namespace MediaBrowser.MediaEncoding.Encoder
             //state.OutputContainer = (container ?? string.Empty).TrimStart('.');
             //state.OutputContainer = (container ?? string.Empty).TrimStart('.');
 
 
             state.OutputAudioBitrate = encodingHelper.GetAudioBitrateParam(state.Options, state.AudioStream);
             state.OutputAudioBitrate = encodingHelper.GetAudioBitrateParam(state.Options, state.AudioStream);
-            state.OutputAudioSampleRate = request.AudioSampleRate;
 
 
             state.OutputAudioCodec = state.Options.AudioCodec;
             state.OutputAudioCodec = state.Options.AudioCodec;
 
 

+ 1 - 6
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -80,11 +80,6 @@ namespace MediaBrowser.MediaEncoding.Encoder
             int defaultImageExtractionTimeoutMs,
             int defaultImageExtractionTimeoutMs,
             bool enableEncoderFontFile, IEnvironmentInfo environmentInfo)
             bool enableEncoderFontFile, IEnvironmentInfo environmentInfo)
         {
         {
-            if (jsonSerializer == null)
-            {
-                throw new ArgumentNullException("jsonSerializer");
-            }
-
             _logger = logger;
             _logger = logger;
             _jsonSerializer = jsonSerializer;
             _jsonSerializer = jsonSerializer;
             ConfigurationManager = configurationManager;
             ConfigurationManager = configurationManager;
@@ -330,7 +325,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
             }
             }
 
 
             var newPaths = GetEncoderPaths(appPath);
             var newPaths = GetEncoderPaths(appPath);
-            if (string.IsNullOrWhiteSpace(newPaths.Item1) || string.IsNullOrWhiteSpace(newPaths.Item2))
+            if (string.IsNullOrWhiteSpace(newPaths.Item1) || string.IsNullOrWhiteSpace(newPaths.Item2) || IsSystemInstalledPath(appPath))
             {
             {
                 newPaths = TestForInstalledVersions();
                 newPaths = TestForInstalledVersions();
             }
             }