2011-04-01 79 views
2

Android應該通過可通過NDK訪問的OpenSL es API支持3D音頻。或多或少的作品,我管理它通過創建的播放器和輸出組合播放聲音。但是,當我試圖通過3D位置界面(SL_IID_3DLOCATION常量)來實現一個監聽器,這對於播放3D聲音是必需的。但是,當我嘗試將常量設置爲SL_BOOLEAN_TRUE時,CreateListener方法的結果爲12,因此傳遞給LogCat。 12是OpenSL常量SL_RESULT_FEATURE_UNSUPPORTED的值。下面你可以找到代碼的一小部分,任何人都可以確認我做了什麼錯誤,或者如果這個功能真的不合適,這意味着OpenSL es實現不支持3D音頻?Android中支持的OpenSL ES功能

#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); 

回答

0

我可能已經找到了解決這個當我上週已經重新審視這個問題。我張貼與第三方的lib這裏可能的解決方案:

OpenSLES with 3D audio

也許有人誰需要它可以驗證它是否工作。