On Sun, Dec 16, 2012 at 11:56:46AM +0100, sebastien chev wrote:
It seems that no matter what the Windows side program choose for DirectSoundCreate, the DSound subsystem initialize itself with the higher spec sound available (for example 48Khz Float32, or 48kHz Int16 if no Float32 available).
Maarten very recently updated dsound's behavior. It will either choose the default format for the backend or the nearest supported format to the format the application requests. See DSOUND_WaveFormat in <dsound/primary.c>.
While not a big deal on current linux PC, using this on ARM device kill performance.
A DirectSound subsystem for ARM, with Integer only for the mixbuffer (as most ARM still use softfloat) and 22kHz should be less taxing for performances.
It seems like the best solution is for the backend to prefer a format that the CPU supports efficiently. This requires some more intelligence in AudioClient_GetMixFormat in <winealsa.drv/mmdevdrv.c>, which currently probes for capabilities and chooses the best available format.
Andrew