これは、PCMオーディオデータを含むunsigned char*
バッファを持つC++アプリケーションです。このデータを使用してAndroid APIメソッドAudioTrack.write()
をのJNI(C++からJavaへ)のインスタンスで呼び出す必要があります。そのために余分なコピーを作成しないでください。これはできますか?バイトを必要とするJava APIでC++配列を直接使用する
AudioTrackは、自分のPCMデータ(unsigned char*
)に対応する引数であるJava byte[]
を引数の1つとして受け入れます。
申し訳ありませんが重複している場合は、この種のものを効果的に検索するのは難しいです。
)'が、私はそれをお勧めしません。より良いアイデア:配列の代わりに(または配列に加えて)NIOバッファをサポートするようにAndroidチームに依頼してください。 –
Androidの新しいバージョンでのオーディオのネイティブサポートがさらに優れています。残念なことに、これをJavaにキックすると、再びネイティブコードに戻ります。 – notlesh
Sigh ...時々私はGoogleにまともなJITコンパイラを含めてほしいと思っていました。そのようなネイティブAPIを使いこなすのではなく、OpenCL、OpenGL、OpenSLなどでJavaを使い始めることができました。これはGoogleのビジネスモデルだと思っています。壊れたソフトウェアを放棄し、世界を支配するのですが、どこまで見たのですか? –