diff options
| author | Eric Laurent <elaurent@google.com> | 2011-11-04 08:27:45 -0700 | 
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-04 08:27:45 -0700 | 
| commit | 047f160561fc7a87fc5794762d36225bfa5d2e89 (patch) | |
| tree | ee130b1d3b1b4ba24f93f3106fd83e485605d41d /media | |
| parent | fc1a3ac1641b8849bf925a6bf0fa96b2abcdd91f (diff) | |
| parent | 5dc65e2ce92c7364da60bdff5f345daf145c2c0f (diff) | |
| download | frameworks_av-047f160561fc7a87fc5794762d36225bfa5d2e89.zip frameworks_av-047f160561fc7a87fc5794762d36225bfa5d2e89.tar.gz frameworks_av-047f160561fc7a87fc5794762d36225bfa5d2e89.tar.bz2  | |
Merge "Fix problem in lvm effect bundle wrapper." into ics-mr1
Diffstat (limited to 'media')
| -rw-r--r-- | media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp | 28 | 
1 files changed, 19 insertions, 9 deletions
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp index efa1c45..fb48c51 100644 --- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp +++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp @@ -49,6 +49,16 @@ extern "C" const struct effect_interface_s gLvmEffectInterface;          }\      } + +static inline int16_t clamp16(int32_t sample) +{ +    // check overflow for both positive and negative values: +    // all bits above short range must me equal to sign bit +    if ((sample>>15) ^ (sample>>31)) +        sample = 0x7FFF ^ (sample>>31); +    return sample; +} +  // Namespaces  namespace android {  namespace { @@ -707,13 +717,6 @@ int LvmBundle_init(EffectContext *pContext){  }   /* end LvmBundle_init */ -static inline int16_t clamp16(int32_t sample) -{ -    if ((sample>>15) ^ (sample>>31)) -        sample = 0x7FFF ^ (sample>>31); -    return sample; -} -  //----------------------------------------------------------------------------  // LvmBundle_process()  //---------------------------------------------------------------------------- @@ -2683,12 +2686,19 @@ int Effect_process(effect_handle_t     self,              LOGV("\tLVM_ERROR : LvmBundle_process returned error %d", lvmStatus);              return lvmStatus;          } -    }else{ +    } else {          //LOGV("\tEffect_process Not Calling process with %d effects enabled, %d called: Effect %d",          //pContext->pBundledContext->NumberEffectsEnabled,          //pContext->pBundledContext->NumberEffectsCalled, pContext->EffectType);          // 2 is for stereo input -        memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount*sizeof(LVM_INT16)*2); +        if (pContext->config.outputCfg.accessMode == EFFECT_BUFFER_ACCESS_ACCUMULATE) { +            for (size_t i=0; i < outBuffer->frameCount*2; i++){ +                outBuffer->s16[i] = +                        clamp16((LVM_INT32)outBuffer->s16[i] + (LVM_INT32)inBuffer->s16[i]); +            } +        } else { +            memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount*sizeof(LVM_INT16)*2); +        }      }      return status;  | 
