none
handle sampling rate changes in GFX APO RRS feed

  • Question

  • I am trying to create a GFX APO for Windows 8.1. I am able to install the GFX APO and its works fine until I change the sampling rate from the Advanced tab of Speaker Properties which pops up a message saying 'Format is not supported' and crashes the Audio Service. I only want to support the default sampling rate already included in the Advanced tab. I have already overridden theIsInputFormatSupported and IsOutputFormatSupported. Is there any other function that I need to override to provide support for dynamic sampling rate change ?
    Monday, December 8, 2014 1:31 PM

Answers

  • For Windows 8.1, you should be implementing an endpoint effect (as opposed to a GFX). Having done that, APOs are meant to be packaged along with the driver, and so are expected to support all the sampling rates supported by the driver. For the sampling rates that you don't support, you could send your APO into a pass through mode.

    Also, there is no concept of dynamic format change as far as the APO is concerned. Once an instance of an APO has been initialized, it will not see any format change. When the user changes the sampling rate from the advanced tab of the speaker properties, a new instance of the APO is created and initialized with the new format.

    Wednesday, December 10, 2014 8:50 PM

All replies

  • For Windows 8.1, you should be implementing an endpoint effect (as opposed to a GFX). Having done that, APOs are meant to be packaged along with the driver, and so are expected to support all the sampling rates supported by the driver. For the sampling rates that you don't support, you could send your APO into a pass through mode.

    Also, there is no concept of dynamic format change as far as the APO is concerned. Once an instance of an APO has been initialized, it will not see any format change. When the user changes the sampling rate from the advanced tab of the speaker properties, a new instance of the APO is created and initialized with the new format.

    Wednesday, December 10, 2014 8:50 PM
  • My problem is slightly different. Whenever i change the sampling rate, the Audio Engine calls my APOs constructor and immediately calls its destructor. It actually never calls the IsInputFormatSupported to negotiate the format and after three such tries, the audio service crashes. I already have the pass through logic in place in the APO. 

     I am setting the value of "{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6" string under [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\{endpoint GUID}\] to the GUID of my APO class, to register the GFX with audio endpoints(I do this with all the endpoints).

    Also, is there any documentation on MSDN regarding the new APOs introduced in Windows 8.1?

    Thursday, December 11, 2014 7:18 PM
  • Does the format you select from the control panel work if the endpoint has no APOs registered?
    Thursday, December 11, 2014 9:25 PM
  • Yes it works as expected when the APO is unregistered and unloaded from the Audio Engine(Audio Engine requires a restart after unregistering the APO).
    Friday, December 12, 2014 1:26 PM
  • Do you get a call to IAudioProcessingObject::Initialize in your APO after changing the device format? Do you return success in response to this call?
    Friday, December 12, 2014 3:34 PM
  • No, just the constructor and the destructor  thrice.
    Friday, December 12, 2014 4:45 PM