aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-08-06 10:10:31 -0400
committerGitHub <noreply@github.com>2016-08-06 10:10:31 -0400
commit1c130127c11bdc2be139f84fe9747591369b8694 (patch)
tree410371f9f7eb29f77d54eb6fb189a848e3621005
parent7f0d4c72109e4e647f6388dc2286891e749db268 (diff)
parentc3d8115bc8aa37fe0fae60b05c5f273d06627b8e (diff)
Merge pull request #2028 from MediaBrowser/dev
Dev
-rw-r--r--MediaBrowser.Api/ApiEntryPoint.cs2
-rw-r--r--MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs20
-rw-r--r--MediaBrowser.Api/Playback/Progressive/ProgressiveStreamWriter.cs42
-rw-r--r--MediaBrowser.Controller/Providers/DirectoryService.cs45
-rw-r--r--MediaBrowser.sln5
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