Hi, Thanks again for clear answers. In case the HW strip the IEC958 frames, where the ALSA stack expect to find the various frame data fields such as perr, valid bit, audio sample, user data and channel status? Is there a data structure the HW should follow when DMAing the striped data to the DRAM buffer? What do you think of such acceleration? Does this saves a significant CPU time processing the ICE958 frames? Many thanks. P.S. I was looking into the ASLA stack and I could find SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_XX only in snd_pcm_hardware structure initialization. I could not see where it is used to tell the ALSA to process the data as IEC958 frames. -----Original Message----- From: James Courtier-Dutton [mailto:James@xxxxxxxxxxxxxx] Sent: Wednesday, October 11, 2006 4:23 PM To: Assaf Hoffman Cc: alsa-devel@xxxxxxxxxxxxxxxxxxxxx; Rita Shtern Subject: Re: ALSA snd_xferi_t buffer arrangment Assaf Hoffman wrote: > Thank you for your reply. > Please let me clarify. What you say is that my device can deliver a raw > ICE958 data from the capture channel to the DMA buffer and the ALSA > stack will know how to deal with it? No need for the device to strip > down the payload and only then transfer it to the DMA buffer? > In case the sound card can strip down the IEC958 frames into raw sound > data + ch status + user data, how would the ALSA stack expect the data? > Is there an API for that? > Thanks again. > If you don't strip the IEC958 frames, tell ALSA the format is: SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_BE If you do strip the IEC958 frames, tell ALSA the format is: SNDRV_PCM_FMTBIT_S24_LE or SNDRV_PCM_FMTBIT_S16_LE Or whatever format your hardware decides to send. The API for this is contained in the following structure in the sound driver: This example is from the snd-emu10k1 driver. static struct snd_pcm_hardware snd_emu10k1_capture = { .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_RESUME | SNDRV_PCM_INFO_MMAP_VALID), .formats = SNDRV_PCM_FMTBIT_S16_LE, .rates = SNDRV_PCM_RATE_8000_48000, .rate_min = 8000, .rate_max = 48000, .channels_min = 1, .channels_max = 2, .buffer_bytes_max = (64*1024), .period_bytes_min = 384, .period_bytes_max = (64*1024), .periods_min = 2, .periods_max = 2, .fifo_size = 0, }; As you can see, it tells use that this device can do only SNDRV_PCM_FMTBIT_S16_LE format. James ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel