diff --git a/demod/mod/demod_mod.c b/demod/mod/demod_mod.c index 529796f..51e3538 100644 --- a/demod/mod/demod_mod.c +++ b/demod/mod/demod_mod.c @@ -257,11 +257,13 @@ float read_wav_header(pcm_t *pcm, FILE *fp) { int sample_rate = 0, bits_sample = 0, channels = 0; if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "RIFF", 4)) return -1; + if (strncmp(txt, "RIFF", 4) && strncmp(txt, "RF64", 4)) return -1; + if (fread(txt, 1, 4, fp) < 4) return -1; // pos_WAVE = 8L if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "WAVE", 4)) return -1; + if (strncmp(txt, "WAVE", 4)) return -1; + // pos_fmt = 12L for ( ; ; ) { if ( (byte=fgetc(fp)) == EOF ) return -1; diff --git a/demod/multi/demod_base.c b/demod/multi/demod_base.c index c95c9f4..9a68d94 100644 --- a/demod/multi/demod_base.c +++ b/demod/multi/demod_base.c @@ -256,11 +256,13 @@ float read_wav_header(pcm_t *pcm) { int sample_rate = 0, bits_sample = 0, channels = 0; if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "RIFF", 4)) return -1; + if (strncmp(txt, "RIFF", 4) && strncmp(txt, "RF64", 4)) return -1; + if (fread(txt, 1, 4, fp) < 4) return -1; // pos_WAVE = 8L if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "WAVE", 4)) return -1; + if (strncmp(txt, "WAVE", 4)) return -1; + // pos_fmt = 12L for ( ; ; ) { if ( (byte=fgetc(fp)) == EOF ) return -1; diff --git a/scan/dft_detect.c b/scan/dft_detect.c index 8feb325..e3b7046 100644 --- a/scan/dft_detect.c +++ b/scan/dft_detect.c @@ -386,11 +386,13 @@ static int read_wav_header(FILE *fp, int wav_channel) { int byte, p=0; if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "RIFF", 4)) return -1; + if (strncmp(txt, "RIFF", 4) && strncmp(txt, "RF64", 4)) return -1; + if (fread(txt, 1, 4, fp) < 4) return -1; // pos_WAVE = 8L if (fread(txt, 1, 4, fp) < 4) return -1; - if (strncmp(txt, "WAVE", 4)) return -1; + if (strncmp(txt, "WAVE", 4)) return -1; + // pos_fmt = 12L for ( ; ; ) { if ( (byte=fgetc(fp)) == EOF ) return -1;