Re: arecord: does hardware or software throw away unused

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

 



So right now my buffer is 32768, and I am filling the dma_area, firing an
IRQ every 2048 Bytes, which aligns to 32 frames of 32b, 16ch data @ 16khz.
When I don't specify a lower number of channels, it works as expected (at
least the capture sounds correct). Less than 16, the capture goes too fast.
If I define my hw_params like this, is it correct for multiple channels?

channels_min = 1
channels_max = 16
buffer_bytes_max = 32768
period_bytes_min = 32768/16
period_bytes_max = 32768/16
periods_min = 16
periods_max = 16

Everything is really associated around a 2048 Byte IRQ. The IRQ handler is
simply snd_pcm_period_elapsed (again, called every BUF/16, or 2048 bytes);
the pointer callback is the number of frames (as you mentioned, based upon
max_channels) currently copied into dma_area. I can't identify where the
speedup would come from when i specify lesser channels

Thanks,
Rob


On Wed, Sep 14, 2016 at 3:29 AM, Clemens Ladisch <clemens@xxxxxxxxxx> wrote:

> Rob Nertney wrote:
> > "Returned in frames". Does this mean returned in MAX_CHANNELS frames?
>
> One frames contains all channels.  The number of channels was set with
> the hw_params callback, and will never be outside the constraints that
> your driver has provided.
>
>
> Regards,
> Clemens
>
_______________________________________________
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