Here's the problem: apparently i810 sound cards (and the corresponding OSS drivers) only accept 48kHz sound in 16 bit stereo. So if an application uses winmm to play a sound in any other format, winmm has to use the wave mapper to do the conversion to that format.
But msacm refuses to do a conversion to 48kHz sound because that sampling rate is not in the 'supported formats' list: see around line 870 of 'dlls/msacm/pcmconverter.c'. Hence the attached patch to pcmconverter. The changes in wavemap.c are just so that we at least try to see if we could convert to that sampling rate.
However, why only support conversion between these specific formats? Why not support anything between 100 and 100000Hz for instance? That would nicely match the range returned by DirectSound...
Does this patch look ok? Should I rewrite it using the above range instead? (Or rather, why should I not rewrite it that way?)
Francois Gouget wrote:
Here's the problem: apparently i810 sound cards (and the corresponding OSS drivers) only accept 48kHz sound in 16 bit stereo. So if an application uses winmm to play a sound in any other format, winmm has to use the wave mapper to do the conversion to that format.
But msacm refuses to do a conversion to 48kHz sound because that sampling rate is not in the 'supported formats' list: see around line 870 of 'dlls/msacm/pcmconverter.c'. Hence the attached patch to pcmconverter. The changes in wavemap.c are just so that we at least try to see if we could convert to that sampling rate.
However, why only support conversion between these specific formats? Why not support anything between 100 and 100000Hz for instance? That would nicely match the range returned by DirectSound...
Does this patch look ok? Should I rewrite it using the above range instead? (Or rather, why should I not rewrite it that way?)
msacm should indeed accept any possible conversion rate (I didn't check if a minimal/maximal range was enforced) (basically, you just need not to check for a correct rate when trying to accept or reject a given WAVEFORMATEX)
wavemapper should also support the new (XP ?) official rates of 48kHz and 96kHz
A+