[wdmaudiodev] Re: Windows 7 wave cyclic driver

  • From: Tim Roberts <timr@xxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 1 Mar 2017 10:10:45 -0800

Farrah Avanesov wrote:

On Tue, 2017-02-28 at 17:19 -0800, Tim Roberts wrote:

Are you absolutely sure that you're delivering the right format?  How do
you know?  Do you negotiate a format, or did you fix it to just one?
By right, do you mean wave format?  The header on file captured by the
application has the correct wave format.

What I mean is that the Audio Engine will negotiate a format with your
driver.  The default MSVAD driver offers to support either PCM8 or
PCM16, at anything from 4kHz to 64kHz.  The actual format to be used is
negotiated through property settings.  Depending on what API the
application uses, it's quite possible that there is a format conversion
going on.  For example, if the application wants 11,025Hz, but the Audio
Engine is currently preferring 48kHz, it might have negotiated a 48kHz
format with your driver, and then converted to 11,025 for the app.   If
you are always delivering 11,025, disaster would ensue.

Now, if you have modified MSVAD to eliminate all formats but the one you
really want, then it should be OK.

What happens if the FIFO goes empty?  Does the hardware block, or do you
read garbage?  Have you dumped the buffer here to make sure it looks OK?
I didn't show it in the code snippet above but ByteCount is actually the
number of samples in the FIFO.  Yes, I've dumped the buffer to a file
(by including savedata.cpp in the msvad driver) and all the data is

One of the limitations of CopyFrom and CopyTo is that there is no way to
report how many bytes you actually copied.  If the port driver asks you
to copy 9,600 bytes, it assumes you have copied 9,600 bytes.  Are you
saying you are overriding that value?

The layers above you will have ensured that the Destination address
points to the right spot.  It might be a kernel mapping of the user
buffer, but it will be the same pages.
I tried hardcoding 0xdeadbeef into the destination buffer but it still
does not appear in the captured file...

When you do that, is the data in the captured file repetitive?  That is,
does it look like "deadbeef" was sample-rate converted?  Or is it really
random data?

Tim Roberts, timr@xxxxxxxxx
Providenza & Boekelheide, Inc.


WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx


Other related posts: