public void Callbacks()
        {
            var audioComponent = AudioComponent.FindComponent(AudioTypeOutput.VoiceProcessingIO);

            using var audioUnit = new global::AudioUnit.AudioUnit(audioComponent);

            var rv = audioUnit.SetInputCallback(InputCallback, AudioUnitScopeType.Input, 1);

            if (rv == AudioUnitStatus.CannotDoInCurrentContext)
            {
                Assert.Ignore("Can't set input callback");                  // No microphone? In a VM? This seems to happen often on bots.
            }
            Assert.AreEqual(AudioUnitStatus.OK, rv, "SetInputCallback");
            Assert.AreEqual(AudioUnitStatus.OK, audioUnit.Initialize(), "Initialize");
            try {
                Assert.AreEqual(AudioUnitStatus.OK, audioUnit.Start(), "Start");
                Assert.IsTrue(inputCallbackEvent.WaitOne(TimeSpan.FromSeconds(1)), "No input callback for 1 second");
            } finally {
                Assert.AreEqual(AudioUnitStatus.OK, audioUnit.Stop(), "Stop");
            }
        }
 AudioUnitStatus InputCallback(AudioUnitRenderActionFlags actionFlags, AudioTimeStamp timeStamp, uint busNumber, uint numberFrames, global::AudioUnit.AudioUnit audioUnit)
 {
     inputCallbackEvent.Set();
     return(AudioUnitStatus.NoError);
 }