[wdmaudiodev] Re: setting sample rate in the control panel in Vista

  • From: Eugene Gavrilov <egavrilov@xxxxxxxxxxxxx>
  • To: Uwe Kirst <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 30 Oct 2007 02:29:16 +0300

Hi Uwe,

>> * declare only current sample rate in the Vista control panel, and use
>> custom  control panel for sample rate switch (it will be automatic for
>> external sources)
> That would be great, but how do you do that without unloading the
> driver? My understanding was so far that this is not possible. Please 
> correct me if I´m wrong.
> Unloading the driver is not an option for me, because the driver has to
> control the hardware all the time the hardware is present. The driver is
> also needed for the other intefaces (ASIO / GSIF).

My  driver is AVStream-based, not portclass-based, that's why it might
be  a  bit  easier for me. On driver start-up, the driver reads current sample
rate  from  the device and creates filter factory + pins + data ranges
with   a   single   sample  rate. Vista shows single format in
its   control  panel, the control is grayed out, disabled. Whenever an
event   happens   (user   changes   hardware  sample  rate  or  opens
vendor-specific control panel), I perform the following: 

* signal  AVStream  that  device classes  state  is 'disabled' (this
terminates   all   pending   DirectSound/WinMM   sessions) - by using
KsFilterFactorySetDeviceClassesState
* _KsEdit() pin's data range, filter factory data range and change the sample 
rate
* signal AVStream that device classes state is 'enabled'

This  solves the problem with everything but Vista control panel :) It
keeps  displaying  previous  sample rate, but also lists new one. If a
user  selects  new  sample  rate, old one disappears... However, WinMM
applications  won't  work  until  sample rate is changed manually. But
ASIO/GSIF clients are working properly, of course.

For  PortClass  driver  it  should  be possible to achieve the same by
using IUregisterSubdevice interface.

I'm  still unsure if this Vista behavior is correct. I suppose it is a
bug,  because  the  control panel keeps listing the format no longer
supported  by device and no longer manifested by the driver. Moreover,
even  after  reboot  /  disable-re-enable  and  similar  events  Vista
remembers  the  format. I wonder if this is caused by the specifics of
the  audio  format  (our  hardware uses 24-bit data packed into 32-bit
containers)  -  since  the  control  panel  checks 8-, 16-, and 24-bit
formats  during  initialization  (I receive corresponding intersection
requests), but no 32-bit formats are enumerated.

Regards,
 Eugene Gavrilov
 Senior Software Engineer,
 CEntrance, 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

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: