#ifndef CGE_SAMPLE_H #define CGE_SAMPLE_H #ifdef __cplusplus extern "C" { #endif #include #include enum CgeSampleFormat { CGE_SAMPLE_UNKNOWN, /* Invalid or unknown format */ CGE_SAMPLE_S8, /* 8-bit signed integer, range: -128 to 127 */ CGE_SAMPLE_U8, /* 8-bit unsigned integer, range: 0 to 255 */ CGE_SAMPLE_S16, /* 16-bit signed integer, range: -32768 to 32767 */ CGE_SAMPLE_U16, /* 16-bit unsigned integer, range: 0 to 65535 */ CGE_SAMPLE_S24, /* 24-bit signed integer */ CGE_SAMPLE_U24, /* 24-bit unsigned integer */ CGE_SAMPLE_S32, /* 32-bit signed integer */ CGE_SAMPLE_U32, /* 32-bit unsigned integer */ CGE_SAMPLE_F32, /* 32-bit IEEE 754 float */ CGE_SAMPLE_F64, /* 64-bit IEEE 754 double */ }; typedef struct CgeSampleBuf { void *data; int format; size_t count; size_t stride; } CgeSampleBuf; size_t CgeSampleInitLayout(CgeSampleBuf *buf, int format, size_t count); float CgeSampleGetF32(const CgeSampleBuf *buf, size_t index); void CgeSampleSetF32(CgeSampleBuf *buf, size_t index, float value); int16_t CgeSampleGetS16(const CgeSampleBuf *buf, size_t index); void CgeSampleSetS16(CgeSampleBuf *buf, size_t index, int16_t value); void CgeSampleConvert(void *src, int srcFormat, size_t srcStride, void *dst, int dstFormat, size_t dstStride, size_t count); #ifdef __cplusplus } #endif #endif /* CGE_SAMPLE_H */