4

キュープレーヤーでpcmデータをfloatとして再生するために必要なAndroid用のアプリを作成しています。私が見る限り、それは不可能です。説明は言う:

SL_DATAFORMAT_PCMは、アプリケーションがデータの表現を符号付き整数、符号なし整数、または浮動小数点として指定することを許可しません。Androidの実装では、8ビットデータは符号なし整数であり、16ビットは符号付き整数であると想定しています。さらに、実際の単位はミリHzであるため、フィールドsamplesPerSecは誤った名称です。これらの問題は、次のOpenSL ESバージョンで対処される予定です。これにより、アプリケーションが表現を明示的に指定し、フィールド名を修正できる新しい拡張PCMデータ形式が導入されます。これは新しいデータ形式であり、現在のPCMデータ形式は引き続き使用可能であるため(非推奨ですが)、コードをすぐに変更する必要はありません。

opensl es(1.0.1)を介してこの作業を取得する機会はありますか、それともandroidndkのopenslesに代わるものはありますか?

4

3 に答える 3

2

浮動小数点波形を符号付き 16 ビットに変換し、これを OpenSL にフィードできます。

Wave データを OpenSL にフィードするためには Wave データにアクセスする必要があるため、実行時に変換を行うのは簡単で、オーバーヘッドはあまりありません。

OpenSL は、必要がなくなるまでメモリの場所を有効にしておくよう求めています。したがって、中間バッファーを使用して変換を行い、これを再利用できます。

これが私がやった方法です。実際、私は 1 つのストリームのみを使用しており、すべてのソース ミキシングをソフトウェアで行っています。

于 2013-02-20T12:59:04.727 に答える