aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/ApiEntryPoint.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/ApiEntryPoint.cs')
-rw-r--r--MediaBrowser.Api/ApiEntryPoint.cs45
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();