diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-08-06 10:10:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-06 10:10:31 -0400 |
| commit | 1c130127c11bdc2be139f84fe9747591369b8694 (patch) | |
| tree | 410371f9f7eb29f77d54eb6fb189a848e3621005 | |
| parent | 7f0d4c72109e4e647f6388dc2286891e749db268 (diff) | |
| parent | c3d8115bc8aa37fe0fae60b05c5f273d06627b8e (diff) | |
Merge pull request #2028 from MediaBrowser/dev
Dev
| -rw-r--r-- | MediaBrowser.Api/ApiEntryPoint.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs | 42 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/DirectoryService.cs | 45 | ||||
| -rw-r--r-- | MediaBrowser.sln | 5 |
5 files changed, 72 insertions, 42 deletions
diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs index dbc1179e2..1a7f4a2b1 100644 --- a/MediaBrowser.Api/ApiEntryPoint.cs +++ b/MediaBrowser.Api/ApiEntryPoint.cs @@ -349,7 +349,7 @@ namespace MediaBrowser.Api return; } - var timerDuration = 1000; + var timerDuration = 10000; if (job.Type != TranscodingJobType.Progressive) { diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index 449100fc4..4649499c4 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -142,7 +142,8 @@ namespace MediaBrowser.Api.Playback.Progressive var outputPath = state.OutputFilePath; var outputPathExists = FileSystem.FileExists(outputPath); - var isTranscodeCached = outputPathExists && !ApiEntryPoint.Instance.HasActiveTranscodingJob(outputPath, TranscodingJobType.Progressive); + var transcodingJob = ApiEntryPoint.Instance.GetTranscodingJob(outputPath, TranscodingJobType.Progressive); + var isTranscodeCached = outputPathExists && transcodingJob != null; AddDlnaHeaders(state, responseHeaders, request.Static || isTranscodeCached); @@ -159,6 +160,7 @@ namespace MediaBrowser.Api.Playback.Progressive ContentType = contentType, IsHeadRequest = isHeadRequest, Path = state.MediaPath + }).ConfigureAwait(false); } } @@ -170,13 +172,25 @@ namespace MediaBrowser.Api.Playback.Progressive try { + if (transcodingJob != null) + { + ApiEntryPoint.Instance.OnTranscodeBeginRequest(transcodingJob); + } + return await ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions { ResponseHeaders = responseHeaders, ContentType = contentType, IsHeadRequest = isHeadRequest, Path = outputPath, - FileShare = FileShare.ReadWrite + FileShare = FileShare.ReadWrite, + OnComplete = () => + { + if (transcodingJob != null) + { + ApiEntryPoint.Instance.OnTranscodeEndRequest(transcodingJob); + } + } }).ConfigureAwait(false); } @@ -348,7 +362,7 @@ namespace MediaBrowser.Api.Playback.Progressive outputHeaders[item.Key] = item.Value; } - Func<Stream,Task> streamWriter = stream => new ProgressiveFileCopier(FileSystem, job, Logger).StreamFile(outputPath, stream, CancellationToken.None); + Func<Stream, Task> streamWriter = stream => new ProgressiveFileCopier(FileSystem, job, Logger).StreamFile(outputPath, stream, CancellationToken.None); return ResultFactory.GetAsyncStreamWriter(streamWriter, outputHeaders); } diff --git a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs index 2019b73c8..63d71b85e 100644 --- a/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs +++ b/MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs @@ -27,31 +27,41 @@ namespace MediaBrowser.Api.Playback.Progressive public async Task StreamFile(string path, Stream outputStream, CancellationToken cancellationToken) { - var eofCount = 0; - - using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) + try { - while (eofCount < 15) + var eofCount = 0; + + using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) { - var bytesRead = await CopyToAsyncInternal(fs, outputStream, BufferSize, cancellationToken).ConfigureAwait(false); + while (eofCount < 15) + { + var bytesRead = await CopyToAsyncInternal(fs, outputStream, BufferSize, cancellationToken).ConfigureAwait(false); - //var position = fs.Position; - //_logger.Debug("Streamed {0} bytes to position {1} from file {2}", bytesRead, position, path); + //var position = fs.Position; + //_logger.Debug("Streamed {0} bytes to position {1} from file {2}", bytesRead, position, path); - if (bytesRead == 0) - { - if (_job == null || _job.HasExited) + if (bytesRead == 0) { - eofCount++; + if (_job == null || _job.HasExited) + { + eofCount++; + } + await Task.Delay(100, cancellationToken).ConfigureAwait(false); + } + else + { + eofCount = 0; } - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } - else - { - eofCount = 0; } } } + finally + { + if (_job != null) + { + ApiEntryPoint.Instance.OnTranscodeEndRequest(_job); + } + } } private async Task<int> CopyToAsyncInternal(Stream source, Stream destination, Int32 bufferSize, CancellationToken cancellationToken) diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs index 62d424696..ca9038439 100644 --- a/MediaBrowser.Controller/Providers/DirectoryService.cs +++ b/MediaBrowser.Controller/Providers/DirectoryService.cs @@ -100,28 +100,29 @@ namespace MediaBrowser.Controller.Providers public FileSystemMetadata GetFile(string path) { - var directory = Path.GetDirectoryName(path); - - if (string.IsNullOrWhiteSpace(directory)) - { - _logger.Debug("Parent path is null for {0}", path); - return null; - } - - try - { - var dict = GetFileSystemDictionary(directory, false); - - FileSystemMetadata entry; - dict.TryGetValue(path, out entry); - - return entry; - } - catch (Exception ex) - { - _logger.ErrorException("Error in GetFileSystemDictionary. Directory: :{0}. Original path: {1}", ex, directory, path); - return null; - } + return _fileSystem.GetFileInfo(path); + //var directory = Path.GetDirectoryName(path); + + //if (string.IsNullOrWhiteSpace(directory)) + //{ + // _logger.Debug("Parent path is null for {0}", path); + // return null; + //} + + //try + //{ + // var dict = GetFileSystemDictionary(directory, false); + + // FileSystemMetadata entry; + // dict.TryGetValue(path, out entry); + + // return entry; + //} + //catch (Exception ex) + //{ + // _logger.ErrorException("Error in GetFileSystemDictionary. Directory: :{0}. Original path: {1}", ex, directory, path); + // return null; + //} } public IEnumerable<FileSystemMetadata> GetDirectories(string path) diff --git a/MediaBrowser.sln b/MediaBrowser.sln index a55ae200a..c6068f536 100644 --- a/MediaBrowser.sln +++ b/MediaBrowser.sln @@ -13,6 +13,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Performance3.psess = Performance3.psess Performance4.psess = Performance4.psess Performance5.psess = Performance5.psess + Performance6.psess = Performance6.psess + Performance7.psess = Performance7.psess EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget (2)", ".nuget (2)", "{E60FB157-87E2-4A41-8B04-27EA49B63B4D}" @@ -63,6 +65,9 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing", "Emby.Drawing\Emby.Drawing.csproj", "{08FFF49B-F175-4807-A2B5-73B0EBD9F716}" EndProject Global + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Debug|Mixed Platforms = Debug|Mixed Platforms |
