[alsa-devel] How to transfer data to the endpoint (e.g. .wav file) in alsa external I/O plugin
Hermes Zhang
chenhui.zhang at axis.com
Tue Nov 8 07:45:07 CET 2016
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);
}
But I could not get a correct wav file, there will be a file named "raw" but only with some wav file head, not real data include. Does anyone know anything I'm wrong? Is this the right way to handle the transfer data? Thanks.
Best Regards,
Hermes
More information about the Alsa-devel
mailing list