[alsa-devel] 24 bit sample embedded in 32 bits

Jaroslav Kysela perex at perex.cz
Mon Jul 2 13:02:49 CEST 2012

Date 2.7.2012 12:11, Vipin Kumar wrote:
> Hello,
> I assume that the alsa framework expects the 24 bit sample data to be 
> packed one after the other. for example while recording a 2 channel, 24 
> bit sample data, typically the dma reads a fifo (which receives data 
> from adc) and prepares a buffer which is then passed to the upper layers.
> This buffer is expeted to be 24byte left channel and then 24 byte right 
> channel. Am I right?
> If the above assumption is correct, I need to find a way to tell the 
> framework that the data is 24bit but is embedded in 32 bit. ie 32bit 
> left and then 32 bit right channel data
> I am tending to think that there has to be a way but I am unable to find 
> it. Can you please point me to the right direction

Use S/U24 or S/U32 formats - look to adriver.h for SNDRV_PCM_FORMAT
constants. S/U24 expects 24-bit samples with zero MSB in 32-bit words.
S/U32 expects 32-bit samples (LSB is zero for 24-bit data).


Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project; Red Hat, Inc.

More information about the Alsa-devel mailing list