[wdmaudiodev] Re: Pull mode versus push mode

  • From: "David A. Hoatson" <dhoatson@xxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 17 Nov 2010 08:41:31 -0800


Even if using push mode, wouldn't the timer interrupt be running for each
streaming device?  Doesn't the timer interrupt act just like a hardware
interrupt with regard to the CPU state?

Having written drivers for radio station automation systems in the past,
having any glitches in the audio would be a problem for station running
24/7.  Pull mode does give a more 'hardwired' connection between the
hardware position and the software streaming engine.  It just makes me 'feel
better' to know that the hardware is controlling the position instead of the
software guessing.

Is ASIO an option?  That would give a single hardware interrupt at the
bufferSwitch point for all the channels and bypasses everything Microsoft so
you don't have to worry about a system sound from an error dialog box
interrupting the on-air audio.  No worrying about something in the streaming
engine resampling the audio or having to worry about the two extra limiters
that are put into the audio stream whether you want them or not.  Exclusive
mode fixes most of that... :-)  OK, I admit that I am an ASIO evangelist.

Thank you,

David A. Hoatson
Lynx Studio Technology, Inc.

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jeff Pages
Sent: Tuesday, November 16, 2010 4:25 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Pull mode versus push mode

We make a range of AM, FM and DAB+ radio capture cards, which create a
Windows audio capture device for each station received. Typically each card
can create up to 32 such audio capture devices.

While everyone is extolling the virtues of supporting pull mode on Windows
7, I'm wondering if, in this situation, push mode might be preferable. On a
machine fitted with an AM, FM and three DAB+ cards (a fairly typical
configuration here), if they were operating in pull mode each station would
be generating its own interrupt at a 10ms rate, creating the potential of
160 interrupts every 10ms, each queuing DPCs to trigger notification events.
Contrast this to push mode, where presumably a single system timer interrupt
causes each audio engine instance to just poll its corresponding position

Audio latency is irrelevant in this application, so my gut feeling is that
supporting pull mode would create more problems than it solves. I'd be
curious to hear what others on this list think, though.


Other related posts: