|
@@ -21,7 +21,7 @@ namespace AudioNTR
|
|
|
var op = args.FirstOrDefault() ?? "";
|
|
|
var argsToOp = args.Skip(1).ToArray();
|
|
|
|
|
|
- Console.WriteLine("Audio Net Transmitter Receiver ");
|
|
|
+ Console.WriteLine("Audio Net Transmitter Receiver");
|
|
|
switch (op.ToLower())
|
|
|
{
|
|
|
default:
|
|
@@ -145,6 +145,8 @@ namespace AudioNTR
|
|
|
|
|
|
private static void RunReceiver(string[] argsToOp)
|
|
|
{
|
|
|
+ const int bufferMs = 500;
|
|
|
+
|
|
|
if (argsToOp.Length < 1) throw new ArgumentException("least 1 args for listen port");
|
|
|
if (false == int.TryParse(argsToOp[0], out var port)) throw new ArgumentException("invalid port");
|
|
|
IPAddress address = null;
|
|
@@ -172,7 +174,7 @@ namespace AudioNTR
|
|
|
var reader = new BinaryReader(stream, Encoding.UTF8, true);
|
|
|
var provider = new BufferedWaveProvider(new WaveFormat(reader))
|
|
|
{
|
|
|
- BufferDuration = TimeSpan.FromMilliseconds(75),
|
|
|
+ BufferDuration = TimeSpan.FromMilliseconds(bufferMs),
|
|
|
DiscardOnBufferOverflow = true,
|
|
|
};
|
|
|
reader.Dispose();
|
|
@@ -187,16 +189,21 @@ namespace AudioNTR
|
|
|
var output = new WasapiOut();
|
|
|
Console.WriteLine("Setup...");
|
|
|
output.Init(provider);
|
|
|
+
|
|
|
+ const int fillSleep = bufferMs*11/20;
|
|
|
+ Console.WriteLine($"Filling buffer, sleep {fillSleep}ms");
|
|
|
+ Thread.Sleep(fillSleep);
|
|
|
+
|
|
|
Console.WriteLine("Starting play...");
|
|
|
output.Play();
|
|
|
|
|
|
-
|
|
|
try
|
|
|
{
|
|
|
var buf = new byte[1024 * 1024];//1MB
|
|
|
- var readCount = 0;
|
|
|
- Console.WriteLine("Sending ACK...");
|
|
|
- stream.WriteByte(1);
|
|
|
+ int readCount;
|
|
|
+
|
|
|
+ //Console.WriteLine("Sending ACK...");
|
|
|
+ //stream.WriteByte(1);
|
|
|
|
|
|
Console.WriteLine("Begin read chunks...");
|
|
|
do
|
|
@@ -321,9 +328,9 @@ namespace AudioNTR
|
|
|
provider.WaveFormat.Serialize(writer);
|
|
|
writer.Close();
|
|
|
|
|
|
- Console.WriteLine("Waiting ACK ...");
|
|
|
- var ack = stream.ReadByte();
|
|
|
- if (ack != 1) throw new Exception("Unexpected ACK");
|
|
|
+ //Console.WriteLine("Waiting ACK ...");
|
|
|
+ //var ack = stream.ReadByte();
|
|
|
+ //if (ack != 1) throw new Exception("Unexpected ACK");
|
|
|
|
|
|
Console.WriteLine("Begin sending chunks...");
|
|
|
long totalSent = 0;
|