Skip to content

Commit b39a159

Browse files
Eric LaurentAndroid (Google) Code Review
authored andcommitted
Merge "audio preprocessing: fix multiple enable problem"
2 parents 5312d08 + 8293e19 commit b39a159

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

media/libeffects/preprocessing/PreProcessing.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -845,6 +845,17 @@ int Session_SetConfig(preproc_session_t *session, effect_config_t *config)
845845
config->inputCfg.samplingRate, config->inputCfg.channels);
846846
int status;
847847

848+
// if at least one process is enabled, do not accept configuration changes
849+
if (session->enabledMsk) {
850+
if (session->samplingRate != config->inputCfg.samplingRate ||
851+
session->inChannelCount != inCnl ||
852+
session->outChannelCount != outCnl) {
853+
return -ENOSYS;
854+
} else {
855+
return 0;
856+
}
857+
}
858+
848859
// AEC implementation is limited to 16kHz
849860
if (config->inputCfg.samplingRate >= 32000 && !(session->createdMsk & (1 << PREPROC_AEC))) {
850861
session->apmSamplingRate = 32000;
@@ -1287,7 +1298,9 @@ int PreProcessingFx_Command(effect_handle_t self,
12871298
if (*(int *)pReplyData != 0) {
12881299
break;
12891300
}
1290-
*(int *)pReplyData = Effect_SetState(effect, PREPROC_EFFECT_STATE_CONFIG);
1301+
if (effect->state != PREPROC_EFFECT_STATE_ACTIVE) {
1302+
*(int *)pReplyData = Effect_SetState(effect, PREPROC_EFFECT_STATE_CONFIG);
1303+
}
12911304
break;
12921305

12931306
case EFFECT_CMD_GET_CONFIG:

0 commit comments

Comments
 (0)