]> git.alsa-project.org Git - alsa-lib.git/commitdiff
test/pcm.c: Fix S24 format
authorTakashi Iwai <tiwai@suse.de>
Mon, 6 Jul 2009 06:41:00 +0000 (08:41 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 6 Jul 2009 06:41:00 +0000 (08:41 +0200)
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>
test/pcm.c

index 80e1f988a7bb99f939186ec4b89014b14d174ca6..bd7717f848332f5c9d094967294d3583ef8ccbd4 100644 (file)
@@ -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;