http://bugs.winehq.org/show_bug.cgi?id=14717
--- Comment #141 from Raymond superquad.vortex2@gmail.com 2011-02-20 02:49:21 CST --- (In reply to comment #134)
We are not talking about adding a resampler to dsound, because a resampler already exists there in Wine code base. We are talking about replacing it with a resampler that provides the same quality as Windows resampler (at least for SB 128 PCI) for the case of mismatching primary and secondary buffer sample rates.
Take a look at the ENS1371 Specification
if oss emulation work better than alsa
It look like ens1371 driver need to specify
snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32); snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);
so that dsound are forced to select a period bytes which is multiple of 32 bytes since Eight Long words will always be transferred during Audio Write Transfers.
5.2. Audio Write Transfers The CCB will first write up to 8 long words into the intermediate PCI buffer. The CCB will then request a write transfer from the PCIB to main memory and specify the starting address of the transfer. The PCIB arbitrates for the PCI bus and transfers 8 Long Words into system memory. Eight Long words will always be transferred during this operation.
4.11. Internal Memory
The internal memory for the sound cache in AudioPCI 97 is organized as 4 blocks of 64 bytes each. Each block is divided into 4 pages of 16 bytes each (4 longwords). Memory can be accessed as longwords only.
The internal memory organization for the Sample Rate Converter in AudioPCI 97 is shown below. The memory is accessed through the Sample Rate Converter interface register located at address 10H.