added support for variable FFTbuffer in all audio inputs

master
karlstav 7 years ago
parent 7fa985fdc6
commit 54a7d0d1a7
  1. 31
      input/alsa.c
  2. 2
      input/shmem.c
  3. 2
      input/sndio.c

@ -35,11 +35,11 @@ snd_pcm_uframes_t* frames) {
exit(EXIT_FAILURE);
}
if ((err = snd_pcm_prepare (*handle)) < 0) {
fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
snd_strerror (err));
exit (EXIT_FAILURE);
}
if ((err = snd_pcm_prepare (*handle)) < 0) {
fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
snd_strerror (err));
exit (EXIT_FAILURE);
}
// getting actual format
snd_pcm_hw_params_get_format(params, (snd_pcm_format_t*)&sample_rate);
@ -89,7 +89,7 @@ const int size) {
}
++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);
int16_t buf[period_size];
int32_t buffer32[period_size];
frames = period_size / ((audio->format / 8) * CHANNELS_COUNT);
//printf("period size: %lu\n", period_size);
//exit(0);
@ -128,7 +129,23 @@ void* input_alsa(void* data) {
audio->audio_out_r[n] = buf[i + 1];
}
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;
default:

@ -68,7 +68,7 @@ void* input_shmem(void* data)
audio->audio_out_r[n] = mmap_area->buffer[i + 1];
}
n++;
if (n == 2048 - 1) n = 0;
if (n == audio->FFTbufferSize - 1) n = 0;
}
if (audio->terminate == 1) {
break;

@ -52,7 +52,7 @@ void* input_sndio(void* data)
audio->audio_out_l[n] = buf[i];
audio->audio_out_r[n] = buf[i + 1];
}
n = (n + 1) % 2048;
n = (n + 1) % audio->FFTbufferSize;
}
}

Loading…
Cancel
Save