0

オーディオデータをリアルタイムで処理する必要のあるiPhoneアプリを開発していますが、パフォーマンスに問題があります。ボトルネックはオーディオエフェクトにあり、実際には非常に単純ですが、いくつかを追加するとパフォーマンスの低下が顕著になります。

オーディオエフェクトコードのほとんどはCで書かれています。

gpuハードウェアを使用して処理を高速化できる場所は2つあると思います。エフェクトにopenCLを使用することと、補間/スムージングにハードウェアを使用することです。私たちはこれにかなり慣れておらず、どこから始めればよいのかわかりません。

4

2 に答える 2

0

OpenCLはデスクトップにのみ存在するため、おそらくOpenGLを意味します。はい、非常に高速な並列処理を実行したい場合は、OpenGL ES 2.0プログラマブルシェーダーを使用できますが、それを実行するのは非常に複雑になります。

最初に、オーディオ処理に必要な種類のタスクを実行するためのハードウェアアクセラレーション機能を備えたAccelerateフレームワークを確認することをお勧めします。開始するのに最適な場所は、AppleのWWDC2010セッション202-「iPhoneOS用のAccelerateフレームワーク」と「AccelerateFrameworkを活用する」の記事です。

また、パフォーマンスのボトルネックが予期しない場所にある可能性があるため、最初にコードをプロファイリングするというハンスの提案を却下しないでください。

于 2010-09-24T12:57:46.447 に答える
0

ARMNEONSIMDユニットのDSPアクセラレーションコーディングが改善される可能性があります。NEONはDSP操作用に設計されており、サイクルごとに複数の単精度浮動小数点演算をパイプライン処理できます。GPUメモリにオーディオデータを出し入れすることは可能かもしれませんが、それほど速くはないかもしれません。

ただし、コードのプロファイルを作成して、他の何かがボトルネックになっていないかどうかを確認することをお勧めします。iPhone 4 CPUは、リアルタイムオーディオストリームで複数のFFTおよびIIRフィルターを実行することに簡単に対応できます。

于 2010-09-24T17:11:06.113 に答える