update hdhomerun udp stream

This commit is contained in:
Luke Pulverenti
2017-03-26 12:26:52 -04:00
parent 690ab4a2dc
commit 55bfb71baa
5 changed files with 122 additions and 250 deletions

View File

@@ -13,7 +13,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
public class QueueStream
{
private readonly Stream _outputStream;
private readonly ConcurrentQueue<byte[]> _queue = new ConcurrentQueue<byte[]>();
private readonly ConcurrentQueue<Tuple<byte[],int,int>> _queue = new ConcurrentQueue<Tuple<byte[], int, int>>();
private CancellationToken _cancellationToken;
public TaskCompletionSource<bool> TaskCompletion { get; private set; }
@@ -28,9 +28,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
TaskCompletion = new TaskCompletionSource<bool>();
}
public void Queue(byte[] bytes)
public void Queue(byte[] bytes, int offset, int count)
{
_queue.Enqueue(bytes);
_queue.Enqueue(new Tuple<byte[], int, int>(bytes, offset, count));
}
public void Start(CancellationToken cancellationToken)
@@ -39,12 +39,12 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
Task.Run(() => StartInternal());
}
private byte[] Dequeue()
private Tuple<byte[], int, int> Dequeue()
{
byte[] bytes;
if (_queue.TryDequeue(out bytes))
Tuple<byte[], int, int> result;
if (_queue.TryDequeue(out result))
{
return bytes;
return result;
}
return null;
@@ -58,10 +58,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
while (true)
{
var bytes = Dequeue();
if (bytes != null)
var result = Dequeue();
if (result != null)
{
await _outputStream.WriteAsync(bytes, 0, bytes.Length, cancellationToken).ConfigureAwait(false);
await _outputStream.WriteAsync(result.Item1, result.Item2, result.Item3, cancellationToken).ConfigureAwait(false);
}
else
{