History log of /frameworks/av/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
a4fe9a13c432afc5d1e94a4617b75e8f962540e9 17-Oct-2012 Marco Nelissen <marcone@google.com> 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
c5cd686a83c6ea65a68d98023d5527fe4373d4e4 17-Sep-2012 Eric Laurent <elaurent@google.com> Fix THD with max user EQ preset volume again

There was a problem with previous fix in 1b6c677c where
the THD was good for max volume but bad for intermediate
high volume values.

This fix does not limit the band gains but apply a correction
to the effect bundle volume to take into account not only the
maximum band gain but also the average band gains weighted
by the proximity of each band to the max gain band.

Change-Id: Ibedd8da7fce1e163117f29b3da332da0e4fe8889
1b6c677c4bad5c1aea4f01277cf5aa234ad4cab4 11-Sep-2012 Eric Laurent <elaurent@google.com> Limit maximum equalizer gain.

Limit maximum gain in all EQ bands according to current volume so that
total gain (current volume + band gain) does not exceed a certain limit.
The gain difference between bands is preserved.

Change-Id: Ice5a9705a0b3353e8778b4c539a29ca9cdf60390
cba53fbdaa723322f7157a4890feab776beae13e 30-Aug-2012 Eric Laurent <elaurent@google.com> audio effects: fix bug in sample rate control.

Fix a bug in LVM bundle wrapper preventing audio framework sample rate
from being sent to the effect bundle instance.

Change-Id: I912027f866d3beac91b977bba869ff96a92d2a62
e44615ff6022239850a3ea459ad6e07b44c37544 24-Aug-2012 Eric Laurent <elaurent@google.com> Reduce THD when equalizer is ON.

Increase headroom in LVM bundle to reduce THD when equalizer is ON
with high band gains.

Also add a workaround for a bug in headroom parameter control.

Change-Id: I1d67c9ae475f6cf852c2e0e49bacfc82a5e484fd
a189a6883ee55cf62da1d7bf5bf5a8ab501938a4 20-Feb-2012 Glenn Kasten <gkasten@google.com> Use struct assignment instead of explicit memcpy

for POD structs effect_descriptor_t and effect_config_t

Change-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d
17a736c3e1d062d7fc916329eb32aef8935614af 14-Feb-2012 Glenn Kasten <gkasten@google.com> Update comments

Change-Id: I327663a020670d0a72ff57bd0b682e2ce0528650
b4d307481960b6b348fae4b4e8edefd003c3d36c 13-Mar-2012 Glenn Kasten <gkasten@google.com> Use correct syntax for #include <> ""

Change-Id: I943137108668ae66f8eba18dafe069a7951bcd8f
5e92a7861196ddae14638d4b7a63fc4892b7ef59 30-Jan-2012 Glenn Kasten <gkasten@google.com> Effect UUID inputs passed by pointer are const

Change-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8
3d5188bd6abe55898f10a0edf3c05aff8aa2ef67 17-Dec-2011 Eric Laurent <elaurent@google.com> audio effects: rename configure command

Renamed audio effect library interface command for audio format
This makes the naming more consistent with other exixsting commands
and allow adding a new command to get the configuration (EFFECT_CMD_GET_CONFIG).
Same change for reverse channel configuration renamed from

Implemented EFFECT_CMD_GET_CONFIG in exisitng effect libraries.

Change-Id: Ia7b1c620f13797fe5aceb3b0b4acbacce09fb067
45b92707d851458c73e320d2450cfc246b1167db 05-Nov-2011 Eric Laurent <elaurent@google.com> resolved conflicts for merge of 914972be to master

Change-Id: I15adb9040eaa206c31bb5a08ed5ee5b32967ba0a
f5a486a54d85ee59f4e9afa18b05c1946d749050 05-Nov-2011 Eric Laurent <elaurent@google.com> resolved conflicts for merge of 79178b8b to master

