- cwc->channels = (unsigned)a[22];
- cwc->sample_rate = a[24] + (a[25] << 8) + (a[26] << 16) + (a[27] << 24);
- bps = a[34] + ((unsigned)a[35] << 8);
- if (bps != 8 && bps != 16) {
+ cwc->channels = a[22];
+ format_code = read_u16(a + 20);
+ if (format_code != 1 && format_code != 3) {
+ cwc->state = CWS_NO_HEADER;
+ goto out;
+ }
+ cwc->sample_rate = read_u32(a + 24);
+ bps = read_u16(a + 34);
+ if (bps != 8 && bps != 16 && bps != 32) {