diff options
Diffstat (limited to 'MediaBrowser.Api/ApiEntryPoint.cs')
| -rw-r--r-- | MediaBrowser.Api/ApiEntryPoint.cs | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index ef5191df1..fd7ad2cf5 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -284,16 +284,19 @@ namespace MediaBrowser.Api { job.ActiveRequestCount++; - job.DisposeKillTimer(); + if (string.IsNullOrWhiteSpace(job.PlaySessionId) || job.Type == TranscodingJobType.Progressive) + { + job.DisposeKillTimer(); + } } public void OnTranscodeEndRequest(TranscodingJob job) { job.ActiveRequestCount--; - - if (job.ActiveRequestCount == 0) + Logger.Debug("OnTranscodeEndRequest job.ActiveRequestCount={0}", job.ActiveRequestCount); + if (job.ActiveRequestCount <= 0) { - PingTimer(job, true); + PingTimer(job, false); } } internal void PingTranscodingJob(string deviceId, string playSessionId) @@ -323,11 +326,11 @@ namespace MediaBrowser.Api foreach (var job in jobs) { - PingTimer(job, false); + PingTimer(job, true); } } - private void PingTimer(TranscodingJob job, bool startTimerIfNeeded) + private void PingTimer(TranscodingJob job, bool isProgressCheckIn) { // TODO: Lower this hls timeout var timerDuration = job.Type == TranscodingJobType.Progressive ? @@ -335,20 +338,23 @@ namespace MediaBrowser.Api 1800000; // We can really reduce the timeout for apps that are using the newer api - if (!string.IsNullOrWhiteSpace(job.PlaySessionId) && job.Type == TranscodingJobType.Hls) + if (!string.IsNullOrWhiteSpace(job.PlaySessionId) && job.Type != TranscodingJobType.Progressive) { - timerDuration = 40000; + timerDuration = 35000; } if (job.KillTimer == null) { - if (startTimerIfNeeded) + // Don't start the timer for playback checkins with progressive streaming + if (job.Type != TranscodingJobType.Progressive || !isProgressCheckIn) { + Logger.Debug("Starting kill timer at {0}ms", timerDuration); job.KillTimer = new Timer(OnTranscodeKillTimerStopped, job, timerDuration, Timeout.Infinite); } } else { + Logger.Debug("Changing kill timer to {0}ms", timerDuration); job.KillTimer.Change(timerDuration, Timeout.Infinite); } } @@ -439,28 +445,19 @@ namespace MediaBrowser.Api lock (job.ProcessLock) { - var process = job.Process; - - var hasExited = true; - - try - { - hasExited = process.HasExited; - } - catch (Exception ex) + if (job.TranscodingThrottler != null) { - Logger.ErrorException("Error determining if ffmpeg process has exited for {0}", ex, job.Path); + job.TranscodingThrottler.Stop(); } + var process = job.Process; + + var hasExited = job.HasExited; + if (!hasExited) { try { - if (job.TranscodingThrottler != null) - { - job.TranscodingThrottler.Stop(); - } - Logger.Info("Killing ffmpeg process for {0}", job.Path); //process.Kill(); |
