#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_new_file(const char *path, xas_audio_format format, int flags); xas_audio_stream *xas_riff_open_file(const char *path, int flags); xas_audio_stream *xas_riff_open_fd(int fd); #endif /* _XAS_RIFF_H */