Actually, yes, I changed something ! When I read this at first (yesterday) I wasn't aware of it, but today reading this again it sprung to my mind that I have been working on support for 24 bits. So, what I did was actually adjusting the program with some debug "enhancements" and found quite another problem so I quit that project for a while, but forgot to remove that debug code. Actually this is interesting ...
What I found that, in fact, 24 bits is already supported. Mind you, for selecting the device, and NOT for putting through 24 bits per sample (per channel). Now, for you -and judging- a bit background on this :
In the process of getting the first steps of 24 bit to work I recognized that there would be no real reason that 24 bits would be hold back
for Engine#1. So, that should just work. However -and this is as hard to understand as it is to explain- there is no way it can be checked whether this really works. Keep in mind : Engine#1. Why ? well, because Vista will ALWAYS resample to the rate you set in the Advanced Properties of the audio interface; set it to 44100/24 and it will do just that (even when 96/24 material is fed), and set it to 96000/24 it will do just that again (even when 44100/16 is fed). Please read the before carefully.
From the above follows, that if Engine#1 would not support 96/24, and knowing that if you do not set the properties to 96/24 it would not output 96/24 anyway, it works the other way around just the same : feed with 44100, but since you set the properties to 96000 it would output that.
No way to check the reality of it, unless you could hear it by the better quality, which is a problem by itself when you don't have the reference yet, like me.
Engine#1 will not play Exclusive, and it will not play bit perfect.
Where above leads to nothing, and thus not having a reference to check either, there is one solution only : use Engine#3. Now here I have another problem, which may be a problem of my setup; dunno yet, but for others it might be something to check and report back to me :
My audio card supports 96/24 (and 192/24);
When -outside of any player- I use the testbutton (see screen copy below) I receive the message that the audio device is in use. Mind you, it is not.
Sidenote : With Engine#3 -whatever is set in those properties- does nothing, except for the neccessary ticking of the two checkboxes (see screen copy again).
I can be fairly sure though, that when the test tone (at clicking that test button) does not sound, Engine#3 will not be able to attach to the audio device similarly. Don't get confused now : ... which says nothing much about Engine#1 being able to connect to the same samplerate / bit depth, because then it goes through the mixer. On the other hand, when Engine#1 plays through the setting (like 96/24) you can be sure that the audio device is capable, like mind officially is.
Now comes the strange part, 95% leading to a bug in Vista :
My test tone gives an error at 96/24, unjustified;
When I now ge back to first 44100/16 try the test tone (ok !), then to 44100/24 (ok !), *then* go to 96/24, the test tone does work.
This doesn't help for Engine#3 then working. However, I can imagine that if I go the same route in the software at assigning the device (first 44100 etc.) then maybe it works too.
It is here where I quit that little project because I'd say I'm too much depending on my own setup, and it might not be a Vista bug but a driver problem in my audio card. IOW, if it helps me, it wouldn't help you.
In all means do note : currently Engine#3 cannot perform 24 bit playback, because the bits just aren't provided by me. So there's no need to try whatever with Engine#3. What you could try though -and helping us with it- is trying the test tone procedure as described, and tell me whether it's different with you, or maybe the same.
If it's the same I could try to setup the same route in software, *then* add the 24 bit support, and then we might have it working.
So all 'n all, and maybe off topic, when I started working on 24 bit support, it seems that a Vista bug just does not allow 24 bit in Exclusive Mode. If that's true we're stuck.
Together with that, I fully DIStrust Engine#1 really working in 96/24, no matter you feed 96/24 and no matter the output is 96/24. If you ask me, it (Vista) first samples back to 44100.