The I2S and DMA format asymmetry sounds like what I'd be after. Do you have any pointers for APIs / keywords to look around for in the code to see how this should be set up? Is such format conversion supposed to be happening in hardware itself, or the CPU when accessing the DMA buffer has the chance to do the conversion?
The relevant documentation and code I found so far would be:
https://www.raspberrypi.org/documentation/hardware/ raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf https://github.com/raspberrypi/linux/blob/rpi-4. 4.y/sound/soc/bcm/bcm2835-i2s.c
I can't locate any relevant bits of code or information that'd indicate capabilities of sample format conversion...
Thank you, Giedrius.
On Thu, Dec 29, 2016 at 7:53 AM, Clemens Ladisch clemens@ladisch.de wrote:
Giedrius Trainavičius wrote:
It uses I2S for sending / receiving audio. However, the master clock on
our
sound card is generated by the ADC, which supports only 24 bit data, so getting other sample formats is not possible.
The I2S sample format need not be the same as what the DMA controller reads/writes from/to memory.
A question on 'plug' - it accepts 'nearest' as the argument for format, rate, what happens in case the slave pcm stream supports the exact same format as requested by user software?
The plug plugin instantiates the actual conversion plugins only as needed; with no conversion, it vanishes entirely.
Regards, Clemens