[wdmaudiodev] Re: AVStream Audio Frustration

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Fri, 2 Nov 2012 20:40:01 +0000

It's good that you're suppressing formats you don't support from your 
advertised data ranges, and from your data intersection handler.  I don't know 
why Windows is trying formats you don't advertise.  Are you also returning 
failing status codes for pin creations when the format is one you don't support?

________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx [wdmaudiodev-bounce@xxxxxxxxxxxxx] on 
behalf of Tim Roberts [timr@xxxxxxxxx]
Sent: Friday, November 02, 2012 12:04 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] AVStream Audio Frustration

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<mailto:timr@xxxxxxxxx>
Providenza & Boekelheide, Inc.

Other related posts: