Здравствуйте господа кодеры! Есть задача - читать PCM с звуковой карты. Немного подумав решил взять пульс ибо просто. После чтения справки по простому апи получил следующий быдлокод (серьезно, жуткий стиль и ошибки)
#include <stdio.h>
#include <pulse/simple.h>
#define SAMPLERATE 44100
void main()
{
pa_simple *d;
pa_sample_spec sr;
sr.format = PA_SAMPLE_S16LE;
sr.channels = 2;
sr.rate = SAMPLERATE;
if(d = pa_simple_new(NULL,"PA TestApp",PA_STREAM_RECORD,NULL,"Test recorder",&sr,NULL,NULL,NULL))
printf("PA open OK\n"); else printf("PA open ERROR\n");
pa_usec_t lat = pa_simple_get_latency(d,NULL);
uint16_t buf[SAMPLERATE*5*2+lat]; //5 секунд для 2 каналов + задержка
if(pa_simple_read(d,buf,sizeof(buf),NULL)<0) printf("read error\n");
printf("Latency: %d\n",lat);
FILE *f;
f = fopen("raw","w");
fwrite(&buf,sizeof(buf),1,f);
fclose(f);
pa_simple_free(d);
}