Accessing alsa user space buffer from external io type plugin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I am debugging an userspace external io type plugin, written for an ARM
based board where the plugin
interacts with DSP directly using shared memory.

Every time I have to send period_size data to the DSP, I have my own
write/read methods to do so.

I am having a problem accessing the alsa ring buffer, my transfer function
looks like following.


static   char * temp;
static snd_pcm_sframes_t alsa_transfer(snd_pcm_ioplug_t *io,
                   const snd_pcm_channel_area_t *areas,
                   snd_pcm_uframes_t offset,
                   snd_pcm_uframes_t size)
{

           ......

         temp = malloc(period_size);
         memcpy(temp,  unsigned char *)areas->addr + (areas->first +
areas->step * offset) / 8, period_size);
          write_to_dsp(temp, period_size);
          .......
}

All the book keeping is done properly, the first chunk of data is sent
properly to DSP and pointer() returns correct value,
next time when transfer is called, the memcpy gives segfault. ALSA buffer is
an interleaved buffer and I am not using mmap
mode. Any idea what might be wrong?

When I do something like this:
        memcpy(temp,  "test data test data", period_size);
the data is sent properly to DSP, but alsa buffer data is not getting
accessed properly.





-- 

Regards,
Sandeep.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux