doc} tutorial4.c title
doc} tutorial4.c doc
#include <math.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 on_process(void *userdata)
{
struct data *data = userdata;
int i, c, n_frames, stride;
int16_t *dst, val;
return;
}
return;
stride = sizeof(int16_t) * DEFAULT_CHANNELS;
for (i = 0; i < n_frames; i++) {
data->accumulator += M_PI_M2 * 440 / DEFAULT_RATE;
if (data->accumulator >= M_PI_M2)
data->accumulator -= M_PI_M2;
val = sin(data->accumulator) * DEFAULT_VOLUME * 16767.f;
for (c = 0; c < DEFAULT_CHANNELS; c++)
*dst++ = val;
}
}
.process = on_process,
};
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;
}