iPhoneアプリでオーディオ処理にグラフィックスハードウェアを使用します
-
05-10-2019 - |
質問
オーディオデータをリアルタイムで処理する必要があるiPhoneアプリを開発していますが、パフォーマンスに苦しんでいます。ボトルネックはオーディオエフェクトにありますが、実際には非常に簡単ですが、いくつかを追加するとパフォーマンスのヒットが顕著です。
オーディオエフェクトコードのほとんどはCで書かれています。
GPUハードウェアを使用して物事を高速化できる2つの場所があると思います。OpenCLを使用して、補間/スムージングにハードウェアを使用します。私たちはこれにかなり新しいので、どこから始めればいいのかわかりません。
解決
OpenCLはデスクトップにのみ存在するため、おそらくOpenGLを意味します。はい、非常に高速な並列処理を実行したい場合は、OpenGL ES 2.0プログラム可能なシェーダーを使用できますが、それは非常に複雑になります。
最初に、オーディオ処理に必要な種類のタスクを実行するためのハードウェアアクセラレーション機能を備えたAccelerate Frameworkをご覧になりたい場合があります。始めるのに最適な場所はAppleのものです WWDC 2010セッション 202-「iPhone OSの加速フレームワーク」、 「加速フレームワークを利用する」 記事。
また、パフォーマンスのボトルネックが期待していない場所にある可能性があるため、最初にコードをプロファイルするというハンスの提案を却下しないでください。
他のヒント
ARM NEON SIMDユニットのDSP加速コーディングが優れている場合があります。 NeonはDSP操作用に設計されており、サイクルごとに複数の単一精度フローティングポイント操作をパイプラインできます。一方、GPUメモリからオーディオデータを出し入れすることは可能かもしれませんが、それほど高速ではないかもしれません。
ただし、他の何かがボトルネックであるかどうかを確認するために、コードをプロファイルすることをお勧めします。 iPhone 4 CPUは、リアルタイムのオーディオストリームで複数のFFTおよびIIRフィルターを簡単に追いつくことができます。