Android должен поддерживать 3D-аудио через API OpenSL es, который доступен через NDK. Это более или менее работает, мне удалось воспроизвести звук через созданный плеер и выходной микс. Но когда я пытаюсь реализовать слушателя с трехмерным интерфейсом местоположения (константа SL_IID_3DLOCATION), который является обязательным для воспроизведения трехмерного звука. Но когда я пытаюсь установить константу в значение SL_BOOLEAN_TRUE, результат метода CreateListener равен 12, как передается в LogCat. 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);