On Tue, 08 Nov 2016 07:45:07 +0100, Hermes Zhang wrote: > > Hi, > > I'm a new in alsa plugin develop. Now I'm try to implement an I/O plugin for my platform in alsa. I can config the alsa plugin and start it, but when I'm deal with the data in the transfer api, I could not flush the data to the endpoint, e.g. .wav file. > > I run below command to test my plugin: > > arecord -D my_plug -c 1 -f S16_LE raw > > I want to save the audio data to a wav file by my plugin. Then in my code, I try to write the data to the area structure like this: > > static snd_pcm_sframes_t > my_read (snd_pcm_ioplug_t * io, > const snd_pcm_channel_area_t * areas, > snd_pcm_uframes_t offset, snd_pcm_uframes_t size) > { > /* I got the audio data from other api here */ > > memcpy(areas->addr + areas->first + areas->step * offset, my_data, size); Both the first and the step fields are in bits, not in bytes. You need to divide by 8: areas->addr + (areas->first + areas->step * offset) / 8 Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel