Add support for waveformatex files
This is used for multichannel wave files.
This commit is contained in:
parent
16f75a570e
commit
f82510410d
10
wavreader.c
10
wavreader.c
@ -124,7 +124,17 @@ void* wav_read_open(const char *filename) {
|
|||||||
wr->byte_rate = read_int32(wr);
|
wr->byte_rate = read_int32(wr);
|
||||||
wr->block_align = read_int16(wr);
|
wr->block_align = read_int16(wr);
|
||||||
wr->bits_per_sample = read_int16(wr);
|
wr->bits_per_sample = read_int16(wr);
|
||||||
|
if (wr->format == 0xfffe) {
|
||||||
|
if (sublength < 28) {
|
||||||
|
// Insufficient data for waveformatex
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
skip(wr->wav, 8);
|
||||||
|
wr->format = read_int32(wr);
|
||||||
|
skip(wr->wav, sublength - 28);
|
||||||
|
} else {
|
||||||
skip(wr->wav, sublength - 16);
|
skip(wr->wav, sublength - 16);
|
||||||
|
}
|
||||||
} else if (subtag == TAG('d', 'a', 't', 'a')) {
|
} else if (subtag == TAG('d', 'a', 't', 'a')) {
|
||||||
data_pos = ftell(wr->wav);
|
data_pos = ftell(wr->wav);
|
||||||
wr->data_length = sublength;
|
wr->data_length = sublength;
|
||||||
|
Loading…
Reference in New Issue
Block a user