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