Здравствуйте! В целях экспериментов с коммутацией, — решил написать велосипед утилиту, которая бы пробрасывала JACK в ALSA, решил пойти от обратного, не ALSA в JACK, а наоборот, потому как plug-выходы с джеком хотят подхватывать далеко не все приложения. В общем-то затея почти получилась, но застопорился на одном месте, перерыв интернеты, не понял как решить. В общем у меня идёт звук с первого JACK входа в альсу, но звучит это словно — дико перегружено, с жутким шумом, но как-никак, а что-то слышно, уже какой-то прогресс.
Весь код: http://pastebin.com/xBZjxd4H Makefile: http://pastebin.com/paQaxgfp
Инициализация альсы:
snd_pcm_open(&playback_handle, "default", SND_PCM_STREAM_PLAYBACK, 0);
snd_pcm_set_params( playback_handle, SND_PCM_FORMAT_S32_LE,
SND_PCM_ACCESS_RW_INTERLEAVED,
1/*channels*/, sample_rate/*get_from_jack*/, 1, 5000000);
Вот процессинг джека:
int jack_process(jack_nframes_t nframes, void *arg) {
jack_default_audio_sample_t *in_l;
in_l = (jack_default_audio_sample_t *)
jack_port_get_buffer(input_port_left, nframes);
snd_pcm_writei(playback_handle, in_l, nframes);
return 0;
}
Звук в альсу идёт, но с дикими шумами и перегрузами. Что делаю не так? Спасибо.
P.S. Ещё по возможности объясните как быть с snd_pcm_writei, когда нужно стерео.