diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-30 12:16:34 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-30 12:16:34 -0400 |
| commit | 5f044cfd68eecf116df1a646806fc091f3fb63aa (patch) | |
| tree | 572b7a009f9c308e1b365801028738b59762a1a4 /MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs | |
| parent | 0bd27381e0ef5a0a17ea93bb86a752c5d2cc2e1a (diff) | |
add setting to control transcodng throttle
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs')
| -rw-r--r-- | MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs index c8d121eea..767f3f829 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncodingJob.cs @@ -1,7 +1,8 @@ -using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; @@ -26,7 +27,7 @@ namespace MediaBrowser.MediaEncoding.Encoder public EncodingJobOptions Options { get; set; } public string InputContainer { get; set; } - public List<MediaStream> AllMediaStreams { get; set; } + public MediaSourceInfo MediaSource { get; set; } public MediaStream AudioStream { get; set; } public MediaStream VideoStream { get; set; } public MediaStream SubtitleStream { get; set; } @@ -76,12 +77,12 @@ namespace MediaBrowser.MediaEncoding.Encoder } private readonly ILogger _logger; - private readonly ILiveTvManager _liveTvManager; + private readonly IMediaSourceManager _mediaSourceManager; - public EncodingJob(ILogger logger, ILiveTvManager liveTvManager) + public EncodingJob(ILogger logger, IMediaSourceManager mediaSourceManager) { _logger = logger; - _liveTvManager = liveTvManager; + _mediaSourceManager = mediaSourceManager; Id = Guid.NewGuid().ToString("N"); RemoteHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); @@ -89,7 +90,6 @@ namespace MediaBrowser.MediaEncoding.Encoder SupportedAudioCodecs = new List<string>(); PlayableStreamFileNames = new List<string>(); RemoteHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); - AllMediaStreams = new List<MediaStream>(); TaskCompletionSource = new TaskCompletionSource<bool>(); } @@ -136,15 +136,15 @@ namespace MediaBrowser.MediaEncoding.Encoder private async void DisposeLiveStream() { - if (!string.IsNullOrEmpty(LiveTvStreamId)) + if (MediaSource.RequiresClosing) { try { - await _liveTvManager.CloseLiveStream(LiveTvStreamId, CancellationToken.None).ConfigureAwait(false); + await _mediaSourceManager.CloseLiveStream(MediaSource.LiveStreamId, CancellationToken.None).ConfigureAwait(false); } catch (Exception ex) { - _logger.ErrorException("Error closing live tv stream", ex); + _logger.ErrorException("Error closing media source", ex); } } } @@ -394,6 +394,42 @@ namespace MediaBrowser.MediaEncoding.Encoder } } + 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 void ReportTranscodingProgress(TimeSpan? transcodingPosition, float? framerate, double? percentComplete, long? bytesTranscoded) { var ticks = transcodingPosition.HasValue ? transcodingPosition.Value.Ticks : (long?)null; |
