X-Git-Url: https://git.ao2.it/wav_header.git/blobdiff_plain/910f8bcce017cec42b7ebc6d7cf757ca3fa5442a..HEAD:/wav_header.c diff --git a/wav_header.c b/wav_header.c index 1aac2e9..2a90ea7 100644 --- a/wav_header.c +++ b/wav_header.c @@ -11,9 +11,7 @@ */ #include -#include #include -#include #include @@ -58,7 +56,7 @@ struct fmt { uint16_t wBitsPerSample; uint16_t cbSize; uint8_t extradata[]; -} __attribute__((__packed__)); +} __attribute__((__packed__)); struct WAVE { char fmtheader[8]; @@ -81,6 +79,18 @@ struct extradata { }; +static inline void fwrite_le16(uint16_t x, FILE *file) +{ + uint16_t tmp = htole16(x); + fwrite(&tmp, sizeof(tmp), 1, file); +} + +static inline void fwrite_le32(uint32_t x, FILE *file) +{ + uint32_t tmp = htole32(x); + fwrite(&tmp, sizeof(tmp), 1, file); +} + void write_wav_header(FILE *file, struct fmt *format, struct extradata *extradata, unsigned data_len) { @@ -106,27 +116,27 @@ void write_wav_header(FILE *file, struct fmt *format, /* RIFF */ fwrite(&r.riffheader, 1, 4, file); - fwrite(&htole32(r.WAVElen), 4, 1, file); + fwrite_le32(r.WAVElen, file); /* WAVE */ fwrite(&w.fmtheader, 1, 8, file); - fwrite(&htole32(w.fmtlen), 4, 1, file); + fwrite_le32(w.fmtlen, file); /* fmt */ - fwrite(&htole16(format->wFormatTag), 2, 1, file); - fwrite(&htole16(format->nChannels), 2, 1, file); - fwrite(&htole32(format->nSamplesPerSec), 4, 1, file); - fwrite(&htole32(format->nAvgBytesPerSec), 4, 1, file); - fwrite(&htole16(format->nBlockAlign), 2, 1, file); - fwrite(&htole16(format->wBitsPerSample), 2, 1, file); - fwrite(&htole16(format->cbSize), 2, 1, file); + fwrite_le16(format->wFormatTag, file); + fwrite_le16(format->nChannels, file); + fwrite_le32(format->nSamplesPerSec, file); + fwrite_le32(format->nAvgBytesPerSec, file); + fwrite_le16(format->nBlockAlign, file); + fwrite_le16(format->wBitsPerSample, file); + fwrite_le16(format->cbSize, file); /* extradata */ fwrite(extradata->data, 1, extradata->len, file); /* data */ fwrite(&d.dataheader, 1, 4, file); - fwrite(&htole32(d.datalen), 4, 1, file); + fwrite_le32(d.datalen, file); } int main(void)