LINUX.ORG.RU

pulseaudio raw record

 ,


0

1

Здравствуйте господа кодеры! Есть задача - читать 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);
}
Пытался соорудить тестовую запись на 5 секунд. Звук вроде пишется и играется через pacat,но я сомневаюсь в правильности такого решения, поэтому прошу совета.



Последнее исправление: cetjs2 (всего исправлений: 3)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.