[alsa-devel] big latency and buffering question
Achim Herrmann
Achim-Herrmann at t-online.de
Fri Oct 2 12:55:47 CEST 2009
Hi all,
I'm completely new to sound and ALSA development and I have to develop an
application which is capturing periodically a small amount of audio data (e.g.
64 frames), doing some processing and doing playback of the result.
I started with ALSA example "pcm.c" to see if ALSA can meet these
requirements. During investigation i found out, that up to a choosen buffer
size of 140ms, generated sine sound is fine. Below 140ms, sound is stuttering,
independent of call method I'm using.
For buffer size of 140ms I found out, that target buffer size is 6174 frames (at
44.1kHz sample rate), period size is 3087 frames and loop inside
write_and_poll function is calculated every 70 ms and 3087 frames are written.
Think this is doublebuffering then, right?
But if I now choose a buffersize of 139 ms or lower, target buffer size and
period size are always the same. So no double buffering anymore and sound is
stuttering.
So, currently I'm far away from goal. I'd like to have a buffer size of e.g.
128 frames (2ms). Thus, period size should be 64 frames and loop should be
calculated every 1ms. (If necessary I would use Linux-RT)
If I choose a buffersize of 2ms, sound is far away from being sine :-)
- Can I use ALSA for a application described in first sentence above?
- What do I have to change in pcm.c to be able to create a sine signal using a
buffersize of e.g. 128 frames and a period size of 64 frames?
Any hints are appreciated
Thanks in advance
Achim
More information about the Alsa-devel
mailing list