Hello @Sephiroth_FF ,
Thanks for the detailed question and for sharing the ProcMon data. I went through the public Microsoft documentation on both points. Below is what I found.
1. Adding a third-party format to the "Spatial sound format" list
I couldn't find any documented, supported way for a third-party ISpatialAudioClient renderer or encoder to register itself so that it appears in Settings > Sound > Spatial sound format. I also didn't find the ...\Audio\Spatial\Encoder registry location documented anywhere as an extension point. Your ProcMon result fits what I'm seeing.
From the public API surface, the list looks closed and based on a partner model:
- SpatialAudioFormatSubtype only exposes GUIDs for "known spatial audio formats": Windows Sonic, Dolby Atmos (Headphones / Home Theater / Speakers), DTS Headphone:X, DTS:X Ultra, and DTS:X for Home Theater.
- SpatialAudioDeviceConfiguration.SetDefaultSpatialAudioFormatAsync says "The caller must be the app that owns this spatial audio format." Its status values include
AccessDenied,LicenseExpired, andLicenseNotValidForAudioEndpoint. - SpatialAudioFormatConfiguration (
ReportLicenseChangedAsync/ReportConfigurationChangedAsync) is meant for a "spatial audio format companion app." That is the model used by Dolby Access and DTS Sound Unbound. - Spatial Sound for app developers and ISpatialAudioClient only cover the client side, where an app creates static or dynamic objects. I didn't find any interface documented for implementing a renderer or encoder.
For your planning, I'd assume the list is not open to independent formats through any public mechanism. If you want to explore becoming a format provider, I'd recommend reaching out to Microsoft directly through the partner channel (Partner Center). I'm not able to commit to platform or roadmap changes here on the forum.
2. Can SFX, MFX, or EFX APOs see spatial audio object metadata?
From what I can see in the documentation, the APO contract has no mechanism for an APO to receive per-object metadata such as position or gain:
- Implementing Audio Processing Objects says "The APO must have one input and one output connection. These connections are audio buffers and can have multiple channels" and "An APO can modify only the audio data that is passed to it through APOProcess."
- Audio Processing Object Architecture places SFX per stream before the mix, MFX after the mix for a given mode, and EFX after the mix of all modes. I read it the same way you do.
- The Windows 11 CAPX additions (Windows 11 APIs for APOs) add timestamps (
APO_CONNECTION_PROPERTY_V2), AEC reference input, settings, notifications, logging, and threading. I didn't see any of them carrying object data. - On the metadata side, ISpatialAudioMetadataClient ties the metadata format to what the current render endpoint / spatial format supports. That tells me the metadata is consumed by the active format's renderer, not by the APO chain.
One caveat, the docs don't explicitly describe where object-to-channel rendering sits relative to each APO stage. So the most accurate thing I can say is that no documented or supported interface exposes object metadata to APOs. I can't point you to an official statement that it is architecturally impossible. For roadmap planning, though, I'd assume APOs only see channel-based PCM.
Supported options I'd consider for an independent renderer
- App or middleware level: render your own SOFA/HRTF and room model inside the app or audio middleware, then output stereo or multichannel through WASAPI (
IAudioClient). The Spatial Sound page describes this middleware pattern. - System-wide on channel-based audio: ship your DSP as an APO, for example to virtualize a 7.1 or 7.1.4 channel bed to binaural. APOs are packaged and registered with the audio driver (componentized APO install), so in practice this means working with an IHV or OEM, plus a Hardware Support App for settings. You would also only get channel-based input, not objects.
- Becoming a listed spatial sound format: as far as I can tell, this is only possible through a direct engagement with Microsoft, as described in section 1.
I hope this helps with your planning. If you found my response helpful or informative, I would greatly appreciate it if you could follow the instruction here so others experiencing similar behavior can benefit from it as well.
Thank you.