At Tue, 23 Jun 2009 02:40:35 -0300, Guilherme wrote: > > Hi all. > > I am a bit confused on what I get with this function. > I finished my first project but I did not understand what exactly the > > _snd_pcm_channel_area at > > http://www.alsa-project.org/alsa-doc/alsa-lib/struct__snd__pcm__channel__area.html > > does. > > There are 3 fields in the documentation. > > addr, first and step. > > It seems that addr is the memory address of the channel samples... so > far so good. The "step" is the distance between 2 sample (but I am not > sure) and the least, "first", I could not figure out what does it means. This information is needed to understand how the multi-channel samples are assigned in a stream. The first is the offset of the channel position to the given addr. The step is the bytes to the next sample of that channel. For example, suppose you have a 2-channel stereo interleaved stream with 16bit samples. Then you'll have an array of snd_pcm_channel_area with two elements, for left and right channels, containing like area[0].addr = base_address; addr[0].first = 0; addr[0].step = 4; addr[1].addr = base_address; addr[1].first = 2; addr[1].step = 4; Both channels share the same base address but have the different "first" offset bytes. The step size is 4 = #chanel * sample-size. For a non-interleaved stereo stream, it'll look like addr[0].addr = base_addr_0; addr[0].first = 0; addr[0].step = 2; addr[1].addr = base_addr_1; addr[1].first = 0; addr[1].step = 2; Thus it looks like two mono streams with 16bit samples. HTH, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel