#ifndef _opus_head_h_ #define _opus_head_h_ #include #include #if defined(__cplusplus) extern "C" { #endif struct opus_head_t { uint8_t version; uint8_t channels; uint16_t pre_skip; uint32_t input_sample_rate; int16_t output_gain; uint8_t channel_mapping_family; uint8_t stream_count; uint8_t coupled_count; uint8_t channel_mapping[8]; }; /// @return >0-ok, <=0-error int opus_head_save(const struct opus_head_t* opus, uint8_t* data, size_t bytes); /// @return >0-ok, <=0-error int opus_head_load(const uint8_t* data, size_t bytes, struct opus_head_t* opus); static inline int opus_head_channels(const struct opus_head_t* opus) { return 0 == opus->channels ? 2 : opus->channels; } int opus_packet_getframes(const void* data, size_t len, int (*onframe)(uint8_t toc, const void* frame, size_t size), void* param); #if defined(__cplusplus) } #endif #endif /* !_opus_head_h_ */