diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-15 23:23:13 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-15 23:23:13 -0400 |
| commit | c7b95a251317fdb01d160cc3dcaf5d23779437d4 (patch) | |
| tree | 8425c2f5d6e6b3a3bfbdf7c8b1c9e6c2d8bd2983 /MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | |
| parent | 71e1283c2fb53edb36782c3d27b97dbd356fd8dc (diff) | |
3.0.5582.2
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs')
| -rw-r--r-- | MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 956b3723d..d076a5b6b 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -489,28 +489,35 @@ namespace MediaBrowser.MediaEncoding.Encoder await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); var processWrapper = new ProcessWrapper(process, this); - - StartProcess(processWrapper); + bool ranToCompletion; var memoryStream = new MemoryStream(); + try + { + StartProcess(processWrapper); + #pragma warning disable 4014 - // Important - don't await the log task or we won't be able to kill ffmpeg when the user stops playback - process.StandardOutput.BaseStream.CopyToAsync(memoryStream); + // Important - don't await the log task or we won't be able to kill ffmpeg when the user stops playback + process.StandardOutput.BaseStream.CopyToAsync(memoryStream); #pragma warning restore 4014 - // MUST read both stdout and stderr asynchronously or a deadlock may occurr - process.BeginErrorReadLine(); + // MUST read both stdout and stderr asynchronously or a deadlock may occurr + process.BeginErrorReadLine(); - var ranToCompletion = process.WaitForExit(10000); + ranToCompletion = process.WaitForExit(10000); - if (!ranToCompletion) + if (!ranToCompletion) + { + StopProcess(processWrapper, 1000, false); + } + + } + finally { - StopProcess(processWrapper, 1000, false); + resourcePool.Release(); } - resourcePool.Release(); - var exitCode = ranToCompletion ? processWrapper.ExitCode ?? 0 : -1; if (exitCode == -1 || memoryStream.Length == 0) @@ -614,7 +621,7 @@ namespace MediaBrowser.MediaEncoding.Encoder ranToCompletion = true; break; } - + cancellationToken.ThrowIfCancellationRequested(); var jpegCount = Directory.GetFiles(targetDirectory) |
