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 directly. > 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 ----- Jaroslav Kysela <perex@xxxxxxxx> Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel