void audio_convert_rate(int cur_rate, int out_rate, uint8_t *buf, size_t buf_sz) {
if (cur_rate == out_rate) return;
int div = MAX(cur_rate, out_rate) / MIN(cur_rate, out_rate);
if (div <= 0) return;
uint32_t *buf32 = (uint32_t *) buf;
if (cur_rate > out_rate) {
size_t src_idx = 0;
for (size_t i = 0; i < buf_sz; i++) {
buf32[i] = buf32[src_idx];
src_idx += div;
}
} else {
int src_idx = (buf_sz / div) - 1;
for (int i = buf_sz - 1; i >= 0; i--) {
buf32[i] = buf32[src_idx];
if (i % div == 0) src_idx--;
}
}
}