[alsa-devel] Still have choppy audio using 1.0.17

Gustavo da Silva Serra gustavo.serra at tet.com.br
Mon Jul 14 19:57:13 CEST 2008


I have discovered something else. Choppy audio occurs when 
snd_pcm_playback_silence, in pcm_lib.c, will silence the same period 
than the capture pointer is pointing at. I am printing this variables 
"ofs" in snd_pcm_playback_silence and what is returned from 
snd_card_loopback_pointer when the substream is capture.

How snd_pcm_playback_silence is supposed to work? Must it silence the 
next period from the playback pointer? How is ensured that this 
situation (ofs == capture pointer) does not happen with sound cards?

Thanks ANY help... any...

Gustavo da Silva Serra escreveu:
> I forgot a very important detail, when I can choose the output plugin 
> (alsa or oss in Kaffeine, for example), only alsa has choppy audio. oss 
> plugin works perfectly, only using kernel module emulation.
>
> Gustavo da Silva Serra escreveu:
>   
>> I have tried to implement the solution you proposed. However I still 
>> get choppy audio, just like before, otherwise the sound is clear.
>>
>> Basically I moved the timer to the cable struct, and updated the timer 
>> function to update both playback and capture.
>> I am sending the code attached so you can see if I implemented what 
>> you suggested. The code is not very clean, nor completely functional, 
>> as I never programmed to kernel before, and might cause kernel panic 
>> when closing a stream.
>>
>> Any other suggestions?
>> Thanks for the help and the attention.
>>
>> Takashi Iwai escreveu:
>>     
>>> At Wed, 25 Jun 2008 08:24:33 -0300,
>>> Gustavo da Silva Serra wrote:
>>>  
>>>       
>>>> If I keep the difference between the playback and capture pointers 
>>>> at one period, no choppy audio occurs. If the difference is 0, 2 or 
>>>> 5 periods for example, choppy audio will always occur. Any ideas why?
>>>>     
>>>>         
>>> Through a quick look at the code, it's likely the problem of the
>>> timing of timer handlers for playback/capture streams.  In the current
>>> code, the timer handlers are invoked individually.
>>>
>>> One possible fix would be to force to synchronize the updates of both
>>> directions instead of individual timers.  That is, share the same
>>> timer for the connected streams so that the update order is
>>> guaranteed.
>>>
>>>
>>> Just my $0.02.
>>>
>>> Takashi
>>> _______________________________________________
>>> Alsa-devel mailing list
>>> Alsa-devel at alsa-project.org
>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>       
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
> __________ NOD32 3241 (20080704) Information __________
>
> This message was checked by NOD32 antivirus system.
> http://www.eset.com
>
>
>
>   



More information about the Alsa-devel mailing list