From 53d5f64e037c13c295d82fcb98b91ef2de8fc842 Mon Sep 17 00:00:00 2001
From: Matt Montgomery <33811686+ConfusedPolarBear@users.noreply.github.com>
Date: Mon, 28 Sep 2020 15:04:31 -0500
Subject: Fix SA1513, SA1514, SA1507, and SA1508
---
MediaBrowser.Controller/Library/IMediaSourceManager.cs | 2 ++
1 file changed, 2 insertions(+)
(limited to 'MediaBrowser.Controller/Library/IMediaSourceManager.cs')
diff --git a/MediaBrowser.Controller/Library/IMediaSourceManager.cs b/MediaBrowser.Controller/Library/IMediaSourceManager.cs
index 9e7b1e608..22bf9488f 100644
--- a/MediaBrowser.Controller/Library/IMediaSourceManager.cs
+++ b/MediaBrowser.Controller/Library/IMediaSourceManager.cs
@@ -28,12 +28,14 @@ namespace MediaBrowser.Controller.Library
/// The item identifier.
/// IEnumerable<MediaStream>.
List GetMediaStreams(Guid itemId);
+
///
/// Gets the media streams.
///
/// The media source identifier.
/// IEnumerable<MediaStream>.
List GetMediaStreams(string mediaSourceId);
+
///
/// Gets the media streams.
///
--
cgit v1.2.3
From b4d52d8009d8e4a6836dc431ac5f336910a07d6c Mon Sep 17 00:00:00 2001
From: crobibero
Date: Tue, 3 Nov 2020 16:38:47 -0700
Subject: Apply patch
---
.../LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs | 5 +++++
.../LiveTv/TunerHosts/SharedHttpStream.cs | 5 +++++
Jellyfin.Api/Controllers/LiveTvController.cs | 7 ++-----
Jellyfin.Api/Helpers/ProgressiveFileStream.cs | 12 ++++++++----
MediaBrowser.Controller/Library/IMediaSourceManager.cs | 2 ++
5 files changed, 22 insertions(+), 9 deletions(-)
(limited to 'MediaBrowser.Controller/Library/IMediaSourceManager.cs')
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
index 6730751d5..858c10030 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
@@ -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 openTaskCompletionSource, CancellationToken cancellationToken)
{
return Task.Run(async () =>
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
index 10e5eab73..2e1b89509 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
@@ -122,6 +122,11 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
}
}
+ public string GetFilePath()
+ {
+ return TempFilePath;
+ }
+
private Task StartStreaming(HttpResponseMessage response, TaskCompletionSource openTaskCompletionSource, CancellationToken cancellationToken)
{
return Task.Run(async () =>
diff --git a/Jellyfin.Api/Controllers/LiveTvController.cs b/Jellyfin.Api/Controllers/LiveTvController.cs
index 58c7473c2..88a7542ce 100644
--- a/Jellyfin.Api/Controllers/LiveTvController.cs
+++ b/Jellyfin.Api/Controllers/LiveTvController.cs
@@ -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()
diff --git a/Jellyfin.Api/Helpers/ProgressiveFileStream.cs b/Jellyfin.Api/Helpers/ProgressiveFileStream.cs
index b3566b6f8..824870c7e 100644
--- a/Jellyfin.Api/Helpers/ProgressiveFileStream.cs
+++ b/Jellyfin.Api/Helpers/ProgressiveFileStream.cs
@@ -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);
}
}
diff --git a/MediaBrowser.Controller/Library/IMediaSourceManager.cs b/MediaBrowser.Controller/Library/IMediaSourceManager.cs
index 22bf9488f..21c6ef2af 100644
--- a/MediaBrowser.Controller/Library/IMediaSourceManager.cs
+++ b/MediaBrowser.Controller/Library/IMediaSourceManager.cs
@@ -115,5 +115,7 @@ namespace MediaBrowser.Controller.Library
public interface IDirectStreamProvider
{
Task CopyToAsync(Stream stream, CancellationToken cancellationToken);
+
+ string GetFilePath();
}
}
--
cgit v1.2.3