[alsa-devel] Playback formats; does aplay pad S16_LE, or does the hardware?
Clemens Ladisch
clemens at ladisch.de
Tue Apr 4 11:11:36 CEST 2017
Rob Nertney wrote:
> I can successfully play 32b at 32KHz and 32b at 16KHz to my I2S DAC.
>
> I can also, with the same settings as 32b at 16KHz, play 16b at 32KHz, but I
> don't think this is the way ALSA wants its data....
>
> I've learned that hw_params is responsible for describing only what the
> hardware is supposed to be capable of.
The hw_params values describe the format of the samples in memory.
(If alsa-lib does format conversion, the application and the driver see
different hw_params values.)
What the hardware does with the samples after the DMA controller has
read them from memory is of no concern to the ALSA framework.
> Does this mean the hardware needs to find a way to pad 0's on lower
> quality data for any given rate?
If the hardware is capable of that, then the driver can support 16-bit
samples. (I don't know of any I²S controller that cannot do that.)
> For example, when I play 32b @32 KHz, everything works. If I play 16b at 32KHz,
> I shouldn't change any output clocks, but will also present the data on a
> 32bit data bus as 16bits padded with 0?
Which bus? The memory bus, or the I²S bus?
Regards,
Clemens
More information about the Alsa-devel
mailing list