|
|
|
@ -89,7 +89,7 @@ const int size) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
++audio_out_buffer_index; |
|
|
|
++audio_out_buffer_index; |
|
|
|
audio_out_buffer_index %= 2048; |
|
|
|
audio_out_buffer_index %= audio->FFTbufferSize; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -107,6 +107,7 @@ void* input_alsa(void* data) { |
|
|
|
snd_pcm_get_params(handle, &buffer_size, &period_size); |
|
|
|
snd_pcm_get_params(handle, &buffer_size, &period_size); |
|
|
|
|
|
|
|
|
|
|
|
int16_t buf[period_size]; |
|
|
|
int16_t buf[period_size]; |
|
|
|
|
|
|
|
int32_t buffer32[period_size]; |
|
|
|
frames = period_size / ((audio->format / 8) * CHANNELS_COUNT); |
|
|
|
frames = period_size / ((audio->format / 8) * CHANNELS_COUNT); |
|
|
|
//printf("period size: %lu\n", period_size);
|
|
|
|
//printf("period size: %lu\n", period_size);
|
|
|
|
//exit(0);
|
|
|
|
//exit(0);
|
|
|
|
@ -128,7 +129,23 @@ void* input_alsa(void* data) { |
|
|
|
audio->audio_out_r[n] = buf[i + 1]; |
|
|
|
audio->audio_out_r[n] = buf[i + 1]; |
|
|
|
} |
|
|
|
} |
|
|
|
n++; |
|
|
|
n++; |
|
|
|
if (n == 2048 - 1)n = 0; |
|
|
|
if (n == audio->FFTbufferSize - 1) n = 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 32: |
|
|
|
|
|
|
|
err = snd_pcm_readi(handle, buffer32, frames); |
|
|
|
|
|
|
|
for (uint16_t i = 0; i < frames * 2; i += 2) { |
|
|
|
|
|
|
|
if (audio->channels == 1) { |
|
|
|
|
|
|
|
audio->audio_out_l[n] = (buffer32[i] / pow(2,16)) / 2; |
|
|
|
|
|
|
|
audio->audio_out_l[n] += (buffer32[i + 1] / pow(2,16)) / 2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//stereo storing channels in buffer
|
|
|
|
|
|
|
|
if (audio->channels == 2) { |
|
|
|
|
|
|
|
audio->audio_out_l[n] = buffer32[i] / pow(2,16); |
|
|
|
|
|
|
|
audio->audio_out_r[n] = buffer32[i + 1] / pow(2,16); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
n++; |
|
|
|
|
|
|
|
if (n == audio->FFTbufferSize - 1) n = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|
|