Re: Difference between boundary and buffer_size

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

 



On 11/03/2016 05:45 PM, Lars-Peter Clausen wrote:
> On 11/03/2016 10:11 AM, Alan Young wrote:
>> The code in the kernel, in /pcm_lib.c/ and /pcm_native.c/, uses fields
>> buffer_size and boundary in struct snd_pcm_runtime. As far as I can see,
>> there are always initialized to the same value. In what circumstance might
>> they be different? There is clearly some relationship to hw_ptr_base, as
>> illustrated by this repeated snipped from snd_pcm_update_hw_ptr0()
>>
>>         hw_base += runtime->buffer_size;
>>         if (hw_base >= runtime->boundary) {
>>             hw_base = 0;
>>             crossed_boundary++;
>>         }
>>         new_hw_ptr = hw_base + pos;
> 
> boundary is actually set to the largest possible power-of-two multiple of
> buffer_size. This is done so that the hw_ptr that is reported to userspace
> is continuously increasing (up to boundary) and does not wrap around after
> just one buffer_size has elapsed. This is done so you can measure the
> distance between two hw_ptr that were captured at different points in time,
> but are more than half a buffer_size away from each other.

And the pointer that is reported to userspace is called appl_ptr, sorry for
the confusion.

_______________________________________________
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