Alexander,
I'm not familiar with dsound
+ if (ichannels > 2)
+ FIXME("Conversion from %u to %u channels is not implemented, falling back to stereo", ichannels, ochannels);
+ dsb->mix_channels = 2;
Does you code support 8 channels? Look through git history, and
you'll see some patches made specifically for 6 or even 8 channel
audio plus some 8->2 and 2->8 conversions. Without having a 5:1
or 7:1 card, I think this gives hints as to what apps expect from
conversions. Of course, there's always a risk that an old bug
analysis was biased by other bugs, leading to misconceptions and
misbeliefs about the actual needs and behaviour.
About
dsound: convert from fixed to floating point
Using floats for frequencies is not bad. After all, modern mmdevapi
does it too in IAudioClockAdjustment::SetSampleRate
Just avoid computing byte positions from floats...
BTW, AUDCLNT_STREAMFLAGS_RATEADJUST hints that the DSound mixer
implements stuff that mmdevapi's mixer needs...
Regards,
Jörg Höhle