Merge branch 'iss240' of https://github.com/karlstav/cava into iss240

master
karlstav 7 years ago
commit c71dba645e
  1. 27
      input/alsa.c

@ -96,23 +96,32 @@ const int size) {
#define FRAMES_NUMBER 256
void* input_alsa(void* data) {
int err;
int err;
struct audio_data* audio = (struct audio_data*)data;
snd_pcm_t* handle;
snd_pcm_uframes_t buffer_size;
snd_pcm_uframes_t period_size;
snd_pcm_uframes_t frames = FRAMES_NUMBER;
int16_t buf[FRAMES_NUMBER * 2];
initialize_audio_parameters(&handle, audio, &frames);
snd_pcm_get_params(handle, &buffer_size, &period_size);
int16_t buf[period_size];
frames = period_size / ((audio->format / 8) * CHANNELS_COUNT);
//printf("period size: %lu\n", period_size);
//exit(0);
// frames * bits/8 * channels
const int size = frames * (audio->format / 8) * CHANNELS_COUNT;
signed char* buffer = malloc(size);
int n = 0;
//const int size = frames * (audio->format / 8) * CHANNELS_COUNT;
signed char* buffer = malloc(period_size);
int n = 0;
while (1) {
switch (audio->format) {
case 16:
err = snd_pcm_readi(handle, buf, frames);
for (int i = 0; i < FRAMES_NUMBER * 2; i += 2) {
if (audio->channels == 1) audio->audio_out_l[n] = (buf[i] + buf[i + 1]) / 2;
for (int i = 0; i < frames * 2; i += 2) {
if (audio->channels == 1) audio->audio_out_l[n] = (buf[i] + buf[i + 1]) / 2;
//stereo storing channels in buffer
if (audio->channels == 2) {
audio->audio_out_l[n] = buf[i];
@ -123,8 +132,8 @@ void* input_alsa(void* data) {
}
break;
default:
err = snd_pcm_readi(handle, buffer, frames);
fill_audio_outs(audio, buffer, size);
err = snd_pcm_readi(handle, buffer, frames);
fill_audio_outs(audio, buffer, period_size);
break;
}

Loading…
Cancel
Save