2010-09-24 22 views
0

Nous développons une application iPhone qui doit traiter les données audio en temps réel, mais nous souffrons de performances. Les goulots d'étranglement sont dans les effets audio, qui sont en fait assez simples, mais le coup de performance est perceptible lorsque plusieurs sont ajoutés.Utilisation de matériel graphique pour le traitement audio dans l'application iPhone

est écrit en C.

La plupart des effets code audio Nous pensons qu'il ya deux endroits que nous pouvons utiliser le matériel gpu pour accélérer les choses: en utilisant OpenCL pour les effets et le matériel pour l'interpolation/lissage. Nous sommes assez nouveaux à cela et ne savons pas par où commencer.

+0

C'est un peu idiot, l'audio ne donne pas un mal de tête de processeur moderne, il n'y a pas beaucoup de données par rapport à, disons, la vidéo. Améliorez votre code, utilisez un profileur. –

Répondre

0

Vous voulez probablement dire OpenGL, OpenCL n'étant présent que sur le bureau. Oui, vous pouvez utiliser des shaders programmables OpenGL ES 2.0 pour cela, si vous voulez effectuer un traitement parallèle très rapide, mais cela sera extrêmement complexe à réaliser.

Vous pouvez d'abord regarder le framework Accelerate, qui dispose de fonctions accélérées par le matériel pour effectuer le type de tâches nécessaires au traitement audio. Un bon endroit pour commencer est WWDC 2010 session 202 d'Apple - "Le cadre Accelerate pour iPhone OS", avec leur article "Taking Advantage of the Accelerate Framework". De même, n'ignorez pas la suggestion de Hans que vous fassiez d'abord le profil de votre code, car votre goulot d'étranglement des performances pourrait être quelque part que vous n'attendez pas.

+0

Merci pour l'info sur Accelerate. Je pense que ça va être utile. Btw OpenCL est disponible sur iphone depuis iOS4.0 – Peter

+0

@Peter - Non, ce n'est pas le cas. OpenCL est une technologie purement bureautique pour le moment. Je crois que cela nécessite des capacités GPU qui ne sont pas encore présentes sur les appareils iOS. –

0

Vous pouvez obtenir un meilleur codage d'accélération DSP pour l'unité SIMON ARM NEON. NEON est conçu pour les opérations DSP et peut gérer plusieurs opérations en virgule flottante à simple précision par cycle. Alors que l'acquisition de données audio dans et hors de la mémoire GPU peut être possible, mais peut ne pas être aussi rapide.

Mais vous pourriez vouloir profiler votre code pour voir si quelque chose d'autre est le goulot d'étranglement. Le processeur de l'iPhone 4 peut facilement suivre plusieurs filtres FFT et IIR sur un flux audio en temps réel.