2009-08-22 3 views
2

En utilisant ALSA pour lire de l'audio, après avoir appelé snd__pcm__writei, puis-je libérer immédiatement la mémoire tampon de l'échantillon ou dois-je attendre que le son soit fini avant de pouvoir libérer le tampon d'échantillonnage?En utilisant la fonction sSA_pcm_writei d'ALSA, puis-je libérer le tampon d'échantillon tout de suite?

Par exemple:

unsigned short *buffer; 

buffer = malloc(size of sample to play); 
...load data into buffer... 
snd_pcm_writei (playback_handle, buffer, size of sample) 
free(buffer) 

Répondre

0

meilleure façon de trouver en serait de commencer à écrire à rebours à partir de la fin du tampon et voir si vous affectez la lecture audio. Si vous le faites, vous ne pouvez définitivement pas libérer le tampon. Si cela ne fait aucune différence, vous pouvez libérer le tampon en toute sécurité car la carte son ne lit pas à partir de ce bloc de mémoire particulier.

+1

-1 cette approche pour répondre à une question (essai et erreur) est tout simplement fausse. Il peut arriver que vous travailliez sur votre configuration mais que vous échouiez sur une version différente des bibliothèques ALSA, ou que vous travailliez avec un mixage léger mais pas un accès matériel direct, ou vice versa. Répondre à la question nécessite de lire la spécification/documentation, ou de demander aux développeurs quelle est leur intention s'ils ne l'ont pas écrite clairement dans la documentation. –

+0

@R ..: Alors que je comprends votre point de vue, le travail des choses comme ça par vous-même est l'une des choses les plus importantes à apprendre sur le développement, IMO. Il vous en apprend beaucoup sur la façon d'analyser un problème et de le résoudre. Évidemment, cependant, eMailing le développeur et demander est la chose idéale à faire. – Goz

+3

Je suppose que nous sommes en désaccord. Je pense que c'est une pratique courante dans le développement qui n'est pas quelque chose d'important à apprendre, mais plutôt une chose importante à ne pas faire une habitude. Ce type de programmation par essais et erreurs est une source inépuisable de code de code qui fonctionne lorsqu'il est écrit à l'origine sur la version OS/OS pour laquelle il a été écrit, et se brise ensuite lorsque quelqu'un met à jour des choses ou essaie de l'exécuter sur un OS différent. –

Questions connexes