|
|
@@ -56,49 +56,49 @@ void AudioController::initialize()
|
|
|
#else
|
|
|
// Create the engine.
|
|
|
SLresult result = slCreateEngine(&_engineObject, 0, NULL, 0, NULL, NULL);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- LOG_ERROR("AudioController::initialize() error. Unable to create OpenSL engine.");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Realize the engine.
|
|
|
- result = (*_engineObject)->Realize(_engineObject, SL_BOOLEAN_FALSE);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- LOG_ERROR("AudioController::initialize() error. Unable to realize OpenSL engine.");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Get the engine interface in order to create other objects later on.
|
|
|
- result = (*_engineObject)->GetInterface(_engineObject, SL_IID_ENGINE, &_engineEngine);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- LOG_ERROR("AudioController::initialize() error. Unable to retrieve OpenSL engine interface.");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Create the output mix.
|
|
|
- result = (*_engineEngine)->CreateOutputMix(_engineEngine, &_outputMixObject, 0, NULL, NULL);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- LOG_ERROR("AudioController::initialize() error. Unable to create OpenSL output mix.");
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Realize the output mix.
|
|
|
- result = (*_outputMixObject)->Realize(_outputMixObject, SL_BOOLEAN_FALSE);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- LOG_ERROR("AudioController::initialize() error. Unable to realize OpenSL output mix.");
|
|
|
- return;
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ LOG_ERROR("AudioController::initialize() error. Unable to create OpenSL engine.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Realize the engine.
|
|
|
+ result = (*_engineObject)->Realize(_engineObject, SL_BOOLEAN_FALSE);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ LOG_ERROR("AudioController::initialize() error. Unable to realize OpenSL engine.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Get the engine interface in order to create other objects later on.
|
|
|
+ result = (*_engineObject)->GetInterface(_engineObject, SL_IID_ENGINE, &_engineEngine);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ LOG_ERROR("AudioController::initialize() error. Unable to retrieve OpenSL engine interface.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Create the output mix.
|
|
|
+ result = (*_engineEngine)->CreateOutputMix(_engineEngine, &_outputMixObject, 0, NULL, NULL);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ LOG_ERROR("AudioController::initialize() error. Unable to create OpenSL output mix.");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Realize the output mix.
|
|
|
+ result = (*_outputMixObject)->Realize(_outputMixObject, SL_BOOLEAN_FALSE);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ LOG_ERROR("AudioController::initialize() error. Unable to realize OpenSL output mix.");
|
|
|
+ return;
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
void AudioController::finalize()
|
|
|
{
|
|
|
-#ifndef __ANDROID__
|
|
|
+#ifndef __ANDROID__
|
|
|
alcMakeContextCurrent(NULL);
|
|
|
if (_alcContext)
|
|
|
{
|
|
|
@@ -111,17 +111,17 @@ void AudioController::finalize()
|
|
|
_alcDevice = NULL;
|
|
|
}
|
|
|
#else
|
|
|
- if (_outputMixObject != NULL)
|
|
|
- {
|
|
|
- (*_outputMixObject)->Destroy(_outputMixObject);
|
|
|
- _outputMixObject = NULL;
|
|
|
- }
|
|
|
-
|
|
|
- if (_engineObject != NULL)
|
|
|
- {
|
|
|
- (*_engineObject)->Destroy(_engineObject);
|
|
|
- _engineObject = NULL;
|
|
|
- _engineEngine = NULL;
|
|
|
+ if (_outputMixObject != NULL)
|
|
|
+ {
|
|
|
+ (*_outputMixObject)->Destroy(_outputMixObject);
|
|
|
+ _outputMixObject = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_engineObject != NULL)
|
|
|
+ {
|
|
|
+ (*_engineObject)->Destroy(_engineObject);
|
|
|
+ _engineObject = NULL;
|
|
|
+ _engineEngine = NULL;
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
@@ -145,6 +145,9 @@ void AudioController::pause()
|
|
|
|
|
|
void AudioController::resume()
|
|
|
{
|
|
|
+#ifndef __ANDROID__
|
|
|
+ alcMakeContextCurrent(_alcContext);
|
|
|
+#endif
|
|
|
std::list<AudioSource*>::iterator itr = _playingSources.begin();
|
|
|
|
|
|
// For each source that is playing, resume it.
|
|
|
@@ -173,7 +176,7 @@ void AudioController::update(long elapsedTime)
|
|
|
#else
|
|
|
if (!_listenerObject)
|
|
|
{
|
|
|
- const SLInterfaceID interfaces[3] = {SL_IID_3DDOPPLER, SL_IID_3DLOCATION};
|
|
|
+ const SLInterfaceID interfaces[3] = {SL_IID_3DDOPPLER, SL_IID_3DLOCATION};
|
|
|
const SLboolean required[3] = {SL_BOOLEAN_FALSE, SL_BOOLEAN_FALSE};
|
|
|
SLresult result = (*_engineEngine)->CreateListener(_engineEngine, &_listenerObject, 2, interfaces, required);
|
|
|
if (result != SL_RESULT_SUCCESS)
|
|
|
@@ -189,20 +192,20 @@ void AudioController::update(long elapsedTime)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // Get the doppler interface in order to set the listener's velocity.
|
|
|
- result = (*_listenerObject)->GetInterface(_listenerObject, SL_IID_3DDOPPLER, &_listenerDoppler);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- WARN("AudioController: Unable to retrieve listener doppler interface.");
|
|
|
- return;
|
|
|
+ // Get the doppler interface in order to set the listener's velocity.
|
|
|
+ result = (*_listenerObject)->GetInterface(_listenerObject, SL_IID_3DDOPPLER, &_listenerDoppler);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ WARN("AudioController: Unable to retrieve listener doppler interface.");
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
// Get the location interface in order to set the listener's position and orientation.
|
|
|
- result = (*_listenerObject)->GetInterface(_listenerObject, SL_IID_3DLOCATION, &_listenerLocation);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- WARN("AudioController: Unable to retrieve listener location interface.");
|
|
|
- return;
|
|
|
+ result = (*_listenerObject)->GetInterface(_listenerObject, SL_IID_3DLOCATION, &_listenerLocation);
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ WARN("AudioController: Unable to retrieve listener location interface.");
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -215,9 +218,9 @@ void AudioController::update(long elapsedTime)
|
|
|
a.y = listener->getOrientationUp().y;
|
|
|
a.z = listener->getOrientationUp().z;
|
|
|
SLresult result = (*_listenerLocation)->SetOrientationVectors(_listenerLocation, &f, &a);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- WARN("AudioController: Unable to set listener orientation.");
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ WARN("AudioController: Unable to set listener orientation.");
|
|
|
}
|
|
|
|
|
|
SLVec3D p;
|
|
|
@@ -225,9 +228,9 @@ void AudioController::update(long elapsedTime)
|
|
|
p.y = listener->getPosition().y;
|
|
|
p.z = listener->getPosition().z;
|
|
|
result = (*_listenerLocation)->SetLocationCartesian(_listenerLocation, &p);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- WARN("AudioController: Unable to set listener location.");
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ WARN("AudioController: Unable to set listener location.");
|
|
|
}
|
|
|
|
|
|
SLVec3D v;
|
|
|
@@ -235,9 +238,9 @@ void AudioController::update(long elapsedTime)
|
|
|
v.y = listener->getVelocity().y;
|
|
|
v.z = listener->getVelocity().z;
|
|
|
result = (*_listenerDoppler)->SetVelocityCartesian(_listenerDoppler, &v);
|
|
|
- if (result != SL_RESULT_SUCCESS)
|
|
|
- {
|
|
|
- WARN("AudioController: Unable to set listener velocity.");
|
|
|
+ if (result != SL_RESULT_SUCCESS)
|
|
|
+ {
|
|
|
+ WARN("AudioController: Unable to set listener velocity.");
|
|
|
}
|
|
|
#endif
|
|
|
}
|