2013-04-05 11 views
7

Sto utilizzando l'API ALSA snd_pcm_drop() per cancellare i buffer. Ma quando continuo audio in seguito con snd_pcm_prepare(), riesco a sentire parte dell'audio precedente che doveva essere cancellato. Ciò accade quando ho un valore alto di snd_pcm_sw_params_set_stop_threshold(). Se sto usando un valore più basso, l'audio parziale della precedente sessione audio non verrà riprodotto.ALSA snd_pcm_drop() non cancella il buffer completo

Cosa sta succedendo qui? Come eliminare completamente il buffer?

(io sono nuovo di ALSA)

Grazie

+0

È un'opzione per utilizzare snd_pcm_drain() invece di snd_pcm_drop()? –

+0

Sembra un errore del driver, ma è difficile dirlo senza ulteriori informazioni. –

+0

@Multimedia Mike, Come da documentazione, snd_pcm_drain() non farà cadere immediatamente il buffer. Quindi non è utile per me. In ogni caso ho provato snd_pcm_drain(), ma l'osservazione è la stessa. –

risposta

0

"può sentire parte della precedente audio che doveva essere eliminato." poiché nel buffer ALSA sono rimasti ancora alcuni dati audio e i dati non sono abbastanza grandi per essere riprodotti. Ampliare il pacchetto audio quando si inserisce nel buffer ALSA potrebbe risolvere il problema.