Merge "Fix device management in lvm effect bundle wrapper." into ics-mr1

This commit is contained in:
Eric Laurent
2011-11-04 08:29:30 -07:00
committed by Android (Google) Code Review

View File

@@ -2462,6 +2462,9 @@ int Effect_setEnabled(EffectContext *pContext, bool enabled)
LOGV("\tEffect_setEnabled() type %d, enabled %d", pContext->EffectType, enabled);
if (enabled) {
// Bass boost or Virtualizer can be temporarily disabled if playing over device speaker due
// to their nature.
bool tempDisabled = false;
switch (pContext->EffectType) {
case LVM_BASS_BOOST:
if (pContext->pBundledContext->bBassEnabled == LVM_TRUE) {
@@ -2474,6 +2477,7 @@ int Effect_setEnabled(EffectContext *pContext, bool enabled)
pContext->pBundledContext->SamplesToExitCountBb =
(LVM_INT32)(pContext->pBundledContext->SamplesPerSecond*0.1);
pContext->pBundledContext->bBassEnabled = LVM_TRUE;
tempDisabled = pContext->pBundledContext->bBassTempDisabled;
break;
case LVM_EQUALIZER:
if (pContext->pBundledContext->bEqualizerEnabled == LVM_TRUE) {
@@ -2498,6 +2502,7 @@ int Effect_setEnabled(EffectContext *pContext, bool enabled)
pContext->pBundledContext->SamplesToExitCountVirt =
(LVM_INT32)(pContext->pBundledContext->SamplesPerSecond*0.1);
pContext->pBundledContext->bVirtualizerEnabled = LVM_TRUE;
tempDisabled = pContext->pBundledContext->bVirtualizerTempDisabled;
break;
case LVM_VOLUME:
if (pContext->pBundledContext->bVolumeEnabled == LVM_TRUE) {
@@ -2511,7 +2516,9 @@ int Effect_setEnabled(EffectContext *pContext, bool enabled)
LOGV("\tEffect_setEnabled() invalid effect type");
return -EINVAL;
}
LvmEffect_enable(pContext);
if (!tempDisabled) {
LvmEffect_enable(pContext);
}
} else {
switch (pContext->EffectType) {
case LVM_BASS_BOOST:
@@ -3057,9 +3064,10 @@ int Effect_command(effect_handle_t self,
LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_SET_DEVICE start");
uint32_t device = *(uint32_t *)pCmdData;
if(pContext->EffectType == LVM_BASS_BOOST){
if((device == AUDIO_DEVICE_OUT_SPEAKER)||(device == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT)||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER)){
if (pContext->EffectType == LVM_BASS_BOOST) {
if((device == AUDIO_DEVICE_OUT_SPEAKER) ||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT) ||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER)){
LOGV("\tEFFECT_CMD_SET_DEVICE device is invalid for LVM_BASS_BOOST %d",
*(int32_t *)pCmdData);
LOGV("\tEFFECT_CMD_SET_DEVICE temporary disable LVM_BAS_BOOST");
@@ -3068,30 +3076,31 @@ int Effect_command(effect_handle_t self,
// the effect must still report its original state as this can only be changed
// by the ENABLE/DISABLE command
if(pContext->pBundledContext->bBassEnabled == LVM_TRUE){
if (pContext->pBundledContext->bBassEnabled == LVM_TRUE) {
LOGV("\tEFFECT_CMD_SET_DEVICE disable LVM_BASS_BOOST %d",
*(int32_t *)pCmdData);
android::LvmEffect_disable(pContext);
pContext->pBundledContext->bBassTempDisabled = LVM_TRUE;
}
}else{
pContext->pBundledContext->bBassTempDisabled = LVM_TRUE;
} else {
LOGV("\tEFFECT_CMD_SET_DEVICE device is valid for LVM_BASS_BOOST %d",
*(int32_t *)pCmdData);
// If a device supports bassboost and the effect has been temporarily disabled
// previously then re-enable it
if(pContext->pBundledContext->bBassTempDisabled == LVM_TRUE){
if (pContext->pBundledContext->bBassEnabled == LVM_TRUE) {
LOGV("\tEFFECT_CMD_SET_DEVICE re-enable LVM_BASS_BOOST %d",
*(int32_t *)pCmdData);
android::LvmEffect_enable(pContext);
pContext->pBundledContext->bBassTempDisabled = LVM_FALSE;
}
pContext->pBundledContext->bBassTempDisabled = LVM_FALSE;
}
}
if(pContext->EffectType == LVM_VIRTUALIZER){
if((device == AUDIO_DEVICE_OUT_SPEAKER)||(device == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT)||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER)){
if (pContext->EffectType == LVM_VIRTUALIZER) {
if((device == AUDIO_DEVICE_OUT_SPEAKER)||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT)||
(device == AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER)){
LOGV("\tEFFECT_CMD_SET_DEVICE device is invalid for LVM_VIRTUALIZER %d",
*(int32_t *)pCmdData);
LOGV("\tEFFECT_CMD_SET_DEVICE temporary disable LVM_VIRTUALIZER");
@@ -3100,25 +3109,25 @@ int Effect_command(effect_handle_t self,
// the effect must still report its original state as this can only be changed
// by the ENABLE/DISABLE command
if(pContext->pBundledContext->bVirtualizerEnabled == LVM_TRUE){
if (pContext->pBundledContext->bVirtualizerEnabled == LVM_TRUE) {
LOGV("\tEFFECT_CMD_SET_DEVICE disable LVM_VIRTUALIZER %d",
*(int32_t *)pCmdData);
android::LvmEffect_disable(pContext);
pContext->pBundledContext->bVirtualizerTempDisabled = LVM_TRUE;
}
}else{
pContext->pBundledContext->bVirtualizerTempDisabled = LVM_TRUE;
} else {
LOGV("\tEFFECT_CMD_SET_DEVICE device is valid for LVM_VIRTUALIZER %d",
*(int32_t *)pCmdData);
// If a device supports virtualizer and the effect has been temporarily disabled
// previously then re-enable it
if(pContext->pBundledContext->bVirtualizerTempDisabled == LVM_TRUE){
if(pContext->pBundledContext->bVirtualizerEnabled == LVM_TRUE){
LOGV("\tEFFECT_CMD_SET_DEVICE re-enable LVM_VIRTUALIZER %d",
*(int32_t *)pCmdData);
android::LvmEffect_enable(pContext);
pContext->pBundledContext->bVirtualizerTempDisabled = LVM_FALSE;
}
pContext->pBundledContext->bVirtualizerTempDisabled = LVM_FALSE;
}
}
LOGV("\tEffect_command cmdCode Case: EFFECT_CMD_SET_DEVICE end");