parent
c674073d77
commit
fb66f9753d
6 changed files with 140 additions and 5 deletions
@ -0,0 +1,64 @@ |
|||||||
|
#include <stdio.h> |
||||||
|
#include <unistd.h> |
||||||
|
#include <string.h> |
||||||
|
#include <errno.h> |
||||||
|
#include <pulse/simple.h> |
||||||
|
#include <pulse/error.h> |
||||||
|
#define BUFSIZE 1024 |
||||||
|
|
||||||
|
void* input_pulse(void* data) |
||||||
|
{ |
||||||
|
|
||||||
|
struct audio_data *audio = (struct audio_data *)data; |
||||||
|
|
||||||
|
int i, n; |
||||||
|
|
||||||
|
int16_t buf[BUFSIZE / 2]; |
||||||
|
|
||||||
|
/* The sample type to use */ |
||||||
|
static const pa_sample_spec ss = { |
||||||
|
.format = PA_SAMPLE_S16LE, |
||||||
|
.rate = 44100, |
||||||
|
.channels = 2 |
||||||
|
}; |
||||||
|
static const pa_buffer_attr pb = { |
||||||
|
.maxlength = 1024, |
||||||
|
.fragsize = 1024 |
||||||
|
}; |
||||||
|
|
||||||
|
pa_simple *s = NULL;
|
||||||
|
int error; |
||||||
|
|
||||||
|
/* Create the recording stream */ |
||||||
|
if (!(s = pa_simple_new(NULL, "cava", PA_STREAM_RECORD, audio-> source, "audio for cava", &ss, NULL, &pb, &error))) { |
||||||
|
fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error)); |
||||||
|
exit(EXIT_FAILURE); |
||||||
|
} |
||||||
|
|
||||||
|
n = 0; |
||||||
|
|
||||||
|
while (1) { |
||||||
|
/* Record some data ... */ |
||||||
|
if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) { |
||||||
|
fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n", pa_strerror(error)); |
||||||
|
exit(EXIT_FAILURE); |
||||||
|
} |
||||||
|
|
||||||
|
//sorting out channels
|
||||||
|
|
||||||
|
for (i = 0; i < BUFSIZE / 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]; |
||||||
|
audio->audio_out_r[n] = buf[i + 1]; |
||||||
|
} |
||||||
|
|
||||||
|
n++; |
||||||
|
if (n == 2048 - 1)n = 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,4 @@ |
|||||||
|
//header file for pulse, part of cava.
|
||||||
|
|
||||||
|
void* input_pulse(void* data); |
||||||
|
|
||||||
Loading…
Reference in new issue