[wdmaudiodev] Which audio model is best

  • From: Basileios Bu <basileiosbu@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 9 Mar 2011 10:08:52 -0500


I will be writing audio drivers for a USB device which must support ASIO and
WDM Audio.  Both sources will be mixed into a common buffer before being
sent over the USB (or vice-versa).  Now I have worked with portcls
wavecyclic, though this was some time ago.  I would like to know if there is
an significant reason to use avstream instead of portcls wavecyclic, since
moving to avstream would add significant time for the learning curve.  I've
read in these archives that supposedly avstream is more flexible, but I
would like to know just how, especially as the WDK says "The preferred class
driver for audio drivers is the Microsoft-provided audio port class driver.
Audio vendors should write minidrivers that run under Portcls.sys."

Although this was a while ago, I remember that the supposed 10ms latency of
wavecyclic could be overcome with SetNotificationFreq, where the frame could
be set down to 1ms (IIRC).  The archive says that avstream is better suited
for external devices, but the archive has a workaround for that as well.  So
although I know nothing so far about avstream, I find it hard to justify its
steep learning curve, especially as the avstream samples are- from what I
can initially tell- less helpful for an audio driver.  Any comments on
avstream vs portcls?

Finally, assuming that I don't have to support WinXP (unlikely, but not
final), is WaveRT a viable choice?  Based on this statement from the WDK
"WaveRT avoids any need for intervention by the miniport driver in the flow
of audio data between the application and the audio hardware.", I'm not sure
it would be viable for me, since I need to mix two sources (at least) into a
common buffer.  WavePci is disqualified for a related reason, i.e. since a
copy is necessary, there is no gain from the extra complexity.

Any comments would be appreciated.


Other related posts: