mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
test/pcm.c: Fix S24 format
S24 format has different bit width and physical width. For calculating the byte offset for big-endian packing, the latter value has to be used. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
d23845e563
commit
3d0843e8ce
1 changed files with 2 additions and 1 deletions
|
|
@ -40,6 +40,7 @@ static void generate_sine(const snd_pcm_channel_area_t *areas,
|
|||
|
||||
unsigned int maxval = (1 << (snd_pcm_format_width(format) - 1)) - 1;
|
||||
int bps = snd_pcm_format_width(format) / 8; /* bytes per sample */
|
||||
int phys_bps = snd_pcm_format_physical_width(format) / 8;
|
||||
|
||||
/* verify and prepare the contents of areas */
|
||||
for (chn = 0; chn < channels; chn++) {
|
||||
|
|
@ -63,7 +64,7 @@ static void generate_sine(const snd_pcm_channel_area_t *areas,
|
|||
/* Generate data in native endian format */
|
||||
for (i = 0; i < bps; i++) {
|
||||
#if (__BYTE_ORDER == __BIG_ENDIAN)
|
||||
*(samples[chn] + bps - 1 - i) = (res >> i * 8) & 0xff;
|
||||
*(samples[chn] + phys_bps - 1 - i) = (res >> i * 8) & 0xff;
|
||||
#else
|
||||
|
||||
*(samples[chn] + i) = (res >> i * 8) & 0xff;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue