2010-07-08 16 views
1

J'essaie d'obtenir le volume de l'audio entendu par un périphérique d'entrée en utilisant Core-Audio.Comment obtenir des données de volume à partir d'un périphérique d'entrée dans Core-Audio?

Jusqu'à présent, j'ai utilisé AudioDeviceAddIOProc et AudioDeviceStart avec ma fonction AudioDeviceIOProc pour obtenir les données d'entrée sous la forme d'un AudioBufferList contenant AudioBuffer s.

Comment puis-je obtenir le volume des données à partir du AudioBuffer? Ou vais-je complètement à ce sujet dans le mauvais sens?

Répondre

1

Sous Mac OS X 10.5, les API que vous avez mentionnées sont obsolètes et vous devriez lire la note technique TN2223. Quoi qu'il en soit, en supposant que vous obteniez des tampons de données PCM linéaires au format flottant 32 bits, il vous suffit d'écrire une boucle for qui détermine les fabs (y) de chaque échantillon, puis prend le maximum de tous ces valeurs. Vous pouvez ensuite enregistrer cette valeur ou la convertir en décibels.