While testing application support for weird-rate cards (such as
snd-pcsp), I found a bug in alsa-lib. Alsa-plugins are installed, so the "libspeex (builtin)" rate converter is used. This bug already exists in alsa-plugins 1.0.27.2, so not a regression and thus should not block 1.0.28.
$ file test.wav test.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit,
stereo 32000 Hz
$ aplay -vvv -D plughw:pcsp test.wav Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 32000 Hz,
Stereo
aplay: set_params:1297: Unable to install hw params: ACCESS: RW_INTERLEAVED FORMAT: S16_LE SUBFORMAT: STD SAMPLE_BITS: 16 FRAME_BITS: 32 CHANNELS: 2 RATE: NONE PERIOD_TIME: (125006 125007) PERIOD_SIZE: NONE PERIOD_BYTES: (16000 16004) PERIODS: (3 4) BUFFER_TIME: 500000 BUFFER_SIZE: 16000 BUFFER_BYTES: 64000 TICK_TIME: 0
The pcsp device supports the sample rate of 37286 Hz.
PERIOD_SIZE: NONE
Seem driver bug which use sndrv_pcm_rate_knot when only support single rate and
The constraint refinement need driver usIng equal size periods
snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS)