Menu

Windows Audio Processing Object

Surya
5 days ago
4 days ago
  • Surya

    Surya - 5 days ago

    Hi,

    I have developed a Windows Audio Processing Object (APO) based on below Microsoft's SysVAD APO sample.
    Microsoft SysVAD APO sample:
    https://github.com/microsoft/Windows-driver-samples/tree/main/audio/sysvad/APO

    Currently, I bind my APO to a specific Realtek audio device using the hardware ID in the Extension INF, for example:

    [DeviceExtensions.NTamd64]
    ;%Device.ExtensionDesc% = DeviceExtension_Install, HDAUDIO\FUNC_01&VEN_10EC&DEV_0255&SUBSYS_102807A1

    The APO is successfully installed, registered, and invoked on the matched Realtek endpoint.

    Now I want to make the APO device-independent and support different active audio endpoints, including Realtek, Intel Audio, USB audio devices, and Bluetooth devices. I noticed that Equalizer APO allows users to select audio endpoints through its Configurator and can install its APO on different audio devices without maintaining a hardware-ID-specific Extension INF for every device.

    My question is: how can a third-party APO be dynamically associated with or installed on selected Windows audio endpoints without hardcoding the endpoint hardware ID in the Extension INF? Is there a supported Windows mechanism to bind an APO to an existing active endpoint at installation/runtime, similar to the approach used by Equalizer APO?

    Any guidance on the installation mechanism would be appreciated.

     
  • Peter Verbeek

    Peter Verbeek - 4 days ago

    The Device Sekector/Configurator of Equalizer APO does a few things. To allow APO's on all kinds of audio devices it changes the key value DisableProtectedAudioDG to 1 of the registry key HKEYLOCALMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Audio. This ensures that unsigned APO's can be installed and run. This also means that DRM or security related issues could arise. But in practice those issues don't arise. Other issues can be related to the existing APO's of the audio devices which may not play nice with Equalizer APO. Also, software of the audio hardware manufacturers may restored their registry key values "breaking" Equalizer APO as the Device Selector changes these key values in order to let the audio stream be rerouted through the APO of Equalizer APO.

    So in short, the best way is to have a signed APO with the hardware id method you successfully applied. Or created a virtual device with a signed APO (well, I think it also has to be signed unless doing the Equalizer APO trick). Note that signing is done by an EV certificate and those are expensive (only one certificate is needed).

     

    Last edit: Peter Verbeek 4 days ago

Log in to post a comment.