2013-04-05 18 views
7

Tôi đang sử dụng ALSA API snd_pcm_drop() để xóa bộ đệm. Nhưng khi tôi tiếp tục phát âm thanh sau với snd_pcm_prepare(), tôi có thể nghe thấy một phần âm thanh trước đó được cho là sẽ bị xóa. Điều này xảy ra khi tôi có giá trị cao là snd_pcm_sw_params_set_stop_threshold(). Nếu tôi đang sử dụng giá trị thấp hơn, âm thanh một phần từ phiên âm thanh trước sẽ không được phát.ALSA snd_pcm_drop() không xóa bộ đệm hoàn chỉnh

Điều gì đang xảy ra ở đây? Làm thế nào để xóa hoàn toàn bộ đệm?

(Tôi mới vào ALSA)

Cảm ơn

+0

Đây có phải là tùy chọn để sử dụng snd_pcm_drain() thay vì snd_pcm_drop() không? –

+0

Âm thanh như một lỗi trình điều khiển, nhưng điều này khó nói mà không có thêm thông tin. –

+0

@ Đa phương tiện Mike, Theo tài liệu, snd_pcm_drain() sẽ không thả bộ đệm ngay lập tức. Vì vậy, nó không phải là hữu ích cho tôi. Dù sao tôi đã thử snd_pcm_drain(), nhưng quan sát là như nhau. –

Trả lời

0

"có thể nghe thấy một phần của âm thanh trước đó được cho là bị xóa." bởi vì vẫn còn một số dữ liệu âm thanh còn lại trong bộ đệm ALSA, và dữ liệu không đủ lớn để chơi.Đưa lớn gói âm thanh khi bạn đưa vào bộ đệm ALSA có thể giải quyết được vấn đề.

Các vấn đề liên quan