Merge "Fix device management in lvm effect bundle wrapper." into ics-mr1
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user