[alsa-devel] Question about pcm_formats[] array in sound/core/pcm_misc.c
Jaroslav Kysela
perex at perex.cz
Thu Dec 13 09:41:01 CET 2007
On Tue, 11 Dec 2007, Timur Tabi wrote:
> I'm confused about the entries for unsigned 24-bit sound in the pcm_formats[] array:
>
> [SNDRV_PCM_FORMAT_U24_BE] = {
> .width = 24, .phys = 32, .le = 0, .signd = 0,
> .silence = { 0x80, 0x00, 0x00 },
> },
>
> and
>
> [SNDRV_PCM_FORMAT_U24_3BE] = {
> .width = 24, .phys = 24, .le = 0, .signd = 0,
> .silence = { 0x80, 0x00, 0x00 },
> },
>
> SNDRV_PCM_FORMAT_U24_BE means a 24-bit sample packed into a 32-bit word. So I
> presume that if the 24-bit sample is:
>
> 0x123456
>
> then when that sample is written to memory, it looks like this:
>
> X X + 1 X + 2 X + 3
> 0x00 0x12 0x34 0x56
>
> (where X is some address in memory).
>
> If that's so, shouldn't the entry for SNDRV_PCM_FORMAT_U24_BE look like this:
>
> [SNDRV_PCM_FORMAT_U24_BE] = {
> .width = 24, .phys = 32, .le = 0, .signd = 0,
> .silence = { 0x00, 0x80, 0x00, 0x00 },
> }, ^^^^^^
Good catch. It looks like a bug and your proposal seems to be correct.
Jaroslav
-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project
More information about the Alsa-devel
mailing list