From 09d5ca3766d4bab91cdaad7206716a5747ebad77 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 23 Jul 2010 09:01:44 -0700 Subject: LVM release 1.04. Remaining warnings in the code have been removed Core components support seamless insertion in the audio stream at playtime (Enabling / Disabling the effect). Change-Id: Icae7085305fad663faeb5a94cb673b41cec5a9f1 --- .../lvm/lib/StereoWidening/src/LVCS_BypassMix.c | 16 +++-- .../lvm/lib/StereoWidening/src/LVCS_Control.c | 69 ++++++++++------------ .../lvm/lib/StereoWidening/src/LVCS_Equaliser.c | 11 ++-- .../lvm/lib/StereoWidening/src/LVCS_Init.c | 29 +++------ .../lvm/lib/StereoWidening/src/LVCS_Private.h | 9 +-- .../lib/StereoWidening/src/LVCS_ReverbGenerator.c | 8 +-- .../lib/StereoWidening/src/LVCS_StereoEnhancer.c | 12 ++-- 7 files changed, 67 insertions(+), 87 deletions(-) (limited to 'media/libeffects/lvm/lib/StereoWidening') diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c index 2a83e89..b1d9408 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_BypassMix.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: nxp007753 $ - $Revision: 1246 $ - $Date: 2010-07-16 11:07:10 +0200 (Fri, 16 Jul 2010) $ + $Author: beq06068 $ + $Revision: 1307 $ + $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $ *************************************************************************************/ @@ -90,7 +90,7 @@ LVCS_ReturnStatus_en LVCS_BypassMixInit(LVCS_Handle_t hInstance, */ if ((pParams->OperatingMode == LVCS_ON) && (pInstance->bTimerDone == LVM_TRUE) - && (LVC_Mixer_GetTarget(&pInstance->MSBypassMixer.MixerStream[1]) != 0x7FFF) /* this indicates an off->on transtion */ + && (pInstance->MSTarget1 != 0x7FFF) /* this indicates an off->on transtion */ ) { pInstance->TransitionGain = pParams->EffectLevel; @@ -260,17 +260,15 @@ LVM_INT32 LVCS_MixerCallback(LVCS_Handle_t hInstance, LVM_INT16 CallbackParam) { LVCS_Instance_t *pInstance = (LVCS_Instance_t *)hInstance; - LVM_INT32 Target1; - Target1 = LVC_Mixer_GetTarget(&pInstance->MSBypassMixer.MixerStream[0]); - (void)pGeneralPurpose; + (void)pGeneralPurpose; /* * Off transition has completed in Headphone mode */ if ((pInstance->OutputDevice == LVCS_HEADPHONE) && (pInstance->bInOperatingModeTransition) && - (Target1 == 0x0000)&& /* this indicates an on->off transition */ + (pInstance->MSTarget0 == 0x0000)&& /* this indicates an on->off transition */ (CallbackParam == 0)) { /* Set operating mode to OFF */ @@ -289,7 +287,7 @@ LVM_INT32 LVCS_MixerCallback(LVCS_Handle_t hInstance, if ((pInstance->OutputDevice == LVCS_HEADPHONE) && - (Target1 == 1) && + (pInstance->MSTarget0 == 1) && (pInstance->bTimerDone == LVM_TRUE)){ /* Exit transition state */ diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c index 5dfca25..fea44bf 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Control.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: nxp007753 $ - $Revision: 1246 $ - $Date: 2010-07-16 11:07:10 +0200 (Fri, 16 Jul 2010) $ + $Author: beq06068 $ + $Revision: 1307 $ + $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $ *************************************************************************************/ @@ -94,9 +94,6 @@ LVCS_ReturnStatus_en LVCS_Control(LVCS_Handle_t hInstance, if (pParams->SampleRate != pInstance->Params.SampleRate) { - LVC_Mixer_VarSlope_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[0],LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); - - LVC_Mixer_VarSlope_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[1],LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); pInstance->TimerParams.SamplingRate = LVCS_SampleRateTable[pParams->SampleRate]; } @@ -130,6 +127,29 @@ LVCS_ReturnStatus_en LVCS_Control(LVCS_Handle_t hInstance, pInstance->VolCorrect = pLVCS_VolCorrectTable[Offset]; + LVC_Mixer_Init(&pInstance->BypassMix.Mixer_Instance.MixerStream[0],0,0); + + + { + LVM_UINT32 Gain; + const Gain_t *pOutputGainTable = (Gain_t*)&LVCS_OutputGainTable[0]; + Gain = (LVM_UINT32)(pOutputGainTable[Offset].Loss * LVM_MAXINT_16); + Gain = (LVM_UINT32)pOutputGainTable[Offset].UnprocLoss * (Gain >> 15); + Gain=Gain>>15; + /* + * Apply the gain correction and shift, note the result is in Q3.13 format + */ + Gain = (Gain * pInstance->VolCorrect.GainMin) >>12; + + LVC_Mixer_Init(&pInstance->BypassMix.Mixer_Instance.MixerStream[1],0,Gain); + LVC_Mixer_VarSlope_SetTimeConstant(&pInstance->BypassMix.Mixer_Instance.MixerStream[0], + LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); + LVC_Mixer_VarSlope_SetTimeConstant(&pInstance->BypassMix.Mixer_Instance.MixerStream[1], + LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); + + } + + err=LVCS_SEnhancerInit(hInstance, pParams); @@ -199,44 +219,15 @@ LVCS_ReturnStatus_en LVCS_Control(LVCS_Handle_t hInstance, /* Change transition bypass mixer settings if needed depending on transition type */ if(pParams->OperatingMode != LVCS_OFF){ - LVM_INT32 Current1; - LVM_INT32 Current2; - - Current1 = LVC_Mixer_GetCurrent(&pInstance->MSBypassMixer.MixerStream[0]); - Current2 = LVC_Mixer_GetCurrent(&pInstance->MSBypassMixer.MixerStream[1]); - - if(pInstance->bInOperatingModeTransition != LVM_TRUE) - { - Current1 = 0x00000000; - Current2 = LVM_MAXINT_16; - } - pInstance->MSBypassMixer.MixerStream[0].CallbackSet = 1; - pInstance->MSBypassMixer.MixerStream[1].CallbackSet = 1; - - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[0],LVM_MAXINT_16,Current1); - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[1],0,Current2); + pInstance->MSTarget0=LVM_MAXINT_16; + pInstance->MSTarget1=0; } else { - LVM_INT32 Current1; - LVM_INT32 Current2; - - Current1 = LVC_Mixer_GetCurrent(&pInstance->MSBypassMixer.MixerStream[0]); - Current2 = LVC_Mixer_GetCurrent(&pInstance->MSBypassMixer.MixerStream[1]); - - if(pInstance->bInOperatingModeTransition != LVM_TRUE) - { - Current1 = LVM_MAXINT_16; - Current2 = 0x00000000; - } - pInstance->MSBypassMixer.MixerStream[0].CallbackSet = 1; - pInstance->MSBypassMixer.MixerStream[1].CallbackSet = 1; pInstance->Params.OperatingMode = OperatingModeSave; - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[0],0x00000000,Current1); - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[1],LVM_MAXINT_16,Current2); + pInstance->MSTarget1=LVM_MAXINT_16; + pInstance->MSTarget0=0; } - LVC_Mixer_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[0],LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); - LVC_Mixer_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[1],LVCS_BYPASS_MIXER_TC,pParams->SampleRate,2); /* Set transition flag */ diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c index ca615b0..7ab6571 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Equaliser.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: beq07716 $ - $Revision: 1001 $ - $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ + $Author: nxp007753 $ + $Revision: 1315 $ + $Date: 2010-07-23 11:52:08 +0200 (Fri, 23 Jul 2010) $ *************************************************************************************/ @@ -94,8 +94,9 @@ LVCS_ReturnStatus_en LVCS_EqualiserInit(LVCS_Handle_t hInstance, Coeffs.B1 = (LVM_INT16)-pEqualiserCoefTable[Offset].B1; Coeffs.B2 = (LVM_INT16)-pEqualiserCoefTable[Offset].B2; - LoadConst_16((LVM_INT16)0, /* Value */ - (LVM_INT16 *)&pData->EqualiserBiquadTaps, /* Destination */ + LoadConst_16((LVM_INT16)0, /* Value */ + (void *)&pData->EqualiserBiquadTaps, /* Destination Cast to void:\ + no dereferencing in function*/ (LVM_UINT16)(sizeof(pData->EqualiserBiquadTaps)/sizeof(LVM_INT16))); /* Number of words */ BQ_2I_D16F32Css_TRC_WRA_01_Init(&pCoefficients->EqualiserBiquadInstance, diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c index 4aa95d3..f5f7cd0 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Init.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: beq07716 $ - $Revision: 1001 $ - $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ + $Author: beq06068 $ + $Revision: 1307 $ + $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $ *************************************************************************************/ @@ -159,7 +159,6 @@ LVCS_ReturnStatus_en LVCS_Init(LVCS_Handle_t *phInstance, LVCS_Capabilities_t *pCapabilities) { - LVM_INT16 Offset; LVCS_Instance_t *pInstance; LVCS_VolCorrect_t *pLVCS_VolCorrectTable; @@ -197,30 +196,18 @@ LVCS_ReturnStatus_en LVCS_Init(LVCS_Handle_t *phInstance, pInstance->Params.EffectLevel = 0; pInstance->Params.ReverbLevel = (LVM_UINT16)0x8000; pLVCS_VolCorrectTable = (LVCS_VolCorrect_t*)&LVCS_VolCorrectTable[0]; - Offset = (LVM_INT16)(pInstance->Params.SpeakerType + (pInstance->Params.SourceFormat*(1+LVCS_EX_HEADPHONES))); - pInstance->VolCorrect = pLVCS_VolCorrectTable[Offset]; + pInstance->VolCorrect = pLVCS_VolCorrectTable[0]; pInstance->TransitionGain = 0; + /* These current and target values are intialized again in LVCS_Control.c */ LVC_Mixer_Init(&pInstance->BypassMix.Mixer_Instance.MixerStream[0],0,0); + /* These current and target values are intialized again in LVCS_Control.c */ LVC_Mixer_Init(&pInstance->BypassMix.Mixer_Instance.MixerStream[1],0,0); /* * Initialise the bypass variables */ - pInstance->MSBypassMixer.MixerStream[0].CallbackParam = 0; - pInstance->MSBypassMixer.MixerStream[0].pCallbackHandle = LVM_NULL; - pInstance->MSBypassMixer.MixerStream[0].pCallBack = LVM_NULL; - pInstance->MSBypassMixer.MixerStream[0].CallbackSet = 0; - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[0],0,0); - LVC_Mixer_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[0],0,LVM_FS_44100,2); - - - pInstance->MSBypassMixer.MixerStream[1].CallbackParam = 0; - pInstance->MSBypassMixer.MixerStream[1].pCallbackHandle = LVM_NULL; - pInstance->MSBypassMixer.MixerStream[1].pCallBack = LVM_NULL; - pInstance->MSBypassMixer.MixerStream[1].CallbackSet = 0; - LVC_Mixer_Init(&pInstance->MSBypassMixer.MixerStream[1],0,0); - LVC_Mixer_SetTimeConstant(&pInstance->MSBypassMixer.MixerStream[1],0,LVM_FS_44100,2); - + pInstance->MSTarget0=0; + pInstance->MSTarget1=0; pInstance->bInOperatingModeTransition = LVM_FALSE; pInstance->bTimerDone = LVM_FALSE; pInstance->TimerParams.CallBackParam = 0; diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h index be30829..a977690 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Private.h @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: beq07716 $ - $Revision: 1001 $ - $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ + $Author: beq06068 $ + $Revision: 1307 $ + $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $ *************************************************************************************/ @@ -128,7 +128,8 @@ typedef struct LVCS_BypassMix_t BypassMix; /* Bypass mixer configuration */ /* Bypass variable */ - LVMixer3_2St_st MSBypassMixer; /* Bypass mixer used in transitions in MS mode */ + LVM_INT16 MSTarget0; /* Mixer state control variable for smooth transtion */ + LVM_INT16 MSTarget1; /* Mixer state control variable for smooth transtion */ LVM_INT16 bInOperatingModeTransition; /* Operating mode transition flag */ LVM_INT16 bTimerDone; /* Timer completion flag */ LVM_Timer_Params_t TimerParams; /* Timer parameters */ diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c index 2efef84..861bde6 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_ReverbGenerator.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: beq07716 $ - $Revision: 1001 $ - $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ + $Author: nxp007753 $ + $Revision: 1315 $ + $Date: 2010-07-23 11:52:08 +0200 (Fri, 23 Jul 2010) $ *************************************************************************************/ @@ -113,7 +113,7 @@ LVCS_ReturnStatus_en LVCS_ReverbGeneratorInit(LVCS_Handle_t hInstance, Coeffs.B2 = (LVM_INT16)-pReverbCoefTable[Offset].B2; LoadConst_16(0, /* Value */ - (LVM_INT16 *)&pData->ReverbBiquadTaps, /* Destination */ + (void *)&pData->ReverbBiquadTaps, /* Destination Cast to void: no dereferencing in function*/ (LVM_UINT16)(sizeof(pData->ReverbBiquadTaps)/sizeof(LVM_INT16))); /* Number of words */ BQ_2I_D16F16Css_TRC_WRA_01_Init(&pCoefficients->ReverbBiquadInstance, diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c index 4ff4716..b67d824 100755 --- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c +++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_StereoEnhancer.c @@ -17,9 +17,9 @@ /************************************************************************************ - $Author: beq07716 $ - $Revision: 1001 $ - $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ + $Author: nxp007753 $ + $Revision: 1315 $ + $Date: 2010-07-23 11:52:08 +0200 (Fri, 23 Jul 2010) $ *************************************************************************************/ @@ -90,7 +90,8 @@ LVCS_ReturnStatus_en LVCS_SEnhancerInit(LVCS_Handle_t hInstance, /* Clear the taps */ LoadConst_16(0, /* Value */ - (LVM_INT16 *)&pData->SEBiquadTapsMid, /* Destination */ + (void *)&pData->SEBiquadTapsMid, /* Destination Cast to void:\ + no dereferencing in function*/ (LVM_UINT16)(sizeof(pData->SEBiquadTapsMid)/sizeof(LVM_UINT16))); /* Number of words */ FO_1I_D16F16Css_TRC_WRA_01_Init(&pCoefficient->SEBiquadInstanceMid, @@ -116,7 +117,8 @@ LVCS_ReturnStatus_en LVCS_SEnhancerInit(LVCS_Handle_t hInstance, /* Clear the taps */ LoadConst_16(0, /* Value */ - (LVM_INT16 *)&pData->SEBiquadTapsSide, /* Destination */ + (void *)&pData->SEBiquadTapsSide, /* Destination Cast to void:\ + no dereferencing in function*/ (LVM_UINT16)(sizeof(pData->SEBiquadTapsSide)/sizeof(LVM_UINT16))); /* Number of words */ -- cgit v1.1