Windows Core Audio
January 12, 2019 at 12:29 pm #29825
Its been a bit quiet on this topic recently but I have been looking into how Windows Core Audio works at a low level so I thought I would share what I think I now know 😁
Audio apps normally work with calls to a higher level API but one way or another they must open an audio stream session. The session requires information on the number of streams, their bit rate, the location of the audio apps output buffer, etc. The audio session manager will setup an audio end point buffer in system memory and inform the audio engine of its location. The audio engine can read data from many end point buffers and mix it together with Windows efects before outputting the result to an audio devices hardware buffer via its driver.
An audio app can also request exclusive use of an audio device and if granted the session manager will send stream packet data directly to the audio device, bypassing the audio engine.
Exclusive use only allows the playback of one stream at a time but it can contain multiple channels. Exclusive streams also get marked as pro audio so they recieve a priority boost too. No other sounds, including system sounds, can be played on a device that is in exclusive mode.
January 13, 2019 at 5:52 pm #29836
keith with the teefParticipant@thinktankForumite Points: 360
I use ASIO when I can. Straingly enough foobar, which is the probably best free sound player+, does not as appear to use low lever ASIO. HQ player if you can get it to work, that is, the half hour free version, daily. is quite something, but noway is it worth £140 for what I would want to use it for. 🙂
00January 14, 2019 at 10:29 pm #29850
- This reply was modified 1 week, 1 day ago by keith with the teef.
Wheels-Of-FireParticipant@grahamdearsleyForumite Points: 1,009
Glad you liked it Keith, I had you in mind 😁
I was slightly inaccurate when I said that exclusive mode bypasses the audio engine completely as it still uses the device pipe portion, its the stream pipe bit that gets left out as the diagram in the link below shows.
An APO is an Audio Processing object and it represents anything that might be plugged into the audio pipeline like a codec or effects module.10
You must be logged in to reply to this topic.