diff options
author | Eric Laurent <elaurent@google.com> | 2011-03-01 12:18:41 -0800 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2011-03-01 12:35:18 -0800 |
commit | d71a0e1ac517cf312b9a96fe5ba9de04f2b9ffd4 (patch) | |
tree | 110dc24af6e6f8120738656436f1e20bdd5e8f0d /media | |
parent | c0bff9b96152179650dc9508799a38e35ef2a321 (diff) | |
download | frameworks_av-d71a0e1ac517cf312b9a96fe5ba9de04f2b9ffd4.zip frameworks_av-d71a0e1ac517cf312b9a96fe5ba9de04f2b9ffd4.tar.gz frameworks_av-d71a0e1ac517cf312b9a96fe5ba9de04f2b9ffd4.tar.bz2 |
Fix issue 3499926.
Make sure that NumberEffectsEnabled is decremented at the same time as
SamplesToExitCountBb reaches 0 in Effect_process(). Not doing so
causes NumberEffectsEnabled not being decremented if Effect_setEnabled()
is called after SamplesToExitCountBb reaches 0 and before next Effect_process() is called.
Change-Id: Id827a301f93a5a09ecd9995a0c7d731ef526711a
Diffstat (limited to 'media')
-rw-r--r-- | media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp index ebe3302..0b061db 100644 --- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp +++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp @@ -53,6 +53,11 @@ extern "C" const struct effect_interface_s gLvmEffectInterface; namespace android { namespace { +// Flag to allow a one time init of global memory, only happens on first call ever +int LvmInitFlag = LVM_FALSE; +SessionContext GlobalSessionMemory[LVM_MAX_SESSIONS]; +int SessionIndex[LVM_MAX_SESSIONS]; + /* local functions */ #define CHECK_ARG(cond) { \ if (!(cond)) { \ @@ -61,11 +66,6 @@ namespace { } \ } -// Flag to allow a one time init of global memory, only happens on first call ever -int LvmInitFlag = LVM_FALSE; -SessionContext GlobalSessionMemory[LVM_MAX_SESSIONS]; - -int SessionIndex[LVM_MAX_SESSIONS]; // NXP SW BassBoost UUID const effect_descriptor_t gBassBoostDescriptor = { @@ -2588,9 +2588,11 @@ extern "C" int Effect_process(effect_interface_t self, pContext->pBundledContext->SamplesToExitCountBb -= outBuffer->frameCount * 2; // STEREO //LOGV("\tEffect_process: Waiting to turn off BASS_BOOST, %d samples left", // pContext->pBundledContext->SamplesToExitCountBb); - } else { + } + if(pContext->pBundledContext->SamplesToExitCountBb <= 0) { status = -ENODATA; pContext->pBundledContext->NumberEffectsEnabled--; + LOGV("\tEffect_process() this is the last frame for LVM_BASS_BOOST"); } } if ((pContext->pBundledContext->bVolumeEnabled == LVM_FALSE)&& @@ -2606,9 +2608,11 @@ extern "C" int Effect_process(effect_interface_t self, pContext->pBundledContext->SamplesToExitCountEq -= outBuffer->frameCount * 2; // STEREO //LOGV("\tEffect_process: Waiting to turn off EQUALIZER, %d samples left", // pContext->pBundledContext->SamplesToExitCountEq); - } else { + } + if(pContext->pBundledContext->SamplesToExitCountEq <= 0) { status = -ENODATA; pContext->pBundledContext->NumberEffectsEnabled--; + LOGV("\tEffect_process() this is the last frame for LVM_EQUALIZER"); } } if ((pContext->pBundledContext->bVirtualizerEnabled == LVM_FALSE)&& @@ -2618,9 +2622,11 @@ extern "C" int Effect_process(effect_interface_t self, pContext->pBundledContext->SamplesToExitCountVirt -= outBuffer->frameCount * 2;// STEREO //LOGV("\tEffect_process: Waiting for to turn off VIRTUALIZER, %d samples left", // pContext->pBundledContext->SamplesToExitCountVirt); - } else { + } + if(pContext->pBundledContext->SamplesToExitCountVirt <= 0) { status = -ENODATA; pContext->pBundledContext->NumberEffectsEnabled--; + LOGV("\tEffect_process() this is the last frame for LVM_VIRTUALIZER"); } } |