2013-04-05 9 views
7

Używam ALSA API snd_pcm_drop() do czyszczenia buforów. Ale kiedy kontynuuję audio później z snd_pcm_prepare(), słyszę część poprzedniego dźwięku, który miał zostać wyczyszczony. Dzieje się tak, gdy mam wysoką wartość snd_pcm_sw_params_set_stop_threshold(). Jeśli używam niższej wartości, częściowe audio z poprzedniej sesji audio nie będzie odtwarzane.ALSA snd_pcm_drop() nie kasuje kompletnego bufora

Co się tutaj dzieje? Jak całkowicie usunąć bufor?

(jestem nowy na ALSA)

Dzięki

+0

Czy jest opcja użycia snd_pcm_drain() zamiast snd_pcm_drop()? –

+0

Brzmi jak błąd sterownika, ale trudno to powiedzieć bez dodatkowych informacji. –

+0

@Multimedia Mike, Zgodnie z dokumentacją, snd_pcm_drain() nie spowoduje natychmiastowego upuszczenia bufora. Więc nie jest mi przydatny. Tak czy inaczej spróbowałem snd_pcm_drain(), ale obserwacja jest taka sama. –

Odpowiedz

0

„słyszy część poprzedniego dźwięku, która miała być wyczyszczone.” ponieważ w buforze ALSA wciąż pozostały jakieś dane audio, a dane nie są wystarczająco duże, aby je odtworzyć. Objaśnienie pakietu audio po umieszczeniu w buforze ALSA może rozwiązać problem.

Powiązane problemy