aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
diff options
context:
space:
mode:
authortikuf <admin@nyalindee.com>2014-04-07 12:43:29 +1000
committertikuf <admin@nyalindee.com>2014-04-07 12:43:29 +1000
commit8ae71b75fb024815e165eba9b3d00ca8307caab3 (patch)
tree54274881bca0834c2ab518c51bc65160fc320db1 /MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
parent161e1af0eaa69e828f64d33311e3bc462852d6c4 (diff)
parent56c0d491f4c05a2c0c4f21c20e3530c039b33148 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs')
-rw-r--r--MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs43
1 files changed, 39 insertions, 4 deletions
diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
index b4fe9a094..29ad3e500 100644
--- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
@@ -121,11 +121,19 @@ namespace MediaBrowser.Api.Playback.Progressive
var responseHeaders = new Dictionary<string, string>();
+ // Static remote stream
if (request.Static && state.IsRemote)
{
AddDlnaHeaders(state, responseHeaders, true);
- return GetStaticRemoteStreamResult(state.MediaPath, responseHeaders, isHeadRequest).Result;
+ try
+ {
+ return GetStaticRemoteStreamResult(state.MediaPath, responseHeaders, isHeadRequest).Result;
+ }
+ finally
+ {
+ state.Dispose();
+ }
}
var outputPath = GetOutputFilePath(state);
@@ -136,21 +144,47 @@ namespace MediaBrowser.Api.Playback.Progressive
AddDlnaHeaders(state, responseHeaders, isStatic);
+ // Static stream
if (request.Static)
{
var contentType = state.GetMimeType(state.MediaPath);
- return ResultFactory.GetStaticFileResult(Request, state.MediaPath, contentType, FileShare.Read, responseHeaders, isHeadRequest);
+ try
+ {
+ return ResultFactory.GetStaticFileResult(Request, state.MediaPath, contentType, FileShare.Read, responseHeaders, isHeadRequest);
+ }
+ finally
+ {
+ state.Dispose();
+ }
}
+ // Not static but transcode cache file exists
if (outputPathExists && !ApiEntryPoint.Instance.HasActiveTranscodingJob(outputPath, TranscodingJobType.Progressive))
{
var contentType = state.GetMimeType(outputPath);
- return ResultFactory.GetStaticFileResult(Request, outputPath, contentType, FileShare.Read, responseHeaders, isHeadRequest);
+ try
+ {
+ return ResultFactory.GetStaticFileResult(Request, outputPath, contentType, FileShare.Read, responseHeaders, isHeadRequest);
+ }
+ finally
+ {
+ state.Dispose();
+ }
+ }
+
+ // Need to start ffmpeg
+ try
+ {
+ return GetStreamResult(state, responseHeaders, isHeadRequest).Result;
}
+ catch
+ {
+ state.Dispose();
- return GetStreamResult(state, responseHeaders, isHeadRequest).Result;
+ throw;
+ }
}
/// <summary>
@@ -251,6 +285,7 @@ namespace MediaBrowser.Api.Playback.Progressive
else
{
ApiEntryPoint.Instance.OnTranscodeBeginRequest(outputPath, TranscodingJobType.Progressive);
+ state.Dispose();
}
var result = new ProgressiveStreamWriter(outputPath, Logger, FileSystem);