At Fri, 26 Oct 2007 19:18:42 +0600, Alexander E. Patrakov wrote:
Hello,
I am writing an application that uses ALSA, and I don't want to write code to support all possible sample formats. On IRC, I asked whether it is OK to support only S24 format internally and rely on the "plug" to do the required conversion. I got a positive answer, but, when testing my application against my SAA7134-based tuner as a capture device, found that it doesn't work.
The problem is also reproducible with "arecord". Given that plughw:1 refers to a SAA7134-based tuner (which obviously doesn't support S24_LE natively), running the following command
arecord -vvv -f S24_LE -c 2 -r 32000 -D plughw:1 /dev/null
produces the following output:
ALSA lib pcm_mmap.c:369:(snd_pcm_mmap) mmap failed: Invalid argument arecord: set_params:961: Unable to install hw params: ACCESS: RW_INTERLEAVED FORMAT: S24_LE SUBFORMAT: STD SAMPLE_BITS: 32 FRAME_BITS: 64 CHANNELS: 2 RATE: 32000 PERIOD_TIME: 125000 PERIOD_SIZE: 4000 PERIOD_BYTES: 32000 PERIODS: 4 BUFFER_TIME: 500000 BUFFER_SIZE: 16000 BUFFER_BYTES: 128000 TICK_TIME: 4000
Well, apparently something wrong with mmap, then. Does the device really support 24bit format? S24_LE isn't 3bytes format but packed into the lower 3 bytes in 4 byte frames.
Takashi