mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-12 17:23:26 +01:00
update live stream management
This commit is contained in:
@@ -39,21 +39,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
|
||||
if (bytesRead > 0)
|
||||
{
|
||||
var allStreams = _outputStreams.ToList();
|
||||
|
||||
//if (allStreams.Count == 1)
|
||||
//{
|
||||
// allStreams[0].Value.Write(buffer, 0, bytesRead);
|
||||
//}
|
||||
//else
|
||||
foreach (var stream in _outputStreams)
|
||||
{
|
||||
//byte[] copy = new byte[bytesRead];
|
||||
//Buffer.BlockCopy(buffer, 0, copy, 0, bytesRead);
|
||||
|
||||
foreach (var stream in allStreams)
|
||||
{
|
||||
stream.Value.Queue(buffer, 0, bytesRead);
|
||||
}
|
||||
stream.Value.Queue(buffer, 0, bytesRead);
|
||||
}
|
||||
|
||||
if (onStarted != null)
|
||||
@@ -73,27 +61,21 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||
|
||||
public Task CopyToAsync(Stream stream, CancellationToken cancellationToken)
|
||||
{
|
||||
var result = new QueueStream(stream, _logger)
|
||||
var queueStream = new QueueStream(stream, _logger);
|
||||
|
||||
_outputStreams.TryAdd(queueStream.Id, queueStream);
|
||||
|
||||
try
|
||||
{
|
||||
OnFinished = OnFinished
|
||||
};
|
||||
queueStream.Start(cancellationToken);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_outputStreams.TryRemove(queueStream.Id, out queueStream);
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
_outputStreams.TryAdd(result.Id, result);
|
||||
|
||||
result.Start(cancellationToken);
|
||||
|
||||
return result.TaskCompletion.Task;
|
||||
}
|
||||
|
||||
public void RemoveOutputStream(QueueStream stream)
|
||||
{
|
||||
QueueStream removed;
|
||||
_outputStreams.TryRemove(stream.Id, out removed);
|
||||
}
|
||||
|
||||
private void OnFinished(QueueStream queueStream)
|
||||
{
|
||||
RemoveOutputStream(queueStream);
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user