[alsa-devel] Still have choppy audio using 1.0.17

Gustavo da Silva Serra gustavo.serra at tet.com.br
Wed Jul 16 16:19:02 CEST 2008

stan escreveu:
> Gustavo da Silva Serra wrote:
>>> _______________________________________________
>> It silences a whole period because the pointer inside aloop behaves like 
>> that. Logging the pointer inside aloop I discovered that it is 
>> incremented so fast inside timer function that when pointer function is 
>> called, the pointer is not being incremented anymore. It is like a 
>> concurrency issue: first the pointer will be incremented many times, 
>> after that, the pointer function will be called many times with the same 
>> pointer value. Later, the pointer will be incremented some more, and so 
>> on...
>> I wonder if this is not the problem, logging the pointer for my sound 
>> card I see a different behavior: the pointer function return offset 
>> between two periods.
>> _______________________________________________
> Sounds like this is a critical section that has no 
> protection.  So the sequence is messed up.  In the 
> regular sound card, there must be a semaphore or block 
> to prevent this kind of behavior.  You could probably 
> add the logic from the regular card to the aloop 
> function and fix it.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
I will add that to the list of things I am trying, thanks : )
I wish I could understand the silencer function seems to fills the 
buffer with zeroes to the left of the playback offset. Why it doesn't 
care where is the capture pointer. Very strange. It would be antoher 
approach to the problem. Everything that I am trying are workarounds to 
the problem, instead of understanding why the problem happens and why it 
seems that the aloop behavior (returning only pointers to full periods) 
is the cause of the problem.

Thanks again.

More information about the Alsa-devel mailing list