Browse Source

AudioNTR: Change buffering behavior

HOME 2 years ago
parent
commit
44168272c3
1 changed files with 16 additions and 9 deletions
  1. 16 9
      AudioNTR/Program.cs

+ 16 - 9
AudioNTR/Program.cs

@@ -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;