#ifndef _XAS_RIFF_H #define _XAS_RIFF_H #include #include #include #define XAS_RIFF_HEADER_MAIN_ID "RIFF" #define XAS_RIFF_HEADER_WAVE_ID "WAVE" #define XAS_RIFF_HEADER_WAVE_FMT_ID "fmt " #define XAS_RIFF_HEADER_WAVE_DATA_ID "data" #define XAS_RIFF_WAVE_DEFAULT_TYPE 1 #pragma pack(1) #pragma pack(push) typedef struct _xas_riff_chunk { char id[4]; uint32_t size; } xas_riff_chunk; typedef struct _xas_riff_main_chunk { xas_riff_chunk header; char type[4]; } xas_riff_main_chunk; typedef struct _xas_riff_wave_chunk { xas_riff_chunk header; uint16_t type, channels; uint32_t sample_rate, byte_rate; uint16_t sample_size, sample_size_bits; } xas_riff_wave_chunk; typedef struct _xas_riff_wave_header { xas_riff_main_chunk riff; xas_riff_wave_chunk wave; xas_riff_chunk data; } xas_riff_wave_header; typedef struct _xas_riff xas_riff; #pragma pack(pop) xas_audio_stream *xas_riff_file_new(const char *path, size_t sample_size, size_t sample_rate, size_t channels, int flags); #endif /* _XAS_RIFF_H */