S24LE and S32LE format equivalency

Takashi Sakamoto o-takashi at sakamocchi.jp
Sun Dec 12 12:51:17 CET 2021


Hi,

On Sun, Dec 12, 2021 at 08:16:57PM +0900, Marios Sioutis wrote:
> Hi all,
> 
> Quick question, I was troubleshooting a 24bit USB device and got down the
> rabbit hole of sample formats. The device advertises itself as S24LE (4byte
> payload) but it appears as S32LE under alsa, something that bothered me a
> lot initially. However, If the conversion between the two formats is to just
> << 8 i.e. put a zero byte as LSB, then the two formats are essentially
> equivalent.
> 
> Is this actually the case? If yes, who performs the conversion? Is it on the
> alsa side, or the device already adds a zero byte LSB?
> 
> Thank you in advance,
> 
> Marios
 
I think the format of sample is 'left-justified' or 'right-padding' 24
bit in 32 bit frame. For the case, in ALSA PCM interface, [S|U]32 sample format is
used with 'msbits' hardware parameter. The snd-ua101 USB driver might be
an good example for the case.

 * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/sound/usb/misc/ua101.c#n615

In detail, please refer to my previous patch:

 * https://lore.kernel.org/alsa-devel/20210529033353.21641-1-o-takashi@sakamocchi.jp/

Unfortunately, as long as I know, no userspace application evaluates the
msbits parameter with sample format, however in theory the conversion
should be done in userspace in advance of transmission of audio data
frame.


Regards

Takashi Sakamoto


More information about the Alsa-devel mailing list