#ifndef _Format_WAVE_H
#define _Format_WAVE_H

#include <stdint.h>

/*-----------------
 * RIFFwave header
 */

typedef union
{
	char	c[4];
	int32_t i;
} wav_tag_t;

typedef struct
{
	wav_tag_t   riff;
	int32_t     size;
	wav_tag_t   tag;
} wav_hdr_t;

typedef struct
{
	// wave specific
	wav_tag_t   fmt;
	int32_t     fmtsize;
	uint16_t    format;
	int16_t     channels;
	int32_t     samplerate;
	int32_t     bytespersec;
	int16_t     blocksize;
	int16_t     bitspersample;
} wav_fmt_t;

typedef struct
{
	wav_tag_t   riff;
	int32_t     size;
	wav_tag_t   tag;
	// wave specific
	wav_tag_t   fmt;
	int32_t     fmtsize;
	uint16_t    format;
	int16_t     channels;
	int32_t     samplerate;
	int32_t     bytespersec;
	int16_t     blocksize;
	int16_t     bitspersample;
} wave_t;

static const wav_tag_t TagRIFF = {{'R','I','F','F'}};
static const wav_tag_t TagWAVE = {{'W','A','V','E'}};
static const wav_tag_t Tagfmt  = {{'f','m','t',' '}};
static const wav_tag_t Tagdata = {{'d','a','t','a'}};

#endif
