At Mon, 27 Oct 2008 10:15:07 +0500, Alexander E. Patrakov wrote:
Takashi Iwai wrote:
A few important features are in my mind:
- continuous rate support
In the sources, you have:
Note: 44.1kHz is possible, but is more complex because it uses a method whereby the channel ring marks each sample in the channel ring as valid or not, so to get 44.1kHz, some samples are simply tagged invalid. The "channel ring" is not the ring buffer that is used to get sound samples to the card. The "channel ring" is used to pass samples between different processing modules on the card. One of these processing modules is the SRC, another is the INs/OUTs, another is the hardware mixer, and yet another is the DSP.
Do I understand correctly that the card internally resamples the sound to a different rate using the zero-order-hold method? If so, I'd rather not see this feature at all unless the "i_want_horrible_sound" parameter is passed, because software can do it better, and some program will surely default to using this hardware misfeature.
Likely it's a wrong guess. emu20k1 has the following register bits.
# define SRCCTL_PITCH_ROM (3<<11) /* pitch ROM select */ # define SRCCTL_PITCH_HIGH (0<<11) /* 0 to 8.0: very high quality */ # define SRCCTL_PITCH_EXT_HIGH (1<<11) /* 0.26 to 1.72: extermely high qual.*/ # define SRCCTL_PITCH_88kHZ (2<<11) /* 1.8375: 88.2kHz 48kHz */ # define SRCCTL_PITCH_96KHZ (3<<11) /* 2.0: 96kHz 48kHz */