Apply patch

This commit is contained in:
crobibero 2020-11-03 16:38:47 -07:00
parent 5d88e61076
commit b4d52d8009
5 changed files with 22 additions and 9 deletions

View File

@ -131,6 +131,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
await taskCompletionSource.Task.ConfigureAwait(false);
}
public string GetFilePath()
{
return TempFilePath;
}
private Task StartStreaming(UdpClient udpClient, HdHomerunManager hdHomerunManager, IPAddress remoteAddress, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken)
{
return Task.Run(async () =>

View File

@ -122,6 +122,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
}
}
public string GetFilePath()
{
return TempFilePath;
}
private Task StartStreaming(HttpResponseMessage response, TaskCompletionSource<bool> openTaskCompletionSource, CancellationToken cancellationToken)
{
return Task.Run(async () =>

View File

@ -1220,11 +1220,8 @@ namespace Jellyfin.Api.Controllers
return NotFound();
}
await new ProgressiveFileCopier(liveStreamInfo, null, _transcodingJobHelper, CancellationToken.None)
.WriteToAsync(Response.Body, CancellationToken.None)
.ConfigureAwait(false);
Response.ContentType = MimeTypes.GetMimeType("file." + container);
return Ok();
var liveStream = new ProgressiveFileStream(liveStreamInfo.GetFilePath(), null, _transcodingJobHelper);
return new FileStreamResult(liveStream, MimeTypes.GetMimeType("file." + container));
}
private void AssertUserCanManageLiveTv()

View File

@ -82,20 +82,23 @@ namespace Jellyfin.Api.Helpers
int totalBytesRead = 0;
int remainingBytesToRead = count;
int newOffset = offset;
while (remainingBytesToRead > 0)
{
cancellationToken.ThrowIfCancellationRequested();
int bytesRead;
if (_allowAsyncFileRead)
{
bytesRead = await _fileStream.ReadAsync(buffer, offset, remainingBytesToRead, cancellationToken).ConfigureAwait(false);
bytesRead = await _fileStream.ReadAsync(buffer, newOffset, remainingBytesToRead, cancellationToken).ConfigureAwait(false);
}
else
{
bytesRead = _fileStream.Read(buffer, offset, remainingBytesToRead);
bytesRead = _fileStream.Read(buffer, newOffset, remainingBytesToRead);
}
remainingBytesToRead -= bytesRead;
newOffset += bytesRead;
if (bytesRead > 0)
{
_bytesWritten += bytesRead;
@ -108,12 +111,13 @@ namespace Jellyfin.Api.Helpers
}
else
{
if (_job == null || _job.HasExited)
// If the job is null it's a live stream and will require user action to close
if (_job?.HasExited ?? false)
{
break;
}
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
await Task.Delay(50, cancellationToken).ConfigureAwait(false);
}
}

View File

@ -115,5 +115,7 @@ namespace MediaBrowser.Controller.Library
public interface IDirectStreamProvider
{
Task CopyToAsync(Stream stream, CancellationToken cancellationToken);
string GetFilePath();
}
}