Sysvad: how to implement Inverted Call to notify user-mode applications.

  • Thread starter Thread starter João Mário Magalhães
  • Start date Start date
J

João Mário Magalhães

Guest
Hello, my name is João Magalhães and I am part of a driver development team.


Our goal is to make a noise cancelling driver, where its architecture goes like this:


The capture would be more or less this:
1 - on Skype (or other application) the user selects the driver's microphone based on Sysvad
2 - the audio engine captures the microphone sound
3 - the audio engine sends the microphone stream to an application to remove noise from the stream
4 - our driver receives the modified stream
5 - our driver sends the stream to Skype


And the reproduction would be more or less this:
1 - on Skype (or other application) the user selects the driver's speaker based on Sysvad
2 - Skype sends the audio stream to our driver
3 - our driver sends the audio stream to an application to remove noise from the stream
4 - the audio engine receives the modified stream
5 - the audio engine sends the stream to the actual system speaker


We will use Sysvad for two porpuses: to get the audio stream from the user-mode application and send it to the speaker via audio engine, and to get the audio stream from the mic via audio engine and send it to this same application.


We thought about using Inverted Call notifications, to warn our application when the audio buffer is ready to be read. I first tried using the Inverted Call example to make a separate device only for this notification system via IOCTL, but I couldn't make sysvad access the notification queue from this other device.


Now I am trying to create the notification queue in Sysvad itself, but its architecture is based on mini-ports to access every audio channel, and I am stuck trying to figure out some way to implement this, and if it is really the best way to do it.


The core questions are: is the inverted call the best way to notify our application when the buffer is ready to be read, and, if it is, which is the best way to do it?


Thanks in advance and regards,
João Magalhães

PS: (Inverted Call example)[The Inverted Call Model in KMDF - OSR]

Continue reading...
 
Back
Top