Re: Questions about writing a new ALSA driver for a very limitted device

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

 



At Thu, 26 Apr 2007 15:30:41 -0700 (PDT),
Tim Harvey wrote:
> 
> Thanks to the help I've gotten on this list my alsa driver is working great.  I
> got a little hung up not realizing that the alsa core basically provides
> everything you need to implement your own circular buffer if you need to use an
> intermediate buffer.
> 
> The only question I still have is that if alsa allocates your DMA buffer for
> you based on snd_pcm_hardware_t buffer_bytes_max what exactly does
> snd_pcm_lib_preallocate_pages_for_all allocate buffers for?  Does this allocate
> the buffers that would be passed to the copy callback?

hardware.buffer_bytes_max can be really big.  Many hardwares have no
hardware limitation, i.e. can be 4GB or more in theory.
The paramters passed to preallocator is the "reasonable" buffer sizes
for normal uses.

Without preallocator, you'll have to allocate buffer at each open.
Particularly in the case of contiguous pages, it gets always more
difficult because the whole memory area gets more fragmented.  Thus,
you'd like to preallocate the buffer and keep that area for later
use.

Currently, there is a constraint that the max buffer size is limited
by the preallocated size (if any), so a buffer bigger than
preallocated won't work.  I don't know why this constraint exists, and
I believe it's fine to remove it.  (You can see FIXME comment there
indeed)


Takashi
_______________________________________________
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