[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