added support for variable FFTbuffer in all audio inputs

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

@ -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:

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

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

Loading…
Cancel
Save