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


#ifdef MY_CODE
void audio_convert_rate(int cur_rate, int out_rate, uint8_t *buf,
		size_t buf_sz) {
	/* XXX 16-bit stereo buffer */
	uint32_t *buf32 = (uint32_t *) buf;
	int div, i;

	if (cur_rate == out_rate) {
		return;
	}

	div = MAX(cur_rate, out_rate) / MIN(cur_rate, out_rate);
	if(div <= 0)
		return;
	if (cur_rate > out_rate) {
		for (i = buf_sz - 1; i >= 0; i--) {
			buf32[i] = buf32[i / div];
		}
	} else {
		for (i = 0; i < buf_sz; i++) {
			buf32[i] = buf32[div * i];
		}
	}
}
#else
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--;
        }
    }
}
#endif

эти функции равнозначны по результату? какая из них быстрее будет работать?