Загрузка данных


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--;
        }
    }
}