[alsa-devel] iec958 and 24-bit audio

Jaroslav Kysela perex at perex.cz
Mon Nov 1 21:24:42 CET 2010

On Mon, 1 Nov 2010, pl bossart wrote:

>>> [alsa-lib]$ aplay -Diec958 file24bits.wav
>>> aplay: set_params:1059: Sample format non available
>>> Available formats:
>>> - S16_LE
>>> - S32_LE
>>> Is there an built-in assumption that the iec958 device can only take
>>> as input what the slave hardware device supports?
>> Use 'plug:iec958' device if you want to do the format conversion (from
>> 24-bit to 32-bit format).
> That seems to work, but what I was asking is if there's a direct path
> without conversion? With plug:iec958 there's a conversion to 32-bits
> and then you drop the lsb.

Almost all sound bridge chips works with 16-bit or 32-bit samples because 
it's more compatible with analog converters and the handling is more 
simple than for 3-byte formats. The conversion from the 32-bit format to 
the 32-bit S/PDIF frame is done inside hw (dropping the LSB, add S/PDIF 
frame status bits). Some hardware also supports raw S/PDIF frames 

> Also PulseAudio seems to rely on iec958 and when it doesn't work it
> tries with plug:iec958. What's the recommended way of using this
> device? Should we always open plug:iec958?

You can detect which formats are supported (like aplay does) and use the 
appropriate format to avoid using the plug layer in alsa-lib.


Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.

More information about the Alsa-devel mailing list