GNU/Linux >> Tutoriels Linux >  >> Linux

ALSA : moyens d'éviter l'underrun pour le haut-parleur

Je suppose que ce code s'exécute dans une boucle serrée et est destiné à bloquer sur snd_pcm_writen() . Le taux d'échantillonnage n'est pas donné ; Je suppose 48kHz puisque les nombres se divisent tous bien.

Je pense que ce qui se passe ici est le suivant :

  • snd_pcm_write() ne garantit pas d'écrire toutes les trames fournies (la valeur de retour n'est vérifiée que pour les conditions d'erreur). À en juger par la journalisation de snd_pcm_avail() il consomme en fait avail_min ou 144 cadres sur chacun. C'est 3ms d'audio.
  • En supposant que l'audio ne fonctionne pas à ce stade, après deux écritures, le nombre d'images dans le tampon est égal à start_threshold - à 288 échantillons ; la sortie audio démarre
  • appels au printf() bloc, et je crois me souvenir que snd_pcm_avail() doit se synchroniser avec le matériel de sortie audio et peut également se bloquer. Étant donné que vous avez maintenant 6 ms d'avance sur la lecture, il est tout à fait possible que le tampon fonctionne à sec pendant le temps du troisième appel de snd_pcm_writen()

En résumé, vous ne devriez pas appeler le printf() à ce stade, et vous devez probablement compenser le fait que snd_pcm_writen() ne consomme pas toutes les images dans pSpeakerBuf


Linux
  1. LosslessCut - Outil super rapide pour couper / couper la vidéo et l'audio

  2. Audacious – Un lecteur audio avancé pour Linux

  3. 10 meilleures alternatives Audacity pour l'enregistrement et l'édition audio

  4. paramètre sysctl pour une charge élevée et empêcher les attaques DDoS

  5. Quelle est une bonne approche pour extraire des portions de parole d'un fichier audio arbitraire ?

Les commandes FFmpeg les plus utiles pour la conversion audio et vidéo

Coupeur audio facile pour Ubuntu ?

15 façons d'utiliser la commande Linux Watch pour les activités quotidiennes

20 meilleures stations de travail audio numériques (DAW) et logiciels DJ pour Linux

15 meilleurs synthétiseurs Linux pour la production audio numérique

Comment empêcher SSH de se déconnecter s'il est inactif depuis un certain temps