- WRITE_U32(headbuf + 16, 16);
- WRITE_U16(headbuf + 20, 1); /* format */
- WRITE_U16(headbuf + 22, channels);
- WRITE_U32(headbuf + 24, samplerate);
- WRITE_U32(headbuf + 28, bytespersec);
- WRITE_U16(headbuf + 32, align);
- WRITE_U16(headbuf + 34, BITS);
- memcpy(headbuf + 36, "data", 4);
- WRITE_U32(headbuf + 40, size - 44);
-}
-
-static ssize_t wav_convert(char *inbuf, size_t len, struct filter_node *fn)
-{
- size_t copy;
- int *bof = fn->private_data;
-
- if (*bof) {
- if (!len)
- return 0;
- make_wav_header(fn->fc->channels, fn->fc->samplerate, fn);
- fn->loaded = WAV_HEADER_LEN;
- *bof = 0;
-// return 0;
- }
- copy = PARA_MIN(len, fn->bufsize - fn->loaded);
- memmove(fn->buf + fn->loaded, inbuf, copy);
- fn->loaded += copy;
-// PARA_DEBUG_LOG("len = %d, copy = %d\n", len, copy);
- return copy;
+ write_u32(headbuf + 16, 16); /* 16 + extra format bytes (zero) */
+ write_u16(headbuf + 20, 1); /* format (1 == PCM/uncompressed) */
+ write_u16(headbuf + 22, channels);
+ write_u32(headbuf + 24, sample_rate);
+ write_u32(headbuf + 28, bytespersec);
+ write_u16(headbuf + 32, align); /* number of bytes per sample slice */
+ write_u16(headbuf + 34, BITS); /* significant bits per sample */
+ memcpy(headbuf + 36, "data", 4); /* chunk ID */
+ write_u32(headbuf + 40, size - 44); /* chunk size */