From 97bb6e89845cb6d85f4d34a4efcc1de2ce585336 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Wed, 17 Oct 2012 10:57:02 -0700 Subject: Fix valgrind issues We were reading some uninitialized memory when creating bass boost and EQ effects, and using memcpy() with identical source and destination. Change-Id: I15ea1b2c52ae05cbf54aef04351e89805e0ebf8e --- media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c | 5 ++++- media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c | 3 +++ media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'media/libeffects/lvm') diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c index 3b3c07c..32c4ce0 100644 --- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c +++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Init.c @@ -232,6 +232,10 @@ LVDBE_ReturnStatus_en LVDBE_Init(LVDBE_Handle_t *phInstance, pInstance->pData->AGCInstance.AGC_Gain = pInstance->pData->AGCInstance.AGC_MaxGain; /* Default to the bass boost setting */ + // initialize the mixer with some fixes values since otherwise LVDBE_SetVolume ends up + // reading uninitialized data + pMixer_Instance = &pInstance->pData->BypassVolume; + LVC_Mixer_Init(&pMixer_Instance->MixerStream[0],0x00007FFF,0x00007FFF); /* * Initialise the volume @@ -242,7 +246,6 @@ LVDBE_ReturnStatus_en LVDBE_Init(LVDBE_Handle_t *phInstance, pInstance->pData->AGCInstance.Volume = pInstance->pData->AGCInstance.Target; /* Initialise as the target */ - pMixer_Instance = &pInstance->pData->BypassVolume; MixGain = LVC_Mixer_GetTarget(&pMixer_Instance->MixerStream[0]); LVC_Mixer_Init(&pMixer_Instance->MixerStream[0],MixGain,MixGain); diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c index e83e515..c4767a8 100644 --- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c +++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Init.c @@ -264,6 +264,9 @@ LVEQNB_ReturnStatus_en LVEQNB_Init(LVEQNB_Handle_t *phInstance, MemSize = (pCapabilities->MaxBands * sizeof(LVEQNB_BandDef_t)); pInstance->pBandDefinitions = (LVEQNB_BandDef_t *)InstAlloc_AddMember(&AllocMem, MemSize); + // clear all the bands, setting their gain to 0, otherwise when applying new params, + // it will compare against uninitialized values + memset(pInstance->pBandDefinitions, 0, MemSize); MemSize = (pCapabilities->MaxBands * sizeof(LVEQNB_BiquadType_en)); pInstance->pBiquadType = (LVEQNB_BiquadType_en *)InstAlloc_AddMember(&AllocMem, MemSize); diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp index 2eae7df..d706c2d 100644 --- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp +++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp @@ -2737,7 +2737,7 @@ int Effect_process(effect_handle_t self, outBuffer->s16[i] = clamp16((LVM_INT32)outBuffer->s16[i] + (LVM_INT32)inBuffer->s16[i]); } - } else { + } else if (outBuffer->raw != inBuffer->raw) { memcpy(outBuffer->raw, inBuffer->raw, outBuffer->frameCount*sizeof(LVM_INT16)*2); } } -- cgit v1.1