Loading media/libeffects/cyanogen-dsp/Effect.cpp +0 −10 Original line number Diff line number Diff line Loading @@ -107,13 +107,3 @@ int32_t Effect::command(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, uint return 0; } /* This implementation removes the effect at earliest opportunity. */ int32_t Effect::process(audio_buffer_t *in, audio_buffer_t *out) { int32_t status = process_effect(in, out); if (! mEnable && status == 0) { status = -ENODATA; } return status; } media/libeffects/cyanogen-dsp/Effect.h +1 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ class Effect { public: Effect(); virtual ~Effect(); int32_t process(audio_buffer_t *in, audio_buffer_t *out); virtual int32_t process(audio_buffer_t *in, audio_buffer_t *out) = 0; virtual int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData) = 0; virtual int32_t process_effect(audio_buffer_t *in, audio_buffer_t *out) = 0; }; media/libeffects/cyanogen-dsp/EffectBassBoost.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ void EffectBassBoost::refreshStrength() mBoost.setLowPass(55.0f, mSamplingRate, 0.5f + mStrength / 666.0f); } int32_t EffectBassBoost::process_effect(audio_buffer_t* in, audio_buffer_t* out) int32_t EffectBassBoost::process(audio_buffer_t* in, audio_buffer_t* out) { for (uint32_t i = 0; i < in->frameCount; i ++) { int32_t dryL = read(in, i * 2); Loading @@ -131,6 +131,6 @@ int32_t EffectBassBoost::process_effect(audio_buffer_t* in, audio_buffer_t* out) write(out, i * 2 + 1, dryR + boost); } return 0; return mEnable ? 0 : -ENODATA; } media/libeffects/cyanogen-dsp/EffectBassBoost.h +1 −1 Original line number Diff line number Diff line Loading @@ -16,5 +16,5 @@ class EffectBassBoost : public Effect { EffectBassBoost(); int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData); int32_t process_effect(audio_buffer_t *in, audio_buffer_t *out); int32_t process(audio_buffer_t *in, audio_buffer_t *out); }; media/libeffects/cyanogen-dsp/EffectCompression.cpp +29 −8 Original line number Diff line number Diff line Loading @@ -33,11 +33,11 @@ static int32_t max(int32_t a, int32_t b) } EffectCompression::EffectCompression() : mCompressionRatio(2.0) : mCompressionRatio(2.0), mFade(0) { for (int32_t i = 0; i < 2; i ++) { mCurrentLevel[i] = 0; mUserVolumes[i] = 1 << 24; mUserLevel[i] = 1 << 24; } } Loading Loading @@ -78,14 +78,14 @@ int32_t EffectCompression::command(uint32_t cmdCode, uint32_t cmdSize, void* pCm return -1; } if (cmdCode == EFFECT_CMD_SET_VOLUME) { if (cmdCode == EFFECT_CMD_SET_VOLUME && cmdSize == 8) { LOGI("Setting volumes"); if (pReplyData != NULL) { int32_t *userVols = (int32_t *) pCmdData; for (uint32_t i = 0; i < cmdSize / 4; i ++) { LOGI("user volume on channel %d: %d", i, userVols[i]); mUserVolumes[i] = userVols[i]; mUserLevel[i] = userVols[i]; } int32_t *myVols = (int32_t *) pReplyData; Loading @@ -96,13 +96,25 @@ int32_t EffectCompression::command(uint32_t cmdCode, uint32_t cmdSize, void* pCm } else { /* We don't control volume. */ for (int32_t i = 0; i < 2; i ++) { mUserVolumes[i] = 1 << 24; mUserLevel[i] = 1 << 24; } } return 0; } /* Init to current volume level on enabling effect to prevent * initial fade in / other shite */ if (cmdCode == EFFECT_CMD_ENABLE) { LOGI("Copying user levels as initial loudness."); /* Unfortunately Android calls SET_VOLUME after ENABLE for us. * so we can't really use those volumes. It's safest just to fade in * each time. */ for (int32_t i = 0; i < 2; i ++) { mCurrentLevel[i] = 0; } } return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData); } Loading @@ -122,7 +134,7 @@ uint64_t EffectCompression::estimateOneChannelLevel(audio_buffer_t *in, int32_t return (power / in->frameCount); } int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *out) int32_t EffectCompression::process(audio_buffer_t *in, audio_buffer_t *out) { /* Analyze both channels separately, pick the maximum power measured. */ uint64_t maximumPowerSquared = 0; Loading @@ -146,6 +158,15 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou /* turn back to multiplier */ float correctionDb = desiredLevelDb - signalPowerDb; if (mEnable && mFade != 100) { mFade += 1; } if (!mEnable && mFade != 0) { mFade -= 1; } correctionDb *= mFade / 100.f; /* Reduce extreme boost by a smooth ramp. * New range -50 .. 0 dB */ correctionDb -= powf(correctionDb/100, 2.0f) * (100.0f / 2.0f); Loading @@ -156,7 +177,7 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou /* Now we have correction factor and user-desired sound level. */ for (uint32_t i = 0; i < mChannels; i ++) { /* 8.24 */ int32_t desiredLevel = mUserVolumes[i] * correctionFactor >> 24; int32_t desiredLevel = mUserLevel[i] * correctionFactor >> 24; /* 8.24 */ int32_t volAdj = desiredLevel - mCurrentLevel[i]; Loading Loading @@ -186,5 +207,5 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou } } return 0; return mEnable || mFade != 0 ? 0 : -ENODATA; } Loading
media/libeffects/cyanogen-dsp/Effect.cpp +0 −10 Original line number Diff line number Diff line Loading @@ -107,13 +107,3 @@ int32_t Effect::command(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, uint return 0; } /* This implementation removes the effect at earliest opportunity. */ int32_t Effect::process(audio_buffer_t *in, audio_buffer_t *out) { int32_t status = process_effect(in, out); if (! mEnable && status == 0) { status = -ENODATA; } return status; }
media/libeffects/cyanogen-dsp/Effect.h +1 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ class Effect { public: Effect(); virtual ~Effect(); int32_t process(audio_buffer_t *in, audio_buffer_t *out); virtual int32_t process(audio_buffer_t *in, audio_buffer_t *out) = 0; virtual int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData) = 0; virtual int32_t process_effect(audio_buffer_t *in, audio_buffer_t *out) = 0; };
media/libeffects/cyanogen-dsp/EffectBassBoost.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,7 @@ void EffectBassBoost::refreshStrength() mBoost.setLowPass(55.0f, mSamplingRate, 0.5f + mStrength / 666.0f); } int32_t EffectBassBoost::process_effect(audio_buffer_t* in, audio_buffer_t* out) int32_t EffectBassBoost::process(audio_buffer_t* in, audio_buffer_t* out) { for (uint32_t i = 0; i < in->frameCount; i ++) { int32_t dryL = read(in, i * 2); Loading @@ -131,6 +131,6 @@ int32_t EffectBassBoost::process_effect(audio_buffer_t* in, audio_buffer_t* out) write(out, i * 2 + 1, dryR + boost); } return 0; return mEnable ? 0 : -ENODATA; }
media/libeffects/cyanogen-dsp/EffectBassBoost.h +1 −1 Original line number Diff line number Diff line Loading @@ -16,5 +16,5 @@ class EffectBassBoost : public Effect { EffectBassBoost(); int32_t command(uint32_t cmdCode, uint32_t cmdSize, void* pCmdData, uint32_t* replySize, void* pReplyData); int32_t process_effect(audio_buffer_t *in, audio_buffer_t *out); int32_t process(audio_buffer_t *in, audio_buffer_t *out); };
media/libeffects/cyanogen-dsp/EffectCompression.cpp +29 −8 Original line number Diff line number Diff line Loading @@ -33,11 +33,11 @@ static int32_t max(int32_t a, int32_t b) } EffectCompression::EffectCompression() : mCompressionRatio(2.0) : mCompressionRatio(2.0), mFade(0) { for (int32_t i = 0; i < 2; i ++) { mCurrentLevel[i] = 0; mUserVolumes[i] = 1 << 24; mUserLevel[i] = 1 << 24; } } Loading Loading @@ -78,14 +78,14 @@ int32_t EffectCompression::command(uint32_t cmdCode, uint32_t cmdSize, void* pCm return -1; } if (cmdCode == EFFECT_CMD_SET_VOLUME) { if (cmdCode == EFFECT_CMD_SET_VOLUME && cmdSize == 8) { LOGI("Setting volumes"); if (pReplyData != NULL) { int32_t *userVols = (int32_t *) pCmdData; for (uint32_t i = 0; i < cmdSize / 4; i ++) { LOGI("user volume on channel %d: %d", i, userVols[i]); mUserVolumes[i] = userVols[i]; mUserLevel[i] = userVols[i]; } int32_t *myVols = (int32_t *) pReplyData; Loading @@ -96,13 +96,25 @@ int32_t EffectCompression::command(uint32_t cmdCode, uint32_t cmdSize, void* pCm } else { /* We don't control volume. */ for (int32_t i = 0; i < 2; i ++) { mUserVolumes[i] = 1 << 24; mUserLevel[i] = 1 << 24; } } return 0; } /* Init to current volume level on enabling effect to prevent * initial fade in / other shite */ if (cmdCode == EFFECT_CMD_ENABLE) { LOGI("Copying user levels as initial loudness."); /* Unfortunately Android calls SET_VOLUME after ENABLE for us. * so we can't really use those volumes. It's safest just to fade in * each time. */ for (int32_t i = 0; i < 2; i ++) { mCurrentLevel[i] = 0; } } return Effect::command(cmdCode, cmdSize, pCmdData, replySize, pReplyData); } Loading @@ -122,7 +134,7 @@ uint64_t EffectCompression::estimateOneChannelLevel(audio_buffer_t *in, int32_t return (power / in->frameCount); } int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *out) int32_t EffectCompression::process(audio_buffer_t *in, audio_buffer_t *out) { /* Analyze both channels separately, pick the maximum power measured. */ uint64_t maximumPowerSquared = 0; Loading @@ -146,6 +158,15 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou /* turn back to multiplier */ float correctionDb = desiredLevelDb - signalPowerDb; if (mEnable && mFade != 100) { mFade += 1; } if (!mEnable && mFade != 0) { mFade -= 1; } correctionDb *= mFade / 100.f; /* Reduce extreme boost by a smooth ramp. * New range -50 .. 0 dB */ correctionDb -= powf(correctionDb/100, 2.0f) * (100.0f / 2.0f); Loading @@ -156,7 +177,7 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou /* Now we have correction factor and user-desired sound level. */ for (uint32_t i = 0; i < mChannels; i ++) { /* 8.24 */ int32_t desiredLevel = mUserVolumes[i] * correctionFactor >> 24; int32_t desiredLevel = mUserLevel[i] * correctionFactor >> 24; /* 8.24 */ int32_t volAdj = desiredLevel - mCurrentLevel[i]; Loading Loading @@ -186,5 +207,5 @@ int32_t EffectCompression::process_effect(audio_buffer_t *in, audio_buffer_t *ou } } return 0; return mEnable || mFade != 0 ? 0 : -ENODATA; }