public static void ListenForInput(AudioInputBuffer_old buffer)
        {
            Thread thread           = null;
            var    audioQueueThread = new InputAudioQueueThread_old(buffer, thread);

            thread = new Thread(new ParameterizedThreadStart(HandleParameterizedThreadStart));
            BufferThreads.Add(buffer, audioQueueThread);

            thread.Start(audioQueueThread);
        }
        public static void StopListening(AudioInputBuffer_old buffer)
        {
            InputAudioQueueThread_old audioQueueThread = null;

            if (BufferThreads.ContainsKey(buffer))
            {
                audioQueueThread = BufferThreads[buffer];
            }

            if (audioQueueThread != null && audioQueueThread.IsRunning)
            {
                audioQueueThread.RequestStop();
                audioQueueThread.IsRunning = false;
                BufferThreads.Remove(buffer);
            }
        }
        //private static void HandleParameterizedThreadStart(object getAudioQueueThreadDelegate)
        //{
        //    var getDelegate = getAudioQueueThreadDelegate as GetAudioQueueThreadDelegate;
        //    RunAudioQueueLoop(getDelegate());
        //}


        private static void RunAudioQueueLoop(InputAudioQueueThread_old audioQueueThread)
        {
            var buffer = audioQueueThread.Buffer;

            //var queue = new TestInputAudioQueue(buffer.AudioUnit.GetAudioFormat(MonoMac.AudioUnit.AudioUnitScopeType.Input));
            //audioQueueThread.AudioQueue = queue;
            //queue.InputCompleted += Queue_InputCompleted;
#if DEBUG
            //PrintAudioQueueDataReadout(queue);
#endif //DEBUG

            //var packetDescription = new AudioStreamPacketDescription
            //{
            //    DataByteSize = queue.AudioStreamDescription.BytesPerPacket
            //};
            //var packetDescriptions = new AudioStreamPacketDescription[] { packetDescription };
            //int bufferSizeInBytes = buffer.BufferLength * queue.DeviceChannels * packetDescription.DataByteSize;
            int bufferSizeInBytes = buffer.AudioUnit.GetAudioFormat(AudioUnitScopeType.Input).FramesPerPacket *sizeof(float);

            //var bufferstuff = new AudioBufferList(buffer.AudioUnit.GetAudioFormat(AudioUnitScopeType.Input).ChannelsPerFrame);
            var bufferstuff = new AudioBuffers(buffer.AudioUnit.GetAudioFormat(AudioUnitScopeType.Input).ChannelsPerFrame);

            int something = buffer.AudioUnit.Initialize();
            audioQueueThread.Buffer.AudioUnit.Start();

            // Allocate, enqueue, and start
            //ErrorHandler.CheckError(queue.AllocateBuffer(bufferSizeInBytes, out buffer.SystemBufferPointer));
            //ErrorHandler.CheckError(queue.EnqueueBuffer(buffer.SystemBufferPointer, packetDescriptions));
            //ErrorHandler.CheckError(queue.Start());

            audioQueueThread.IsRunning = true;
            //CFRunLoop.Current.Run();
            while (!audioQueueThread.StopRequested)
            {
                //Console.WriteLine("Thread is running.");
                Thread.Sleep(50);
                CFRunLoop.Current.Run();
                CFRunLoop.Main.Run();
                //Marshal.Copy(buffer.SystemBufferPointer, dest, 0, audioQueueThread.Buffer.BufferLength);
                //ErrorHandler.CheckError(queue.EnqueueBuffer(buffer.SystemBufferPointer, packetDescriptions));
            }

            Console.WriteLine("Thread is stopping...");
            // May need to clear CoreAudio buffer here.
        }