[wdmaudiodev] AVStream Audio Frustration

  • From: Tim Roberts <timr@xxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 2 Nov 2012 12:04:48 -0700

I have developed a simple (virtual) AVStream audio driver.  It works,
but there is a problem: my advertised audio formats are being ignored.

I can support exactly one format at a time (for example, 22050-M-16),
although that format will change from time to time, very similar to the
avssamp sample.  My thought was that I would advertise a variety of
formats in my KSDATARANGES, and then refine things in the Intersect
handler and the SetFormat handler.  That's how I've done things for
years with video capture drivers.

But if I bring up graphedt, instantiate my device, and look at the
formats on the output pin, my intersect handler is never called, nor
does it look at my KSDATARANGES.  The pin shows something like 50
different formats, including all the multiples of 11025 up to 44100, and
all the multiples of 8000 up to 96000, mono and stereo, 8 and 16 bits. 
I've even changed things now so I only advertise one KSDATARANGE, and
the list still contains 50 formats.

When I first installed the driver, the control panel "Default Format"
came up as 44100-S-16, and that's the format that the system always
tried to use (in graphedt and with waveIn apps), even though that's a
format I didn't support.  I changed the control panel "Default Format"
to 22050-M-16, and that worked.  But if I now change my driver so that I
only advertise 44100-S-8, it still insists on connecting at 22050-M-16. 
It is remembering the old information.

I don't want to embed a sample rate converter in my driver, and I
shouldn't have to.  There's already one in Windows.  How can I convince
the audio system to negotiate with me?  Where is the "Default Format"
stored?

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

Other related posts: