diff options
| author | tikuf <admin@nyalindee.com> | 2014-04-07 12:43:29 +1000 |
|---|---|---|
| committer | tikuf <admin@nyalindee.com> | 2014-04-07 12:43:29 +1000 |
| commit | 8ae71b75fb024815e165eba9b3d00ca8307caab3 (patch) | |
| tree | 54274881bca0834c2ab518c51bc65160fc320db1 /MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs | |
| parent | 161e1af0eaa69e828f64d33311e3bc462852d6c4 (diff) | |
| parent | 56c0d491f4c05a2c0c4f21c20e3530c039b33148 (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.cs | 43 |
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); |
