#include <stdio.h>
#include <errno.h>
#include <math.h>
#include <signal.h>
#define M_PI_M2 ( M_PI + M_PI )
#define DEFAULT_RATE 44100
#define DEFAULT_CHANNELS 2
#define DEFAULT_VOLUME 0.7
struct data {
double accumulator;
};
static void fill_f32(struct data *d, void *dest, int n_frames)
{
float *dst = dest, val;
int i, c;
for (i = 0; i < n_frames; i++) {
d->accumulator += M_PI_M2 * 440 / DEFAULT_RATE;
if (d->accumulator >= M_PI_M2)
d->accumulator -= M_PI_M2;
val = sin(d->accumulator) * DEFAULT_VOLUME;
for (c = 0; c < DEFAULT_CHANNELS; c++)
*dst++ = val;
}
}
static void on_process(void *userdata)
{
struct data *data = userdata;
int n_frames, stride;
uint8_t *p;
return;
}
return;
stride = sizeof(float) * DEFAULT_CHANNELS;
fill_f32(data, p, n_frames);
}
.process = on_process,
};
static void do_quit(void *userdata, int signal_number)
{
struct data *data = userdata;
}
int main(int argc, char *argv[])
{
struct data data = { 0, };
uint8_t buffer[1024];
"audio-src",
NULL),
&stream_events,
.channels = DEFAULT_CHANNELS,
.rate = DEFAULT_RATE ));
argc > 1 ? (uint32_t)atoi(argv[1]) :
PW_ID_ANY,
params, 1);
return 0;
}