opensles: check error code for input streams
More robust error checking and reporting for setting PerformanceMode.
diff --git a/src/opensles/AudioInputStreamOpenSLES.cpp b/src/opensles/AudioInputStreamOpenSLES.cpp
index c6004d1..90d7041 100644
--- a/src/opensles/AudioInputStreamOpenSLES.cpp
+++ b/src/opensles/AudioInputStreamOpenSLES.cpp
@@ -134,7 +134,11 @@
result = (*mObjectInterface)->GetInterface(mObjectInterface,
SL_IID_ANDROIDCONFIGURATION,
&configItf);
- if (SL_RESULT_SUCCESS == result) {
+
+ if (SL_RESULT_SUCCESS != result) {
+ LOGW("%s() GetInterface(SL_IID_ANDROIDCONFIGURATION) failed with %s",
+ __func__, getSLErrStr(result));
+ } else {
SLuint32 presetValue = OpenSLES_convertInputPreset(getInputPreset());
result = (*configItf)->SetConfiguration(configItf,
SL_ANDROID_KEY_RECORDING_PRESET,
diff --git a/src/opensles/AudioOutputStreamOpenSLES.cpp b/src/opensles/AudioOutputStreamOpenSLES.cpp
index 7a3de8c..79b1180 100644
--- a/src/opensles/AudioOutputStreamOpenSLES.cpp
+++ b/src/opensles/AudioOutputStreamOpenSLES.cpp
@@ -144,7 +144,6 @@
goto error;
}
}
- assert(configItf != nullptr);
result = (*mObjectInterface)->Realize(mObjectInterface, SL_BOOLEAN_FALSE);
if (SL_RESULT_SUCCESS != result) {
diff --git a/src/opensles/AudioStreamOpenSLES.cpp b/src/opensles/AudioStreamOpenSLES.cpp
index e5ffb0d..a9c2e47 100644
--- a/src/opensles/AudioStreamOpenSLES.cpp
+++ b/src/opensles/AudioStreamOpenSLES.cpp
@@ -174,18 +174,29 @@
}
SLresult AudioStreamOpenSLES::configurePerformanceMode(SLAndroidConfigurationItf configItf) {
+
+ if (configItf == nullptr) {
+ LOGW("%s() called with NULL configuration", __func__);
+ mPerformanceMode = PerformanceMode::None;
+ return SL_RESULT_INTERNAL_ERROR;
+ }
+ if (getSdkVersion() < __ANDROID_API_N_MR1__) {
+ LOGW("%s() not supported until N_MR1", __func__);
+ mPerformanceMode = PerformanceMode::None;
+ return SL_RESULT_SUCCESS;
+ }
+
SLresult result = SL_RESULT_SUCCESS;
- if(getSdkVersion() >= __ANDROID_API_N_MR1__) {
- SLuint32 performanceMode = convertPerformanceMode(getPerformanceMode());
- result = (*configItf)->SetConfiguration(configItf, SL_ANDROID_KEY_PERFORMANCE_MODE,
- &performanceMode, sizeof(performanceMode));
- if (SL_RESULT_SUCCESS != result) {
- LOGW("SetConfiguration(PERFORMANCE_MODE, %u) returned %d", performanceMode, result);
- mPerformanceMode = PerformanceMode::None;
- }
- } else {
+ SLuint32 performanceMode = convertPerformanceMode(getPerformanceMode());
+ LOGD("SetConfiguration(SL_ANDROID_KEY_PERFORMANCE_MODE, SL %u) called", performanceMode);
+ result = (*configItf)->SetConfiguration(configItf, SL_ANDROID_KEY_PERFORMANCE_MODE,
+ &performanceMode, sizeof(performanceMode));
+ if (SL_RESULT_SUCCESS != result) {
+ LOGW("SetConfiguration(PERFORMANCE_MODE, SL %u) returned %s",
+ performanceMode, getSLErrStr(result));
mPerformanceMode = PerformanceMode::None;
}
+
return result;
}