snd_pcm_period_elapsed

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

 



>>> do snd_pcm_period_elapsed really handle the case when more than one period
>>> are elasped ?
>>>
>>> For au88x0 , each substream have four sets of hardware registers ,  it seem
>>> that the driver can recover lost interrupt with no underrun when using very
>>> small period size
>>>
>>>
>>> http://www.alsa-project.org/~tiwai/writing-an-alsa-driver/ch05s07.html#pcm-interface-interrupt-handler-boundary <http://www.alsa-project.org/%7Etiwai/writing-an-alsa-driver/ch05s07.html#pcm-interface-interrupt-handler-boundary>
>>>
>>> On calling snd_pcm_period_elapsed()
>>>
>>> In both cases, even if more than one period are elapsed, you don't have to
>>> call snd_pcm_period_elapsed() many times. Call only once. And the pcm layer
>>> will check the current hardware pointer and update to the latest status.

>> Yes, the new code handles more alapsed periods, too. The in_interrupt
>> check is mainly for situations when period count == 1 and it compares
>> expected next hw_ptr for interrupt with hw_ptr computed from the hw_base
>> and actual position in the ring buffer.

>> 						Jaroslav

The value "delta" returned by vortex_adbdma_bufshift() seem to be the
number of sub-buffer(periods) elapsed
 ( the value can be 0 , 1 , 2 or 3 )

when aplay using very small period_size (e.g. 16 ) ,
the driver write message in system log when delta > 1 (i.e. more than
1 period have been elapsed )
but the sound is still ok since there are two more periods in the sub-buffer

But I cannot see any code in snd_pcm_period_elasped() add two period
size to hw_ptr
_______________________________________________
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