Change-Id: Ia597549a6d159b86063eb3afec5ce7fe98434a65
4d954c4ff6ab7110df23f1f3ebfe296beb97f3de 04-Nov-2011 Eric Laurent <elaurent@google.com> Merge "Fix device management in lvm effect bundle wrapper." into ics-mr1
5dc65e2ce92c7364da60bdff5f345daf145c2c0f 01-Nov-2011 Eric Laurent <elaurent@google.com> Fix problem in lvm effect bundle wrapper.

When an effect is disabled, the process function should either
copy or accumulate the content of the input buffer to the output buffer
depending on the behavior requested by the framework.
Current implementation is copying the input buffer unconditionally.

Related to issue 5433942.

Change-Id: Ic488ca97eadcc4c763de570d7e6c6f5b7a979415
b6431802fc6cff501a4311de288ba469839fbf86 01-Nov-2011 Eric Laurent <elaurent@google.com> Fix device management in lvm effect bundle wrapper.

The virtualizer and bass boost effects should be disabled when
not playing throught headsets or headphones.

There is a bug in current wrapper implementation that makes that those
effects are not disabled if the effect is enabled by the user after
the headset has been removed (current logic only works if the device selection
occurs while the effect is enabled).

Change-Id: I7c66b15a0339d95fb9ed13c8320d66379725d3b6
3856b090cd04ba5dd4a59a12430ed724d5995909 20-Oct-2011 Steve Block <steveblock@google.com> Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/#/c/143865

Bug: 5449033
Change-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a
ba7b8f881a9b6b21803752326d2932a3bd42d7cf 18-Jun-2011 Eric Laurent <elaurent@google.com> Audio Effect API: process reverse stream function

Added function to audio effect interface for processing of
a reverse stream.
This is necessary for audio pre processes like echo cancellation.

Change-Id: I6e12d79dbbed6376acdfc79304b8c0ab3f705eae
e1315cf0b63b4c14a77046519e6b01f6f60d74b0 18-May-2011 Eric Laurent <elaurent@google.com> New effect library API

Moved and renamed media/EffectApi.h to hardware/audio_effect.h
Modified the effect library API to expose a library info structure
containing an interface functions table.
Also removed enums for audio channels, audio format and devices
from effect API and use values from system/audio.h instead.

Modified effects factory to support new library interface format and
load libraries and efffects listed in audio_effects.conf file.
The file audio_effects.conf is first loaded from /vendor/etc and
then from /system/etc/audio_effects.conf if not found.

Modified existing effect libraries to implement the new library interface.

Change-Id: Ie52351e071b6d352fa2fbc06c3846686f8c45df9
d71a0e1ac517cf312b9a96fe5ba9de04f2b9ffd4 01-Mar-2011 Eric Laurent <elaurent@google.com> Fix issue 3499926.

Make sure that NumberEffectsEnabled is decremented at the same time as
SamplesToExitCountBb reaches 0 in Effect_process(). Not doing so
causes NumberEffectsEnabled not being decremented if Effect_setEnabled()
is called after SamplesToExitCountBb reaches 0 and before next Effect_process() is called.

Change-Id: Id827a301f93a5a09ecd9995a0c7d731ef526711a
dac69110ed1073bf0a9827a3f78698896dd05d97 28-Sep-2010 Eric Laurent <elaurent@google.com> Fix several audio effects problems.

Fixed the following issues in LVM effect bundle wrapper:
- memory leaks in EffectCreate() in case effect creation fails at various stages
- Added saturation when accumulating to output buffer
- Fixed problems with enabled effects count when an effect is released while enabled
- Do not allocate temporary buffer for accumulation each time process() is called

Fixed the following issues in effects framework (AudioFlinger)
- Release effect synchronously in the library when deleted from effect chain
- Do not call the effect process function if no tracks are present in the same
audio session

