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