[alsa-devel] Sample format coversion bug?

Takashi Iwai tiwai at suse.de
Mon Oct 29 09:08:18 CET 2007


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


More information about the Alsa-devel mailing list