]> git.alsa-project.org Git - alsa-utils.git/commitdiff
Show warning if the format is changed due to the file type.
authorTakashi Iwai <tiwai@suse.de>
Thu, 1 Jul 2004 09:36:54 +0000 (09:36 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 1 Jul 2004 09:36:54 +0000 (09:36 +0000)
(e.g. WAV yields little-endian)

aplay/aplay.c

index c722d1d9fb3530cefc1ccf225c757f99afe8753c..4bc792b3e66c1dda8f64e7d081d7e378c63aa6f9 100644 (file)
@@ -51,6 +51,7 @@
 #define LLONG_MAX    9223372036854775807LL
 #endif
 
+#define DEFAULT_FORMAT         SND_PCM_FORMAT_U8
 #define DEFAULT_SPEED          8000
 
 #define FORMAT_DEFAULT         -1
@@ -359,7 +360,7 @@ int main(int argc, char *argv[])
        }
 
        chunk_size = -1;
-       rhwparams.format = SND_PCM_FORMAT_U8;
+       rhwparams.format = DEFAULT_FORMAT;
        rhwparams.rate = DEFAULT_SPEED;
        rhwparams.channels = 1;
 
@@ -693,17 +694,29 @@ static ssize_t test_wavefile(int fd, char *_buffer, size_t size)
        hwparams.channels = LE_SHORT(f->modus);
        switch (LE_SHORT(f->bit_p_spl)) {
        case 8:
+               if (hwparams.format != DEFAULT_FORMAT &&
+                   hwparams.format != SND_PCM_FORMAT_U8)
+                       fprintf(stderr, "Warning: format is changed to U8\n");
                hwparams.format = SND_PCM_FORMAT_U8;
                break;
        case 16:
+               if (hwparams.format != DEFAULT_FORMAT &&
+                   hwparams.format != SND_PCM_FORMAT_S16_LE)
+                       fprintf(stderr, "Warning: format is changed to S16_LE\n");
                hwparams.format = SND_PCM_FORMAT_S16_LE;
                break;
        case 24:
                switch (LE_SHORT(f->byte_p_spl) / hwparams.channels) {
                case 3:
+                       if (hwparams.format != DEFAULT_FORMAT &&
+                           hwparams.format != SND_PCM_FORMAT_S24_3LE)
+                               fprintf(stderr, "Warning: format is changed to S24_3LE\n");
                        hwparams.format = SND_PCM_FORMAT_S24_3LE;
                        break;
                case 4:
+                       if (hwparams.format != DEFAULT_FORMAT &&
+                           hwparams.format != SND_PCM_FORMAT_S24_LE)
+                               fprintf(stderr, "Warning: format is changed to S24_LE\n");
                        hwparams.format = SND_PCM_FORMAT_S24_LE;
                        break;
                default:
@@ -769,12 +782,21 @@ static int test_au(int fd, void *buffer)
        pbrec_count = BE_INT(ap->data_size);
        switch (BE_INT(ap->encoding)) {
        case AU_FMT_ULAW:
+               if (hwparams.format != DEFAULT_FORMAT &&
+                   hwparams.format != SND_PCM_FORMAT_MU_LAW)
+                       fprintf(stderr, "Warning: format is changed to MU_LAW\n");
                hwparams.format = SND_PCM_FORMAT_MU_LAW;
                break;
        case AU_FMT_LIN8:
+               if (hwparams.format != DEFAULT_FORMAT &&
+                   hwparams.format != SND_PCM_FORMAT_U8)
+                       fprintf(stderr, "Warning: format is changed to U8\n");
                hwparams.format = SND_PCM_FORMAT_U8;
                break;
        case AU_FMT_LIN16:
+               if (hwparams.format != DEFAULT_FORMAT &&
+                   hwparams.format != SND_PCM_FORMAT_S16_BE)
+                       fprintf(stderr, "Warning: format is changed to S16_BE\n");
                hwparams.format = SND_PCM_FORMAT_S16_BE;
                break;
        default:
@@ -1330,7 +1352,7 @@ static void voc_play(int fd, int ofs, char *name)
                        exit(EXIT_FAILURE);
                }
        }
-       hwparams.format = SND_PCM_FORMAT_U8;
+       hwparams.format = DEFAULT_FORMAT;
        hwparams.channels = 1;
        hwparams.rate = DEFAULT_SPEED;
        set_params();
@@ -1879,7 +1901,7 @@ static void playback(char *name)
                exit(EXIT_FAILURE);
        }
        if (test_au(fd, audiobuf) >= 0) {
-               rhwparams.format = SND_PCM_FORMAT_MU_LAW;
+               rhwparams.format = hwparams.format;
                pbrec_count = calc_count();
                playback_go(fd, 0, pbrec_count, FORMAT_AU, name);
                goto __end;