Change-Id: Ifbd80a163415cfb3c0a337c12082853ea45d9c91
29cc743e57f2a1701a0a0d3a0e5406ed0f2e8a89 16-Sep-2010 Eric Laurent <elaurent@google.com> Fix problem in lvm effect bundle wrapper

When an effect was deleted while enabled, the count of enabled effects
in the bundle was not decremented. Resulted a state where if another effect
was still enabled, its process function was called only every other time.

Change-Id: I59a0c5b7f50f416a9ecadae297b42912e56ddd51
e0aed6ddcb4e3c301b80aa26706b6052dab42c41 11-Sep-2010 Eric Laurent <elaurent@google.com> Fix volume problems with insert revert

- Use a constant input level to the reverb engine and implement volume control in the
insert reverb. This avoids the volume spikes when an effect that was inserted after
the reverb is disabled or removed.
- Fix clicks (one silent buffer) at the end of the reverb disable period.
- Modified volume management in audioflinger so that the volume ramp is also done by
the insert effect if present when the track is paused (avoids clicks).
- Increased room level for all presets.

Also fixed problems with output stage session (-1):
- effect bundle wrapper was not designed to support session -1
- the permission check in audioflinger for using session -1 failed due to a wrong usage of

Change-Id: Id1ff51327263364bf71d3f2668fa5cde4311d84f
2d3bf535004f7310fe04a4b5f46b6747cdb3c93f 03-Sep-2010 Eric Laurent <elaurent@google.com> LVM release 1.08 delivery.

- Changed bundle SamplesToExit to 0.1 secs
- Added SamplesToExit to Revreb
- Removed mixer from Core reverb

Change-Id: I675ec22889f20ef35a0ac427600c2654111c397e
8f45bd725549436eeacd12ee69349e2332ed8da5 31-Aug-2010 Eric Laurent <elaurent@google.com> Audio Effects: fix problems in volume control.

- Fixed click when re-enabling effect during the turn off phase:
make sure the effect states where effect is processed are the same
where volume control is delegated to effect.
- Fixed click when effect is deleted while still active: do not apply
volume ramp if an effect having volume control was just removed from the
effect chain.

Also fixed a crash when PCM dump is enabled in effect bundle wrapper.

Change-Id: Ib562f5cf75c69af75df0e862536262e2514493e4
d918324d44aa48b3b064ea9b87d0c520c38f15a9 27-Aug-2010 Eric Laurent <elaurent@google.com> LVM release 1.07 delivery.

- Virtualizer now uses the correct control parameter, instead of reverberation
- Volume smoothing for first frame has been added
- Equalizer_setParameter now returns correct error code
- Correcting Non-Linear compressor gain step noise during transitions and effect level changes
- Removed SVN header blocks
- Memory and MIPS values have been added to the API
- Reverb uses a more efficient malloc for input PCM
- Reverb DecayHFRatio now ranges up to 2000
- Logging has been removed for most volume functions

Change-Id: Ib59e7e331263c3811559231b4ae90c82e34a8421
97344f1d8e8e95fd07d5deee2ae2492a7e4c24b0 24-Aug-2010 Eric Laurent <elaurent@google.com> Added preset reverb.

Modified lvm reverb wrapper code to expose a preset reverb interface.
Also removed debug log from bundle and reverb wrapper.

Change-Id: If9b95d91e25a6ff834decdfdda34b17df9b46967
c59c6fd7f859b4010d788db89b8d4d76bbb70e57 04-Aug-2010 Eric Laurent <elaurent@google.com> LVM release 1.05 delivery

- Click have been removed from the HP filter activation in the BassBosst Effect.
- SessionId is now stored as a SessionNo
- Effects now stop being called after a delay
- Unix EOL fixed for .java and .xml
- Updated lines limited to 100 characters.
- Removed the remaining warnings from the wrapper code
- Added reverb

Change-Id: I03a2b3b5ee2286958f4901acc8d9b0daf9e2d7c6
7fa8a0ec14781a50695cf8c9dd2a85a5e8a3c3f0 18-Aug-2010 Eric Laurent <elaurent@google.com> Audio Effects: fixed "strength supported" parameter size.

