2

Android は、NDK 経由でアクセスできる OpenSL es API 経由で 3D オーディオをサポートすることになっています。それは多かれ少なかれ機能し、作成されたプレーヤーと出力ミックスを介してサウンドを再生することができました。しかし、3D サウンドの再生に必須の 3D ロケーション インターフェイス (SL_IID_3DLOCATION 定数) を備えたリスナーを実現しようとすると、. しかし、定数を SL_BOOLEAN_TRUE に設定しようとすると、LogCat に渡される CreateListener メソッドの結果は 12 になります。12 は、OpenSL es 定数 SL_RESULT_FEATURE_UNSUPPORTED の値です。以下にコードの短い部分を示します。私が何か間違ったことをしたのか、それとも機能が本当にサポートされていないのか、つまり OpenSL es の実装が 3D オーディオをサポートしていないのか、誰でも確認できますか?

#define SL_RESULT_FEATURE_UNSUPPORTED       ((SLuint32) 0x0000000C)

const SLInterfaceID listener_ids[] = {SL_IID_3DLOCATION};
const SLboolean listener_req[] = {SL_BOOLEAN_TRUE};

result = (*engine)->CreateListener(engine, &listenerObject, 1, listener_ids, listener_req);
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "CREATE: [%i]", result);

assert(SL_RESULT_SUCCESS == result);




result = (*listenerObject)->Realize(listenerObject, SL_BOOLEAN_FALSE);
__android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "REALIZE: [%i]", result);

assert(SL_RESULT_SUCCESS == result);
4

2 に答える 2

2

次の Web サイトをご覧ください: https://developer.android.com/ndk/guides/audio/opensl/opensl-for-android。これは、Android 用の OpenSL ES API でサポートされているものと、(より重要なことに) サポートされていないものを示しています。私は 3D ロケーション機能を使ったことはありませんが、まだその必要はありませんでした。

とにかく、そのサイトはあなたにそれについてのより多くの情報を与えるかもしれません...

于 2011-05-17T13:06:10.550 に答える
0

先週問題をもう一度見たときに、これに対する解決策を見つけたかもしれません。ここにサードパーティのライブラリを使用した可能な解決策を投稿しました:

OpenSLES と 3D オーディオ

たぶん、それを必要とする誰かがそれが機能したかどうかを確認できます.

于 2013-09-17T22:29:22.380 に答える