aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-09-28 13:04:06 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-09-28 13:04:06 -0400
commit539fecd08b752a50ebdbcef45b51a998f1390167 (patch)
tree4052684494182f56dc605de430040b101057f948 /MediaBrowser.Controller
parent2e0e1697a8d8ed93669ffdda8e01c0c370e4c6c6 (diff)
rework live stream creation
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/IO/StreamHelper.cs5
-rw-r--r--MediaBrowser.Controller/LiveTv/ILiveTvManager.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/ITunerHost.cs15
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveStream.cs87
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
5 files changed, 15 insertions, 95 deletions
diff --git a/MediaBrowser.Controller/IO/StreamHelper.cs b/MediaBrowser.Controller/IO/StreamHelper.cs
index af97a0233..106fec41f 100644
--- a/MediaBrowser.Controller/IO/StreamHelper.cs
+++ b/MediaBrowser.Controller/IO/StreamHelper.cs
@@ -6,11 +6,6 @@ namespace MediaBrowser.Controller.IO
{
public static class StreamHelper
{
- public static void CopyTo(Stream source, Stream destination, int bufferSize, CancellationToken cancellationToken)
- {
- CopyTo(source, destination, bufferSize, null, cancellationToken);
- }
-
public static void CopyTo(Stream source, Stream destination, int bufferSize, Action onStarted, CancellationToken cancellationToken)
{
byte[] buffer = new byte[bufferSize];
diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
index 42c31c629..be85e115c 100644
--- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
+++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs
@@ -383,7 +383,7 @@ namespace MediaBrowser.Controller.LiveTv
event EventHandler<GenericEventArgs<TimerEventInfo>> SeriesTimerCreated;
string GetEmbyTvActiveRecordingPath(string id);
- Task<LiveStream> GetEmbyTvLiveStream(string id);
+ Task<ILiveStream> GetEmbyTvLiveStream(string id);
ActiveRecordingInfo GetActiveRecordingInfo(string path);
diff --git a/MediaBrowser.Controller/LiveTv/ITunerHost.cs b/MediaBrowser.Controller/LiveTv/ITunerHost.cs
index fc344298b..2019259c5 100644
--- a/MediaBrowser.Controller/LiveTv/ITunerHost.cs
+++ b/MediaBrowser.Controller/LiveTv/ITunerHost.cs
@@ -36,7 +36,7 @@ namespace MediaBrowser.Controller.LiveTv
/// <param name="streamId">The stream identifier.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;MediaSourceInfo&gt;.</returns>
- Task<LiveStream> GetChannelStream(string channelId, string streamId, CancellationToken cancellationToken);
+ Task<ILiveStream> GetChannelStream(string channelId, string streamId, CancellationToken cancellationToken);
/// <summary>
/// Gets the channel stream media sources.
/// </summary>
@@ -56,4 +56,17 @@ namespace MediaBrowser.Controller.LiveTv
/// <returns>Task.</returns>
Task Validate(TunerHostInfo info);
}
+
+ public interface ILiveStream
+ {
+ Task Open(CancellationToken cancellationToken);
+ Task Close();
+ int ConsumerCount { get; }
+ string OriginalStreamId { get; set; }
+ bool EnableStreamSharing { get; set; }
+ ITunerHost TunerHost { get; set; }
+ MediaSourceInfo OpenedMediaSource { get; set; }
+ string UniqueId { get; }
+ List<string> SharedStreamIds { get; }
+ }
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveStream.cs b/MediaBrowser.Controller/LiveTv/LiveStream.cs
deleted file mode 100644
index 20947462e..000000000
--- a/MediaBrowser.Controller/LiveTv/LiveStream.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Model.System;
-
-namespace MediaBrowser.Controller.LiveTv
-{
- public class LiveStream
- {
- public MediaSourceInfo OriginalMediaSource { get; set; }
- public MediaSourceInfo OpenedMediaSource { get; set; }
- public int ConsumerCount
- {
- get { return SharedStreamIds.Count; }
- }
- public ITunerHost TunerHost { get; set; }
- public string OriginalStreamId { get; set; }
- public bool EnableStreamSharing { get; set; }
- public string UniqueId = Guid.NewGuid().ToString("N");
-
- public List<string> SharedStreamIds = new List<string>();
- protected readonly IEnvironmentInfo Environment;
- protected readonly IFileSystem FileSystem;
- const int StreamCopyToBufferSize = 81920;
-
- public LiveStream(MediaSourceInfo mediaSource, IEnvironmentInfo environment, IFileSystem fileSystem)
- {
- OriginalMediaSource = mediaSource;
- Environment = environment;
- FileSystem = fileSystem;
- OpenedMediaSource = mediaSource;
- EnableStreamSharing = true;
- }
-
- public Task Open(CancellationToken cancellationToken)
- {
- return OpenInternal(cancellationToken);
- }
-
- protected virtual Task OpenInternal(CancellationToken cancellationToken)
- {
- return Task.FromResult(true);
- }
-
- public virtual Task Close()
- {
- return Task.FromResult(true);
- }
-
- protected Stream GetInputStream(string path, bool allowAsyncFileRead)
- {
- var fileOpenOptions = FileOpenOptions.SequentialScan;
-
- if (allowAsyncFileRead)
- {
- fileOpenOptions |= FileOpenOptions.Asynchronous;
- }
-
- return FileSystem.GetFileStream(path, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.ReadWrite, fileOpenOptions);
- }
-
- protected async Task DeleteTempFile(string path, int retryCount = 0)
- {
- try
- {
- FileSystem.DeleteFile(path);
- return;
- }
- catch
- {
-
- }
-
- if (retryCount > 20)
- {
- return;
- }
-
- await Task.Delay(500).ConfigureAwait(false);
- await DeleteTempFile(path, retryCount + 1).ConfigureAwait(false);
- }
- }
-}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 5ef763b62..b33993859 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -145,7 +145,6 @@
<Compile Include="Library\UserDataSaveEventArgs.cs" />
<Compile Include="LiveTv\IListingsProvider.cs" />
<Compile Include="LiveTv\ITunerHost.cs" />
- <Compile Include="LiveTv\LiveStream.cs" />
<Compile Include="LiveTv\RecordingGroup.cs" />
<Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" />
<Compile Include="LiveTv\ILiveTvRecording.cs" />