The "strength supported" parameter for bass boost and virtualizer effect was incorrectly using a
short value whereas it should be an int. This is to comply to the definition of boolean type in OpenSL ES
that is uint32.

Change-Id: I74ccb61dcc70fc9d390524a1ca5bbbd8b13ab1af
3be9523784cc4038f601e510faee595117cdacb3 30-Jul-2010 Eric Laurent <elaurent@google.com> Audio effects: aligned Equalizer API argument types on OpenSL ES SLEqualizerItf.

Modified types of some arguments and returned values of the Equalizer class from int to short
to match those defined by OpenSL ES SLEqualizerItf interface.

Also fixed a problem with set properties in equalizer engine implementation.

Change-Id: I75894bad0cb67b01c18ca5e22f9687e75ee491b8
25f4395b932fa9859a6e91ba77c5d20d009da64a 28-Jul-2010 Eric Laurent <elaurent@google.com> Audio effects: modified command() parameter types.

The type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()
function have been modified from int to uint32_t. This is more consistent with their role.

Change-Id: I84d289fc262d6753747910f06f485597dfee6591
23e1de74359f4bb1763aef0adfebe073122b032c 23-Jul-2010 Eric Laurent <elaurent@google.com> Audio Effects: added methods to effects java classes to store and load current effect settings in
a single call.

Addional changes:
- Fixed simulator build
- Use effect interface UUIDs from OpenSL ES includes when available
- Added cleanspec rules to remove now obsolete test effect libraries
- Fixed bug in AudioEffect JNI setParameter function.

Change-Id: Ic25ddb135e2cec5a68c181d727321f5ac7a1ab6b
010ae0dd9eab40a49a840388230d8bb2f97c530e 26-Jul-2010 Eric Laurent <elaurent@google.com> Fixed bug in vlm effect bunde wrapper effect init function.

The status in the command reply field was not initialized by Effect_command() for
EFFECT_CMD_INIT causing unpredictable failures when initializing an effect.

Change-Id: I7dccb094c9244fad4ed9aea3062a395db295e082
163fbcf84010b98e0374110454d85b804bc8d13b 23-Jul-2010 Eric Laurent <elaurent@google.com> Audio effects: lvm bundle wrapper update after first integration tests.

Change-Id: I20cb55282833bd6e3a160e0dae1cc1fcb6b1ca30
de070137f11d346fba77605bd76a44c040a618fc 13-Jul-2010 Eric Laurent <elaurent@google.com> Audio policy manager changes for audio effects

Added methods for audio effects management by audio policy manager.
- control of total CPU load and memory used by effect engines
- selection of output stream for global effects
- added audio session id in parameter list for startOutput() and stopOutput().
this is not used in default audio policy manager implementation.

Modifications of audio effect framework in AudioFlinger to allow moving and reconfiguring
effect engines from one output mixer thread to another when audio tracks in the same session
are moved or when requested by audio policy manager.
Also fixed mutex deadlock problem with effect chains locks.

Change-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb
2c8e5cab3faa6d360e222b7a6c40a80083d021ac 09-Jul-2010 Eric Laurent <elaurent@google.com> First submission of audio effect library from NXP software.

This CL contains the first open sourceable version of the audio effect library from NXP software.
The effects implemented are:
- Bass boost
- Virtualizer (stereo widening)
- Equalizer
- Spectrum analyzer

Source file for the effect engines are located under libeffects/lvm/lib
The wrapper implementing the interface with the audio effect framework in under libeffects/lvm/wrapper

The code of other effect libraries has also been reorganized fo clarity:
- the effect factory is now under libeffects/factory
- the test equalizer and reverb effects are under libeffect/testlibs
- the visualizer is under libeffects/virtualizer

Change-Id: I8d91e2181f81b89f8fc0c1e1e6bf552c5809b2eb