Loading services/audioflinger/Effects.cpp +25 −17 Original line number Original line Diff line number Diff line Loading @@ -1058,6 +1058,13 @@ status_t AudioFlinger::EffectModule::configure() &size, &size, &cmdStatus); &cmdStatus); } } if (isVolumeControl()) { // Force initializing the volume as 0 for volume control effect for safer ramping uint32_t left = 0; uint32_t right = 0; setVolumeInternal(&left, &right, true /*controller*/); } } } // mConfig.outputCfg.buffer.frameCount cannot be zero. // mConfig.outputCfg.buffer.frameCount cannot be zero. Loading Loading @@ -1431,15 +1438,17 @@ status_t AudioFlinger::EffectModule::setVolume(uint32_t *left, uint32_t *right, ((mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL || ((mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_IND || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_IND || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_MONITOR)) { (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_MONITOR)) { uint32_t volume[2]; status = setVolumeInternal(left, right, controller); uint32_t *pVolume = NULL; } uint32_t size = sizeof(volume); return status; volume[0] = *left; volume[1] = *right; if (controller) { pVolume = volume; } } status = mEffectInterface->command(EFFECT_CMD_SET_VOLUME, status_t AudioFlinger::EffectModule::setVolumeInternal( uint32_t *left, uint32_t *right, bool controller) { uint32_t volume[2] = {*left, *right}; uint32_t *pVolume = controller ? volume : nullptr; uint32_t size = sizeof(volume); status_t status = mEffectInterface->command(EFFECT_CMD_SET_VOLUME, size, size, volume, volume, &size, &size, Loading @@ -1448,7 +1457,6 @@ status_t AudioFlinger::EffectModule::setVolume(uint32_t *left, uint32_t *right, *left = volume[0]; *left = volume[0]; *right = volume[1]; *right = volume[1]; } } } return status; return status; } } Loading services/audioflinger/Effects.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -306,6 +306,8 @@ private: ? EFFECT_BUFFER_ACCESS_WRITE : EFFECT_BUFFER_ACCESS_ACCUMULATE; ? EFFECT_BUFFER_ACCESS_WRITE : EFFECT_BUFFER_ACCESS_ACCUMULATE; } } status_t setVolumeInternal(uint32_t *left, uint32_t *right, bool controller); effect_config_t mConfig; // input and output audio configuration effect_config_t mConfig; // input and output audio configuration sp<EffectHalInterface> mEffectInterface; // Effect module HAL sp<EffectHalInterface> mEffectInterface; // Effect module HAL Loading Loading
services/audioflinger/Effects.cpp +25 −17 Original line number Original line Diff line number Diff line Loading @@ -1058,6 +1058,13 @@ status_t AudioFlinger::EffectModule::configure() &size, &size, &cmdStatus); &cmdStatus); } } if (isVolumeControl()) { // Force initializing the volume as 0 for volume control effect for safer ramping uint32_t left = 0; uint32_t right = 0; setVolumeInternal(&left, &right, true /*controller*/); } } } // mConfig.outputCfg.buffer.frameCount cannot be zero. // mConfig.outputCfg.buffer.frameCount cannot be zero. Loading Loading @@ -1431,15 +1438,17 @@ status_t AudioFlinger::EffectModule::setVolume(uint32_t *left, uint32_t *right, ((mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL || ((mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_CTRL || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_IND || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_IND || (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_MONITOR)) { (mDescriptor.flags & EFFECT_FLAG_VOLUME_MASK) == EFFECT_FLAG_VOLUME_MONITOR)) { uint32_t volume[2]; status = setVolumeInternal(left, right, controller); uint32_t *pVolume = NULL; } uint32_t size = sizeof(volume); return status; volume[0] = *left; volume[1] = *right; if (controller) { pVolume = volume; } } status = mEffectInterface->command(EFFECT_CMD_SET_VOLUME, status_t AudioFlinger::EffectModule::setVolumeInternal( uint32_t *left, uint32_t *right, bool controller) { uint32_t volume[2] = {*left, *right}; uint32_t *pVolume = controller ? volume : nullptr; uint32_t size = sizeof(volume); status_t status = mEffectInterface->command(EFFECT_CMD_SET_VOLUME, size, size, volume, volume, &size, &size, Loading @@ -1448,7 +1457,6 @@ status_t AudioFlinger::EffectModule::setVolume(uint32_t *left, uint32_t *right, *left = volume[0]; *left = volume[0]; *right = volume[1]; *right = volume[1]; } } } return status; return status; } } Loading
services/audioflinger/Effects.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -306,6 +306,8 @@ private: ? EFFECT_BUFFER_ACCESS_WRITE : EFFECT_BUFFER_ACCESS_ACCUMULATE; ? EFFECT_BUFFER_ACCESS_WRITE : EFFECT_BUFFER_ACCESS_ACCUMULATE; } } status_t setVolumeInternal(uint32_t *left, uint32_t *right, bool controller); effect_config_t mConfig; // input and output audio configuration effect_config_t mConfig; // input and output audio configuration sp<EffectHalInterface> mEffectInterface; // Effect module HAL sp<EffectHalInterface> mEffectInterface; // Effect module HAL Loading