Ich benutze alsa
in Arm Linux 3.10. Es gibt 3 drahtlose Geräte: zwei erfassen und senden PCM mit snd_pcm_readi
und sendmsg
und eins als Empfänger, Wiedergabe, was mit snd_pcm_writei
empfangen wurde.alsa snd_pcm_wreitei underrun Fehler
Hier ist die Prozedur: Programme funktioniert gut, während 1 Sender und 1 Empfänger. Aber wenn ich den ersten Sender stoppe und den zweiten Sender starte, hat die Empfängerseite einen Unterlauffehler. Für jeden Sender hat der Empfänger einen eindeutigen PCM-Handle, um mit Daten umzugehen. Und alle Seiten verwenden die gleiche Konfiguration, außer dass das Handle des Senders mit dem Namen default[snd_pcm_open(pcm_handle, "default", stream,0)]
geöffnet ist und das Handle des Empfängers plug:dmix
verwendet. [snd_pcm_open(pcm_handle, "plug:dmix", stream,0)]
while(1)
{
recv_from();
if sender one or two's first packet
alsa init handle1 or handle2
int err = snd_pcm_writei(handle1 or 2, buffer, 224);
if(err == -EPIPE)
{
fprintf(stderr, "underrun occurred\n");
snd_pcm_prepare(handle);
continue;
}
}
Der Zweck ist der Empfänger in der Lage zu machen für beide Sender gemischten Ton zu spielen. Kann mir jemand dabei helfen, ich bin neu in alsa
Programmierung. Danke im Voraus!