aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/LiveTv
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-11-21 17:14:56 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-11-21 17:14:56 -0500
commit77695f8abed3156de04c6bb2496c14a2ab3d90a8 (patch)
treee45797a21eaf7d5046cdab4bc362099512e24bae /Emby.Server.Implementations/LiveTv
parent46be272ec840ba8f9de1307d97dea8b593fbbf93 (diff)
3.2.40.1
Diffstat (limited to 'Emby.Server.Implementations/LiveTv')
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs5
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs22
2 files changed, 21 insertions, 6 deletions
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index c96d1f3592..e6c9b184e5 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -152,6 +152,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
isRemote = !_networkManager.IsInLocalNetwork(uri.Host);
}
+ var supportsDirectPlay = !info.EnableStreamLooping && info.TunerCount == 0;
+
var mediaSource = new MediaSourceInfo
{
Path = path,
@@ -183,7 +185,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
IsInfiniteStream = true,
IsRemote = isRemote,
- IgnoreDts = true
+ IgnoreDts = true,
+ SupportsDirectPlay = supportsDirectPlay
};
mediaSource.InferTotalBitrate();
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
index cc2cb3e5ee..b8c7c7b18e 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
@@ -88,6 +88,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
SetTempFilePath(extension);
var taskCompletionSource = new TaskCompletionSource<bool>();
+
+ var now = DateTime.UtcNow;
+
StartStreaming(response, taskCompletionSource, LiveStreamCancellationTokenSource.Token);
//OpenedMediaSource.Protocol = MediaProtocol.File;
@@ -97,11 +100,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
OpenedMediaSource.Path = _appHost.GetLocalApiUrl("127.0.0.1") + "/LiveTv/LiveStreamFiles/" + UniqueId + "/stream.ts";
OpenedMediaSource.Protocol = MediaProtocol.Http;
- if (OpenedMediaSource.SupportsProbing)
- {
- await Task.Delay(3000).ConfigureAwait(false);
- }
-
//OpenedMediaSource.Path = TempFilePath;
//OpenedMediaSource.Protocol = MediaProtocol.File;
@@ -111,6 +109,20 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
//OpenedMediaSource.SupportsDirectStream = true;
//OpenedMediaSource.SupportsTranscoding = true;
await taskCompletionSource.Task.ConfigureAwait(false);
+
+ if (OpenedMediaSource.SupportsProbing)
+ {
+ var elapsed = (DateTime.UtcNow - now).TotalMilliseconds;
+
+ var delay = Convert.ToInt32(3000 - elapsed);
+
+ if (delay > 0)
+ {
+ Logger.Info("Delaying shared stream by {0}ms to allow the buffer to build.", delay);
+
+ await Task.Delay(delay).ConfigureAwait(false);
+ }
+ }
}
protected override void CloseInternal()