7459b90d769a85a4727a2fc02aa96695454ba652 |
|
20-Apr-2017 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix mmap stream volume Fix bad casting from MmapPlaybackThread to VolumeInterface causing volume commands to be lost by audio flinger for MMAP threads. Bug: 37518243 Test: Verify volume is received by the audio HAL on MMAP streams Verify no regression for other stream types. Change-Id: I584ae868245358b2edefecc46a5249092f8be229
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d9534fb35245b8bcd2489e717bdd1ad9269b3000 |
|
12-Apr-2017 |
Phil Burk <philburk@google.com> |
Merge "AAudioService: integrated with audioserver" into oc-dev
|
c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fb |
|
09-Feb-2017 |
Phil Burk <philburk@google.com> |
AAudioService: integrated with audioserver Call the MmapStreamInterface from AudioFlinger instead of the FakeHAL. Fix sending timestamps from the thread. Add shared mode in service. Bug: 35260844 Bug: 33398120 Test: CTS test_aaudio.cpp Change-Id: I44c7e4ecae4ce205611b6b73a72e0ae8a5b243e5 Signed-off-by: Phil Burk <philburk@google.com> (cherry picked from commit 7f6b40d78b1976c78d1300e8a51fda36eeb50c5d)
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ddb332138cc8f3b4efad9b14b038f0a462b1b661 |
|
12-Apr-2017 |
Glenn Kasten <gkasten@google.com> |
Merge "Improve audio logs and dumpsys media.audio_flinger" into oc-dev
|
3ac24a14e36085bb26b65652e11747deda0f1e18 |
|
10-Apr-2017 |
Glenn Kasten <gkasten@google.com> |
Fix log spam for media.log Bug: 36481537 Test: logcat does not show "Waiting for service media.log" Change-Id: Ia69b679d3b1f1dd292237c63855ff650566df133 (cherry picked from commit 04b96fc3a6cfa8312c51bbba4e5729c9dd869f78)
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6d8018f0b7be9deec6b0acab10a0dca6e91d0fb8 |
|
21-Feb-2017 |
Glenn Kasten <gkasten@google.com> |
Improve audio logs and dumpsys media.audio_flinger Include mFrameCount in shared memory corrupt error log. Fix typo in log for primary audio interface. Include the new server frame count in logs for fast tracks. Always log when fast is successful for output tracks, as it helpful (was already there for input). Cleanup dumpsys for threads. Bug: 37153050 Test: builds OK, and logs contain more information Change-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e (cherry picked from commit 1bfe09a0b1755a79abd32b41c0dd433b88fc260c)
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
886deb506ea2938cfec40fc0dd2bff072850386b |
|
13-Mar-2017 |
Glenn Kasten <gkasten@google.com> |
Merge "Re-format to decrease the maximum line length of files to 100 characters"
|
d3bb645f0b7f567b033b8664499d685f8ec10628 |
|
06-Dec-2016 |
Glenn Kasten <gkasten@google.com> |
Re-format to decrease the maximum line length of files to 100 characters Test: compiles OK Change-Id: Ibe663032cd390ed2bcca6dc921d47732e6e15e21
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dcdfaecc1fa630a799e1fdb508a9b92da55abc36 |
|
14-Feb-2017 |
Nicolas Roulet <nicoroulet@google.com> |
NBLog periodic merging thread Bug: 35468674 Test: no change in functionality, everything works as before Change-Id: Id2cea243bc15767ca6803c9505bf23a18411500e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7863c791dba8c4e5e9591b6837d410e580be0a25 |
|
10-Feb-2017 |
Eric Laurent <elaurent@google.com> |
Merge changes from topic 'mmap_no_irq' * changes: Add support for mmap stream audioflinger: define MMAP HAL Stream control interface
|
8eacd8090e16c022dcbb11850cff83f984fe2357 |
|
03-Feb-2017 |
Nicolas Roulet <nicoroulet@google.com> |
Merge "Implemented typed, thread-specific logging system. Currently supported types are: * Strings * Integers * Floats * Timestamps * Process IDs"
|
fe1e1449cadff4f946c33403aecc73b4b4a11e56 |
|
30-Jan-2017 |
Nicolas Roulet <nicoroulet@google.com> |
Implemented typed, thread-specific logging system. Currently supported types are: * Strings * Integers * Floats * Timestamps * Process IDs Added printf-like formatted logging using mentioned types. Test: included in this CL Bug: 29421410 Change-Id: Ie07b78d8d39c32fcc8a122ffa9b1b7082800b990
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
32ba98626834cb77e5d14b3e419385f0e32ec0bc |
|
01-Feb-2017 |
Yunlian Jiang <yunlian@google.com> |
Fix warning: Dereference of null pointer. Bug: None Test: The warning is gone. Change-Id: I4c08397c0ee18c7714eb9b1029844d427259907b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6acd1d432f526ae9a055ddaece28bf93b474a776 |
|
04-Jan-2017 |
Eric Laurent <elaurent@google.com> |
Add support for mmap stream Add support for MMAP streams created by Oboe service. - A new audio thread class MmapThread deriving from ThreadBase is added to manage permissions, volume, routing and wakelocks for activity on MMAP streams. - Requests received over MmapStreamInterface to open, start and stop a MMAP stream are forwarded to audio policy manager so that activity on MMAP capture and playback streams is visible to audio policy and taken into account in volume and routing management. ` Bug: Bug: 33398120 Test: manual test Change-Id: I957906495fe9277d2972d810b633f50cd1e14ec3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fc23520d9c3f15e28baa81de5f7dfa6c1b0af426 |
|
21-Dec-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: define MMAP HAL Stream control interface Added definition of MmapStreamInterface used by Oboe service to open, configure and control MMAP streams at the audio HAl. This interface is implemented by audioflinger and abstracts the details of interacting with audio policy manager and audio HAL from Oboe service. A callback interface MmapStreamCallback is also defiend to communicate volume and routing changes back to Oboe service. Bug: 33398120 Test: build Change-Id: If953d44903aaa4eb17ff16f1922ca16e5e0e0a87
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
068561c8e84569d51df2adbbb53b56fdfd09c06b |
|
04-Jan-2017 |
Andy Hung <hunga@google.com> |
AudioFlinger: Split off audio processing library Test: native AudioResampler test, general playback test Bug: 31015569 Change-Id: Ifb248f4402a583438d756c014dcd7a4577aef713
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
535e161e2e404dffb8389dd331be0132704b6d82 |
|
05-Dec-2016 |
Glenn Kasten <gkasten@google.com> |
media.log: re-implement NBLog using audio_utils_fifo NBLog previously has its own shared memory circular buffer code. Now NBLog operates on top of the circular buffer code in audio_utils. Test: media.log still works Change-Id: Ib3026d2a96e6c0b433603e8baf19164ad97a1e1f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6a308b02f138e358fb239ee2df5d54dd988f34fd |
|
16-Dec-2016 |
Eric Laurent <elaurent@google.com> |
Merge "Add unique audio port IDs to AudioTrack and AudioRecord"
|
20b9ef0b55c9150ae11057ab997ae61be2d496ef |
|
05-Dec-2016 |
Eric Laurent <elaurent@google.com> |
Add unique audio port IDs to AudioTrack and AudioRecord This will allow to track activity at the track level instead of at audio session level as only possible with current implementation. AudioTracks and AudioRecords will receive a unique audio port ID the first time they register to audio policy with getOutputForAttr()/getInputForAttr() and keep this ID for their lifetime. This CL is the first partial change and just updates the audio policy and audio flinger APIs used at track creation time. Test: basic regression test of audio playback and capture use cases Change-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b643627a557e44b9ab5879cf71e162af2d514ce3 |
|
08-Dec-2016 |
Eric Laurent <elaurent@google.com> |
fix client pid for effects applied by audio policy Test: Hangouts call, Play Music with and w/o effects Change-Id: Ia9b20f94be667dd92e0497f8ef9c0dc0e95afe28
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eac5ddad235d11c64ff34037789466f22be4e005 |
|
02-Dec-2016 |
TreeHugger Robot <treehugger-gerrit@google.com> |
Merge "improve audio effect framwework thread safety"
|
0d5a2ed0a05a2bf337c68edb54f24c60e18032c1 |
|
02-Dec-2016 |
Eric Laurent <elaurent@google.com> |
improve audio effect framwework thread safety - Reorganize handle effect creation code to make sure the effect engine is created with both thread and effect chain mutex held. - Reorganize handle disconnect code to make sure the effect engine is released with both thread and effect chain mutex held. - Protect IEffect interface methods in EffectHande with a Mutex. - Only pin effect if the session was acquired first. - Do not use strong pointer to EffectModule in EffectHandles: only the EffectChain has a single strong reference to the EffectModule. Test: Tested with EffectTest app. Regression tests in main audio use cases. Bug: 32707507 Change-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f558e0218d2677a813c9c600886f673894eec927 |
|
15-Nov-2016 |
Mikhail Naganov <mnaganov@google.com> |
libaudiohal: Implement simple HIDL client This client requires both HIDL client and server to be of the same ABI version (e.g. 32-bit). EffectHalHidl::process and EffectHalHidl::processReverse are stubs. Some extra warnings are logged due to unimplemented functions in the legacy HAL. Bug: 30222631 Change-Id: Id074131dec6d6c4f1031695abcf3ea066e92a5af Test: Play Music (play / EQ), YouTube, Loopback RTLT, Ok Google on N5X
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
913d06c099bd689375483a839e11057ccf284d1c |
|
01-Nov-2016 |
Mikhail Naganov <mnaganov@google.com> |
Move TypeConverter into a shared library This will be needed for the default implementation of the audio HAL in TREBLE for parsing supported formats etc. provided by HAL in a form of string literals. As a bonus, remove some hand-written type conversions in AudioFlinger used in dumps. Example changes in the dump output: HAL format: 0x1 (pcm16) ==> HAL format: 0x1 (AUDIO_FORMAT_PCM_16_BIT) Processing format: 0x5 (pcmfloat) ==> Processing format: 0x5 (AUDIO_FORMAT_PCM_FLOAT) Output device: 0x2 (SPEAKER) ==> Output device: 0x2 (AUDIO_DEVICE_OUT_SPEAKER) Input device: 0 (NONE) ==> Input device: 0 (AUDIO_DEVICE_NONE) AudioStreamOut: 0x... flags 0x6 (PRIMARY|FAST) ==> AudioStreamOut: 0x... flags 0x6 (AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST) Test: make & run Change-Id: I9cde640e6827b7aa6d62e9caade9e738227e299f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3bd1c87ac0d767566f5da387e90b8a3cd86ecc97 |
|
26-Sep-2016 |
rago <rago@google.com> |
Buffer Log functionality for AudioFlinger Similar to ALOGV, this allows to capture to file audio samples from within audioservice for debuggin purposes. Test: manual. Mostly used for debugging Change-Id: I4d43f573926805a27be910e343476c3f1be51579
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9ee0540d3a61bff03d561ca431a371c3d9335d2b |
|
14-Oct-2016 |
Mikhail Naganov <mnaganov@google.com> |
Remove last references to hardware/audio.h DeviceHalInterface transitioned to "capabilities" model (similar to the one already used by streams, e.g. 'supportsDrain'). No direct checking of the HAL version is needed. AudioPolicy uses its own version read from the configuration, and these values never checked against the actual HAL version, thus it does not need versions and macroses from hardware/*. Test: make & run on N6P Change-Id: Ic4a56bfa19a9a61edac2b9f9a163fd8f63a0ff87
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9fe94012187a29eeeca2c74e75f121192560fba0 |
|
14-Oct-2016 |
Mikhail Naganov <mnaganov@google.com> |
Split audio effects headers There can be different use cases with the code that imports headers from audio_effects (each subsequent case is a more specialized version of the previous one): 1. The code only needs access to general structures like effect_descriptor_t: ==> include system/audio_effect.h Example: AudioSystem in libmedia 2. The code that needs access to effect UUID and parameter enums: ==> include system/audio_effects/effect_foo.h Examples: media framework effects interfaces, libwilhelm 3. The code that needs to call into HAL: ==> include hardware/audio_effect.h Examples: libaudiohal (implementation part) and libeffects 4. The code that implements a particular effect: ==> include audio_effects/effect_foo.h Examples: cts/.../CTSTestEffect.cpp stuff in hardware/, vendor/ Note that AudioPolicy still deals with the effects HAL directly, this needs to be fixed. Change-Id: I963335ede6a196f9225caf21e1a01d03635e363c Test: make
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
00260b5e6996b0a4b12f71c5b84e44adea040534 |
|
13-Oct-2016 |
Mikhail Naganov <mnaganov@google.com> |
Remove dependencies on hardware/audio_effects.h and EffectsFactoryApi.h Also remove some outstanding dependencies on hardware/audio.h. Most of the time, only constants and structs from audio_effects.h are used, and no actual calls into HAL are made. Move these definitions into system/audio_effect.h, and generate constants from TREBLE HAL definition. For parameters, always use values from AudioParameter class. There are still some outstanding includes of hardware/audio.h in code that directly deals with audio modules. Need to extend libaudiohal interfaces to support required functionality. Test: make Change-Id: I0bcdf8ae199485d4d65f3eeb7e7a3b9b5cdb6ab6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cbc8f617c1aebef5d041fa40dcd38a5466690b99 |
|
12-Oct-2016 |
Mikhail Naganov <mnaganov@google.com> |
Eliminate dependencies on hardware/audio.h (trivial cases) frameworks/av must not depend on hardware/ (except for the code from libaudiohal that actually calls into HAL). This CL deals with simple cases where depending on system/audio.h is enough. Change-Id: Ia2cb66cc8c92316ce5ab884a008d5e531263c2e4 Test: make
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a0c91339814f37ea78365afb436c9f3d1f0a0090 |
|
19-Sep-2016 |
Mikhail Naganov <mnaganov@google.com> |
Update NBAIO to use the new audio HAL abstraction layer Moved the HAL access abstraction layer to a separate library so it can be used both by audioflinger and libnbaio. Bug: 30222631 Test: manual with Loopback app, Hangouts, YouTube Change-Id: Id622c2f1aa8f55a775d34f369a596c2c4d29d5be
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1dc98674f701dada94143b4d31b7221c58346c6c |
|
19-Aug-2016 |
Mikhail Naganov <mnaganov@google.com> |
Abstract away access to audio streams HAL in AudioFlinger In this CL all direct access to audio_stream_t, audio_stream_out_t, and audio_stream_in_t their functions is encapsulated within the new hierarchy of Stream[In|Out]HalLocal classes. AudioFlinger uses interface classes Stream[In|Out]HalInterface to access these functions. Note that NBAIO still receives raw HAL stream handles and needs to be converted separately. Bug: 30222631 Test: manual with Loopback app Change-Id: I6388cfa2006791c9c0aa7bb186719209726a2d48
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e4f1f63a2c54ee8687ad8cca18df0f6639ad7c81 |
|
31-Aug-2016 |
Mikhail Naganov <mnaganov@google.com> |
Abstract away access to audio devices HAL In this CL all direct access to audio_hw_device_t and its functions is encapsulated within the new class DeviceHalLocal. Loading of hardware modules is encapsulated withing DevicesFactoryHalLocal. AudioFlinger uses interface classes DevicesFactoryHalInterface and DeviceHalInterface to access these functions. Bug: 30222631 Change-Id: Ic88b20c55813a24b898f4a832e082c17d81935b7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1724ee3caa5f0b4e73979036073f0b71a115083a |
|
13-Sep-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix error reporting in setParameters() am: d21bcd272d am: 2e992bd188 am: 92cd1cd127 Change-Id: I7bccd116e024720dbb50e9b8e9e52144b7a1b54e
|
92cd1cd127082f85cefad6fffe6671a991a52fe9 |
|
13-Sep-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix error reporting in setParameters() am: d21bcd272d am: 2e992bd188 Change-Id: I7669ac1ca3a37d0c11e6c15c72c26666cd14e227
|
d21bcd272d43285baa32ffd48c909b4a29c614a4 |
|
09-Sep-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix error reporting in setParameters() Return NO_ERROR if at least one audio HAL module returns NO_ERROR as not all HALs are requested to support all parameters. Bug: 31258387 Change-Id: Ia509c272f150afe7f56c699553f2e8782d69fd9b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
598857bdcfc99e8afc597ea815a9b93aa81fe0c4 |
|
31-Aug-2016 |
Andy Hung <hunga@google.com> |
AudioFlinger: Disable (revert) LockWatch am: deb0335714 am: d8d2728947 am: 5d819b4794 am: 9b7a8f9461 Change-Id: I1840bd725020242337af910ea3f51cd094e3c937
|
9b7a8f94619b6847db7dc37deb5918b6f3439a43 |
|
31-Aug-2016 |
Andy Hung <hunga@google.com> |
AudioFlinger: Disable (revert) LockWatch am: deb0335714 am: d8d2728947 am: 5d819b4794 Change-Id: I4754604909ec4658aa3d12e70dbb735e34955901
|
deb0335714cabc906098fb1d971d992027267fc6 |
|
29-Aug-2016 |
Andy Hung <hunga@google.com> |
AudioFlinger: Disable (revert) LockWatch Revert "audioflinger: add watchdog on main mutex" This reverts commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229. Revert "LockWatch: Update to Mutex::timeLock specs" This reverts commit 51a6319111df875710dab25a1a99b10d002c4869. Bug: 30936184 Change-Id: I0f6df6c98c06e161038b1bf0aae5912619cb4066
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4a3d5c23f79189eb7ab9f31c440c7da5b15947a2 |
|
15-Aug-2016 |
Mikhail Naganov <mnaganov@google.com> |
Abstract away access to audio effects HAL and factory In this CL all direct calls to functions from EffectsFactoryApi.h and hardware/audio_effect.h are encapsulated within two new classes: EffectsFactoryHalLocal and EffectHalLocal. AudioFlinger uses interface classes EffectsFactoryHalInterface and EffectHalInterface to access these functions. Bug: 30222631 Change-Id: Id64b9c5529319077f6f968921489a13f60daa977
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
82f5b811b2767289ebb8a9e6af1919c3b72b5121 |
|
17-Aug-2016 |
Eric Laurent <elaurent@google.com> |
DO NOT MERGE ANYWHERE (nyc-dr1-dev) audioflinger: add watchdog on main mutex Check every 10 seconds if main audioflinger mutex can be acquired and trigger audioserver process restart if not. This will allow to capture tombstones of locked up situations and avoid the disruption of a system_server restart. Bug: 30737845 Bug: 30388410 Change-Id: I8a78b8cf813982f70ea598a6d42affc0ecaa76c9 (cherry picked from commit 17a58b2560c38a8e31a38186f9ab6eb98a38e229)
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
85d5dffa0a8f523bd577296c3759479f7db2ddec |
|
18-Aug-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: add watchdog on main mutex am: 17a58b2560 am: ed31582734 Change-Id: I9d5d0573220ba5811d06f2aa2217919a68d8529b
|
17a58b2560c38a8e31a38186f9ab6eb98a38e229 |
|
17-Aug-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: add watchdog on main mutex Check every 10 seconds if main audioflinger mutex can be acquired and trigger audioserver process restart if not. This will allow to capture tombstones of locked up situations and avoid the disruption of a system_server restart. Bug: 30737845 Bug: 30388410 Change-Id: I8a78b8cf813982f70ea598a6d42affc0ecaa76c9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5ca8f32280377dd923e72c3c6bd3994217461b8b |
|
11-Aug-2016 |
Chih-Hung Hsieh <chh@google.com> |
resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9 am: 63ef5a38f8 Change-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4
|
df5d9246f9607b1c2f8b134c46a05af06e206da3 |
|
11-Aug-2016 |
Chih-Hung Hsieh <chh@google.com> |
resolve merge conflicts of fd923e7 to stage-aosp-master Change-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192
|
36d0ca16024820df9a12903d2ac443fabcc180bc |
|
09-Aug-2016 |
Chih-Hung Hsieh <chh@google.com> |
Fix clang-tidy warnings in audio and playerservice. * Add explicit keyword to conversion constructors. Bug: 28341362 * Use const reference type for read-only parameters. Bug: 30407689 Test: build with WITH_TIDY=1 Change-Id: I265f3b094e08d5705b506b3fbba51439c134af84 Merged-In: I265f3b094e08d5705b506b3fbba51439c134af84
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b78d2df84cfc926142ad95ba35e8ec6ab2f74eb3 |
|
19-Jul-2016 |
Glenn Kasten <gkasten@google.com> |
Merge \"Fix build error in tee sink\" into nyc-mr1-dev am: 542cb3f429 Change-Id: Ib37734943602043786c9674e9ff5bf802864aa39
|
fbd87e8b685d1b1511bc40e232f9e7674271d57b |
|
19-Jul-2016 |
Glenn Kasten <gkasten@google.com> |
Fix build error in tee sink Bug: 30203029 Change-Id: I4b595c81f570fd12f7a1c7deb6db7e3139276481
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f517d276a8bfe4034106abf8009fcd6cc28a0838 |
|
09-Jul-2016 |
Eric Laurent <elaurent@google.com> |
Merge \"Add Dolby TrueHD audio format\" into nyc-mr1-dev am: 5cc2e814ac Change-Id: Ib3561d806b00c949789f463c4609844399bb7095
|
e30f20963751c07860bfbc92b5ff8948fc55797f |
|
08-Jul-2016 |
Eric Laurent <elaurent@google.com> |
Add Dolby TrueHD audio format Also add missing formats in AudioFlinger string conversion utility. Bug: 30024357 Change-Id: I75bdb54daeb786543f545ec3a772121055e01cdb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6a013ba332a00b684d48e77db2fce5802170e580 |
|
21-Jun-2016 |
Glenn Kasten <gkasten@google.com> |
Merge \"getPrimary APIs now examine all non-duplicating output threads\" into nyc-mr1-dev am: 3f69461e78 Change-Id: I76898dd3427d8e8b3a9d64bd01b60f137c7cb91f
|
3f69461e78fb74211847c3bab161bcad7ae81398 |
|
21-Jun-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "getPrimary APIs now examine all non-duplicating output threads" into nyc-mr1-dev
|
ad67b138fcec25ba99254e826c559778adf0e7f3 |
|
21-Jun-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: add check for effect vs thread compatibility am: 4c415062ad Change-Id: Idbdb7591b291c09ced94d4eabae0edc3581e1bcd
|
4c415062ad1bb53e9af8f644d8215837262b79bb |
|
18-Jun-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: add check for effect vs thread compatibility Make sure that only HW accelerated effects are added on FAST playback or record threads and no effect is added on threads with RAW flag. Make sure that tracks with RAW and FAST flags are compatible with exiting effects on a playback or record threads and clear flags accordingly. Bug: 4999001 Change-Id: I0c060f1ee4dfb9f1e206633536e67f7c3b7b3788
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a73356393315ad3ad7cd9196640823d1a9a620dd |
|
10-Jun-2016 |
Glenn Kasten <gkasten@google.com> |
getPrimary APIs now examine all non-duplicating output threads and return the value corresponding to the thread with minimum frame count, with a preference for a thread with fast mixer if there are multiple output threads with the same minimum frame count. This is in keeping with the expectation by apps that the getPrimary APIs will return a value for the lowest available latency path. Bug: 29164107 Change-Id: I8ae9bcad2d48185d7717ccf96085834c0ce00e37
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b70868bb337f0b12f993494f4d110979a33ddd24 |
|
04-Jun-2016 |
Eric Laurent <elaurent@google.com> |
Merge "Add AudioTrack and AudioRecord flag checks" into nyc-mr1-dev am: 2f8e63b5be * commit '2f8e63b5be5b0160302cffe1f1f18e560d31d3e7': Add AudioTrack and AudioRecord flag checks Change-Id: If9043721f4763ce0f4db96c63595f92c5ba22556
|
050677873c10d4da308ac222f8533c96cca3207e |
|
02-Jun-2016 |
Eric Laurent <elaurent@google.com> |
Add AudioTrack and AudioRecord flag checks Verify that the requested flags are compatible with the input or output flags when creating and AudioRecord or AudioTrack Get rid of IAudioFlinger::track_flags_t which was redundant with audio_input_flags_t and audio_output_flags_t. Change-Id: I0dd9232f857b2737e99a8c668806e45bce09cdbd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e34a44ff6cb12e65736c09e1baab1823de190e03 |
|
24-May-2016 |
Andy Hung <hunga@google.com> |
Merge "Add memory heap checks for mediaserver and audioserver" into nyc-dev am: f3d9908a88 am: ce2b51c91f * commit 'ce2b51c91f431be6a62b2fed746650d18499cb83': Add memory heap checks for mediaserver and audioserver Change-Id: If5a9216ef18a9af22154d1510f835e0b3fafa651
|
5cb96b83e6bff91a5ab006ff542dc32031be9087 |
|
24-May-2016 |
Andy Hung <hunga@google.com> |
Merge "Add memory heap checks for mediaserver and audioserver" into nyc-dev am: f3d9908a88 * commit 'f3d9908a888203e7e70b8c2d43ee741a95e154ed': Add memory heap checks for mediaserver and audioserver Change-Id: I8b5dda2e29da8651cbd9dbc77fa9ca6211b1a47d
|
f3d9908a888203e7e70b8c2d43ee741a95e154ed |
|
24-May-2016 |
Andy Hung <hunga@google.com> |
Merge "Add memory heap checks for mediaserver and audioserver" into nyc-dev
|
8b269a1708b95d5f31ea59afb36bb42c26f91961 |
|
24-May-2016 |
Haynes Mathew George <hgeorge@codeaurora.org> |
Merge "audioflinger: Pass pid of process creating track or opening record" into nyc-dev am: a0e10ff02b * commit 'a0e10ff02b156738c0e5441104821b220eea3d68': audioflinger: Pass pid of process creating track or opening record Change-Id: I728ffba8938a82f8b8f7b773febafd5e466c8e4d
|
9ea77cdba8c422940adb57a790b44ac04fe0353f |
|
07-Apr-2016 |
Haynes Mathew George <hgeorge@codeaurora.org> |
audioflinger: Pass pid of process creating track or opening record AudioFlinger allocates a Client heap for each unique pid. If two applications use mediaplayer APIs, the same Client heap is reused as the pid used is not the application pid but that of mediaserver. With this change, the pid of the application pid is used to decide the heap to be used. Bug: 23525542 Bug: 28772898 Change-Id: I31a695b0b321eff6e2aca80c3bc4aeb3e1cd9ac7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
07b745e166ee62030960ccea37e117caadf71c32 |
|
24-May-2016 |
Andy Hung <hunga@google.com> |
Add memory heap checks for mediaserver and audioserver Memory heap check updated and restored to mediaserver, added as new option to audioserver. Requires properties to be set (example for audioserver): $ adb shell setprop libc.debug.malloc.program audioserver $ adb shell setprop libc.debug.malloc.options backtrace=8 $ adb shell pkill audioserver ... and to dump: $ adb shell dumpsys media.audio_flinger -m Bug: 28909124 Bug: 27500825 Change-Id: Ifa8c2c02b022daf1a799ee4a1d75282a3c921763
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b9987ad06d8298cde7b28bb214ac10777bcf8102 |
|
12-May-2016 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: various offload playback fixes" into nyc-dev am: 8b43838c48 * commit '8b43838c4872af3e9f47846e2618461af2d8d346': audioflinger: various offload playback fixes Change-Id: I1954e445630309c039ade92e545479245de095be
|
e93cc03da360a1a0d2ad937c745ce8c8e8be81c2 |
|
05-May-2016 |
Eric Laurent <elaurent@google.com> |
audioflinger: various offload playback fixes Revert underrun sleep time optimization added for offload by commit 51716185 which can cause music to pause for a few seconds in some corner cases. Allow underruns in STOPPING_1 state to avoid dropping last buffer received by the AudioTrack callback after stop() is called by the client. Allow interruption of thread loop sleep if a command is pending to speed up track start sequence. Do not wait for a full AudioTrack buffer before writing to audio HAL when resuming playback or transitioning to next track. Also moved log level for underruns in AudioSink from I to D to reduce spam on user builds. Bug: 28545177 Bug: 27682362 Bug: 28347796 Change-Id: I05b651b7878a2d2eedcac43cd669e32add171d40
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eb7fc0bd619064d334d1a87a4c9cd07c862499b5 |
|
06-May-2016 |
vivek mehta <mvivek@codeaurora.org> |
Merge "audioflinger: extend max i/p channel to 8 channels" into nyc-dev am: a605dafc27 * commit 'a605dafc27f69b37eca60579b34e97145f3caca3': audioflinger: extend max i/p channel to 8 channels Change-Id: Iefd24213da12d8635d2672454c2cd40fb6ba96a4
|
753466603a88f1ea3d966d17ab79256519553759 |
|
05-May-2016 |
vivek mehta <mvivek@codeaurora.org> |
audioflinger: extend max i/p channel to 8 channels - on open_input stream max channel check is for 2 (FCC_2), extend this to 8 (FCC_8) Bug: 27348418 Change-Id: I0d7e5a101dee0a2effabc3637a1fb73e7ea78ffd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5fb71f62474c92206dd068b725dab0572c9ede95 |
|
20-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Add AudioSystem::getFrameCountHAL()" into nyc-dev am: eb7f394004 * commit 'eb7f3940044effc6a8b313a73134b5cc2156068c': Add AudioSystem::getFrameCountHAL() Change-Id: Ib82d6e8fb760a90e47a374cd1d10f5a956ea1a9c
|
4a8308b11b92e608cdaf29f73f7919e75706f9a2 |
|
18-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Add AudioSystem::getFrameCountHAL() And add comments about declaring methods in binder opcode order. Bug: 28117362 Change-Id: I3c4426fa4bb3ce9c4a207a44d3bb1103d7fef160
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eb059113754c54b178d6de6feec13daadd244672 |
|
19-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Reduce rollovers of unique ID generator" into nyc-dev am: 88bd61e * commit '88bd61e31184a72e34e5a8c2ae11d034e01845aa': Reduce rollovers of unique ID generator Change-Id: I424811996d1dd9f6ee71ceda4fff515c7698334f
|
d2e67e1ef59921101fd7b047e2acf84e5d16d66e |
|
11-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Reduce rollovers of unique ID generator Bug: 28119934 Change-Id: I6c57d5555f6c5ddc4d4eee1e6f27fc4aaeb31c83
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
043470de221152557286d0b7aa0536ea165c268a |
|
14-Apr-2016 |
Andy Hung <hunga@google.com> |
Merge "Add memory leak detection to audioserver" into nyc-dev am: 49e5375 * commit '49e5375bf3c98c825538d30b6bea9f4e84f0c36f': Add memory leak detection to audioserver Change-Id: I85d46b708beb575d01e51f610c87fbb35f2601a7
|
35fec5f61393124c9e13958941637b8fe386385e |
|
13-Apr-2016 |
Andy Hung <hunga@google.com> |
Add memory leak detection to audioserver adb shell dumpsys media.audio_flinger --unreachable (userdebug and eng builds) Bug: 28049120 Change-Id: I72ac624bd5b5482aac44b9f3d8429f657f715cb4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8bcb9c56784bc9abf44ded0c4fb55b24739d700f |
|
07-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Check newAudioUniqueId() parameter \'use\'" into nyc-dev am: dd3e7a1 * commit 'dd3e7a1be829243c6db6ad82e41e6a3a8dce174b': Check newAudioUniqueId() parameter 'use' Change-Id: Ib64400d1198a40f8fcfbe188e6514107ab87b0f1
|
9d003131329450081c8129b3fddd85cf20d2d9d9 |
|
06-Apr-2016 |
Glenn Kasten <gkasten@google.com> |
Check newAudioUniqueId() parameter 'use' Bug: 28025366 Change-Id: Ice81e47cb919aa2aa6c78ccadebe9a1f19668f9c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b9b9fa3d28a0436bb5e267d8fc3626ebd820fe78 |
|
30-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_module_handle_t and audio_patch_handle_t consistently" into nyc-dev am: 54b48c3 * commit '54b48c31fba71534ea56e32609f7ea770519fb2e': Use audio_module_handle_t and audio_patch_handle_t consistently Change-Id: Icbe23830212ccdbf49ee6e7978642aeb3d2de6c6
|
a13cde98a880341f0a56d91da6364b093fb5d24e |
|
29-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Use audio_module_handle_t and audio_patch_handle_t consistently Bug: 27814144 Change-Id: I54b7a73ec318779fd3addb060998f4d94141152d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7b81b7e026053615f93af1efc130205eef547e57 |
|
21-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix build warnings" into nyc-dev am: 311fab5 * commit '311fab5291be07fe33ec65240825b4f4bc118fe7': Fix build warnings
|
c42e9b462661673dff480ee71757a58b0f806370 |
|
21-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Fix build warnings Change-Id: Idfdaff3a7a8f60cd8817bd306bfba28020a391c8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
da631f5894b2cfb77e47179a0f401c266b5eedb1 |
|
19-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix build warnings" into nyc-dev am: 7be6866 * commit '7be6866af78a86a89113e9b680f1a6416ae1f711': Fix build warnings
|
57c4e6f7464d458eb52d209c2a63524913d6406d |
|
18-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Fix build warnings Change-Id: I33178dbe0bfc087d6599579ca0529ad853c669ed
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
20f18efb29b8fea661dd4119a764d3f8d4dfe7a2 |
|
17-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_session_t consistently" into nyc-dev am: 9a57e34 * commit '9a57e34f476d5d2400e6e8ffac303c6190e641f0': Use audio_session_t consistently
|
d848eb48c121c119e8ba7583efc75415fe102570 |
|
08-Mar-2016 |
Glenn Kasten <gkasten@google.com> |
Use audio_session_t consistently Bug: 27562099 Change-Id: I328d8226191386b163f2ace41233607294c50dcd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
06fd24f5a3a17ee5ac3069c3e009238fcb6aab39 |
|
08-Mar-2016 |
Sumit Bhattacharya <sumitb@nvidia.com> |
Merge "AudioFlinger: Get shared heap size from property" am: 844fab9b2b am: c29470f61a * commit 'c29470f61a5f35f23c8f52851e778b6613ace6f8': AudioFlinger: Get shared heap size from property
|
cd64e0ed477fcaadd2ad03c5ef79d43ae98d7e44 |
|
10-Feb-2016 |
Sumit Bhattacharya <sumitb@nvidia.com> |
AudioFlinger: Get shared heap size from property For consecutive 24bit, 192kHz, 7.1 content 4MB heap is not enough. So exposing a propery ro.af.client_heap_size_kbyte to set platform specific shared client heap size. Change-Id: I2fb257c5fecc0245aa3a07998c2bfd6864a7d64f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
517161856d74f5fe39cce131f29b977bc1745991 |
|
01-Mar-2016 |
Eric Laurent <elaurent@google.com> |
audio flinger: fix offload track underrun Fix offload track underrun detection causing early disabling of offloaded audio tracks. Optimize sleep time in case of underrun to avoid spinning while waiting for new data. Re-enable offload when streaming Bug: 26668110 Change-Id: I874728c69647ac05e1effb84c48700a6d0ac7435
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2c073da0f02c3cf7cd4795af2d861222cbcab72a |
|
26-Feb-2016 |
Glenn Kasten <gkasten@google.com> |
AudioSystem::getSamplingRate and getFrameCount now work for input Also fix whitespace and comment in AudioIoDescriptor. Bug: 25641253 Bug: 21019153 Change-Id: I6a1e2262f44f87ec3ebce6e5274f45ed0f47eb13
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eeecb980ff4c202d0a3c4b0bfe040dce2f73336d |
|
26-Feb-2016 |
Glenn Kasten <gkasten@google.com> |
Add use for audio_unique_id_t Bug: 25641253 Bug: 21019153 Change-Id: I65dc128e760c245f3d90559635a8981b186c87d7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ae0cff1d48b2cd10aeff9627398faf684894eece |
|
24-Feb-2016 |
Glenn Kasten <gkasten@google.com> |
Restore media.log service Bug: 26306954 Change-Id: I00319f4869f46941e4c814a29b2f69a62e572743
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9a00399340c7c129714dff96f1ab59045fe43056 |
|
24-Feb-2016 |
Glenn Kasten <gkasten@google.com> |
Restore audio tee sink And fix a bug in error logging Bug: 27323882 Change-Id: Ifc2cf18c651337ae305a38f25b6955f9b9128199
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fdb3c07db5d44535eb8c3ec46dc78ad8446c01eb |
|
09-Feb-2016 |
Phil Burk <philburk@google.com> |
AudioTrack: support ENCODING_IEC61937 Set DIRECT flag. Use audio_has_proportional_frames() instead of audio_is_linear_pcm() where appropriate. Bug: 24541671 Bug: 20891646 Bug: 26373761 Change-Id: Ia32036b18683b084d6c9887593df87397ea0afd9 Signed-off-by: Phil Burk <philburk@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cdf924a32579e92ea456e8e7d5c14ed5920b620f |
|
05-Feb-2016 |
Eric Laurent <elaurent@google.com> |
audio flinger: add check in getInputBufferSize() Make sure that the sample rate passed to getInputBufferSize() is not 0 to avoid divide by 0 in destinationFramesPossible() Also check the channel mask parameter for validity. bug: 26866012 Change-Id: Ifabbf56cadb0db104f99230cacdba30e0c6a0a3a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d79072e9dff59f767cce2cda1caab80ce5a0815b |
|
06-Jan-2016 |
Glenn Kasten <gkasten@google.com> |
Remove TimedAudioTrack and associated code Bug: 8278435 Change-Id: I095c1a4888e645e14d93b0b15fbef4524a831ca1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
879db19219c120d424f7d7ad7164c3cfe56124e4 |
|
06-Jan-2016 |
Andy Hung <hunga@google.com> |
Fix compile warning Change-Id: I7d88292cbb07b9894ec4c7d60e71f547d93b3c89
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ce7176868977b0d44b245735bd8d3d8e54e61035 |
|
22-Dec-2015 |
Andy Hung <hunga@google.com> |
Disable media.log until service is ready Bug: 26235256 Change-Id: I99dd980d2b6d789347023a19737b7d65b0608267
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dcb346b7dc5b88c3e85db8a70bbd6a2fee8192b9 |
|
09-Sep-2015 |
Marco Nelissen <marcone@google.com> |
Run audio services in audioserver instead of mediaserver audioflinger, audiopolicy, (fm) radio, soundtrigger moved to audioserver. medialog is removed from mediaserver. audioserver has same permissions and rights as mediaserver. mediaserver is allowed to specify client uid to audioserver. Subsequent CL will add medialog to audioserver. TBD: Pare down permissions. Bug: 24511453 Change-Id: Iccaa08b874a502710d142e72f8abbb3d97c44cfa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3f273d10817ddb2f792ae043de692efcdf1988ae |
|
24-Nov-2015 |
Wei Jia <wjia@google.com> |
Uses AudioFlinger to signal battery stats for audio. Bug: 18177221 Change-Id: I704010c037cb99bb74b98798ee8e494fa8bdc875
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aba407f1a6378ac2518d0d76d0d18419b7722a81 |
|
21-Aug-2015 |
Eric Laurent <elaurent@google.com> |
audioflinger: increase shared memory heap size Bug: 21093153. Change-Id: I389af11451b01ce49fdb8957e2f322ba1925a62e (cherry picked from commit da73b6c7474aaa5616f0214e238776f12717f32b)
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
da73b6c7474aaa5616f0214e238776f12717f32b |
|
21-Aug-2015 |
Eric Laurent <elaurent@google.com> |
audioflinger: increase shared memory heap size Bug: 21093153. Change-Id: I389af11451b01ce49fdb8957e2f322ba1925a62e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eb9487e10294a4e73977f460f30eeaff503acd21 |
|
22-Jul-2015 |
Glenn Kasten <gkasten@google.com> |
Fix capture overruns at non-primary sample rate and small buffer size. Also: Pull out the magic number "12 ms" to a named constant. Remove obsolete AudioFlinger::mPrimaryOutputSampleRate. Bug: 22662814 Change-Id: I261f75a222c4505a84aad2493d251bd2dea59f68
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7c1ec5f038e63a5eb8b04434577c25bc23f5f410 |
|
09-Jul-2015 |
Eric Laurent <elaurent@google.com> |
audio: several fixes in audio routing callbacks - audio policy: Force device change to ensure new audio patch creation upon first track activity on a given output. Fix function device_distinguishes_on_address() which could mistake some output device with remote submix input device. - audio flinger: Reduce number of binder calls upon new client registration by only sending ioConfigChanged() callbacks to newly registered client. Fix first patch after output thread creation not triggering an ioConfigChanged() callback. -audio system: Force client registration upon routing callback installation to force new ioConfigChanged() callback from audio flinger. Bug: 22381136. Change-Id: Ieb0d9f92f563a40552eb31bc0499c8ac65f78ce4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
72e3f39146fce4686bd96f11057c051bea376dfb |
|
20-May-2015 |
Eric Laurent <elaurent@google.com> |
audio flinger: do not call JAVA services until system is ready Wait for system ready indication form AudioService before enabling calls to scheduling service or power manager. Bug: 11520969. Change-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f6870aefc5e31d4220f3778c4e79ff34a61f48ad |
|
08-May-2015 |
Eric Laurent <elaurent@google.com> |
audio flinger: fix fuzz test crash Clear output stream pointer in duplicating thread when the main output to which it is attached is closed. Also do not forward master mute and volume commands to duplicating threads as this is not applicable. Also fix logic in AudioFlinger::primaryPlaybackThread_l() that could accidentally return a duplicating thread. This never happens because the primary thread is always first in the list. Bug: 20731946. Change-Id: Ic8869699836920351b23d09544c50a258d3fb585
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9f578d3297782be6de5373e171f3b4af49726709 |
|
05-May-2015 |
Jean-Michel Trivi <jmtrivi@google.com> |
Merge "AudioRecord keeps track of UID" into mnc-dev
|
4cb668392ee0433462251afbee109405c6efacc8 |
|
02-May-2015 |
Jean-Michel Trivi <jmtrivi@google.com> |
AudioRecord keeps track of UID Bug 20832981 Change-Id: If5f3c61fae02d86b9d6fdf411711f854fd56c77d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cc85abcf4ac398dca240db356b8b4db052b415a4 |
|
01-May-2015 |
Eric Laurent <elaurent@google.com> |
Merge "AudioSystem: refactor audio config cache and callbacks" into mnc-dev
|
73e26b661af50be2c0a4ff6c9ac85f7347a8b235 |
|
28-Apr-2015 |
Eric Laurent <elaurent@google.com> |
AudioSystem: refactor audio config cache and callbacks Clean up implementation of audio configuration cache and callback events from AudioFlinger: - Define class AudioIoDescriptor for audio input and output configurations outside of AudioSystem class. - Do not use void * but an AudioIoDescriptor as argument to audio config callbacks from AudioFlinger. - Remove unused configuration events. - Move AudioSystem audio input and output cache from static singletons to members of AudioFlingerClient subclass. Change-Id: I67c196c32c09ce2756af0755ee1fe631040c3270
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
850206ed9ebc6c663a957a656966bce2604dc170 |
|
01-May-2015 |
Eric Laurent <elaurent@google.com> |
Merge "PatchPanel: do not use setParameters() internally." into mnc-dev
|
be71aa29a3c86d2e01cd17839d2a72ab09a1bce5 |
|
28-Apr-2015 |
Svet Ganov <svetoslavganov@google.com> |
Respect the record audio app op - media Change-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
054d9d3dea1390294650ac704acb4aa0a0731217 |
|
24-Apr-2015 |
Eric Laurent <elaurent@google.com> |
PatchPanel: do not use setParameters() internally. Do not use setParameters() with AUDIO_PARAMETER_STREAM_ROUTING when communicating the input or output device selected to playback or record threads, even for HAL version less than 3.0. Use createAudioPatch()/releaseAudioPatch() instead. This allows to send more information on the output or input device being selected. Also fix a regression introduced in L where the output device selection was not communicated to effects on record threads. Change-Id: I4780ada53241d56694b005c992171e173c3bf8f5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6770c6faa3467c92eabc5ec9b23d60eb556a0d03 |
|
07-Apr-2015 |
Andy Hung <hunga@google.com> |
Enable 8 bit and float pcm record formats for AudioFlinger Update sampling rate handling as well. Bug: 19570772 Change-Id: I872248e64c0578b2e48869a68fee0d51bd0640c3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
062e67a26e0553dd142be622821f493df541f0c6 |
|
11-Feb-2015 |
Phil Burk <philburk@google.com> |
AudioFlinger: call SPDIF wrapper from AudioFlinger Create an interface layer between the AudioFlinger and the HAL that manages the wrapping and format conversion. Removed unnecessary includes. Handle rate conversion in getRenderPosition(). Try to open HAL with encoded format before wrapping with SPDIF. Bug: 17566660 Change-Id: I00ad888ca15ff0f85b85efb8167c7f5ea761a244 Signed-off-by: Phil Burk <philburk@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2f55e7632dfa0dafde58efd8cb2af6593217fd91 |
|
06-Mar-2015 |
Glenn Kasten <gkasten@google.com> |
Rename tee sink file name and add prefix to macros Change-Id: If316b9e32963d9baef8f4382fcc73dc6c4ff684d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e7d6671c1ab1fea7ab1c4a9ebd1cd8f899c87628 |
|
05-Mar-2015 |
Glenn Kasten <gkasten@google.com> |
Rename formal parameter to match type name Change-Id: I0761005b751f5c4a4b28729b1820961ff3077afd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
63238efb0d674758902918e3cdaac322126484b7 |
|
03-Mar-2015 |
Glenn Kasten <gkasten@google.com> |
Remove redundant semicolon from namespace closing Change-Id: I163f9d3d216c283ae1160ce4802e5247cf44fba7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3e91b5d11866599e8f33e63fb3b6c1d81ce1a1d2 |
|
19-Feb-2015 |
Ricardo Garcia <rago@google.com> |
Fix for getMicMute in AudioFlinger Previous logic will only check for mic state of Primary Hardware Device. Current logic checks state of all devices with valid microphone input. This is needed for audio_output feature support. bug: 19439530 Change-Id: Ibbb92412ac70cf2915bbe8660c04fbaf0ab74171
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b187de1ada34a9023c05d020a4592686ba761278 |
|
30-Dec-2014 |
Glenn Kasten <gkasten@google.com> |
Line length 100 Change-Id: I6c8fe626a3825fa9e139319656d682a57b887c97
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a268a817fb9df2a266f06b58680fa4168517c8cd |
|
17-Dec-2014 |
Jean-Michel Trivi <jmtrivi@google.com> |
am 93118cd9: am 99429b40: am 277c7b8c: Merge "Fix permission check for audio recording" into lmp-mr1-dev * commit '93118cd96233b682be95a3eb114d88d69c8cc416': Fix permission check for audio recording
|
93118cd96233b682be95a3eb114d88d69c8cc416 |
|
17-Dec-2014 |
Jean-Michel Trivi <jmtrivi@google.com> |
am 99429b40: am 277c7b8c: Merge "Fix permission check for audio recording" into lmp-mr1-dev * commit '99429b40411790b85e19c57392bbd292a237c470': Fix permission check for audio recording
|
97bb33f58d742539f3382583d7978fca71ffa2d5 |
|
13-Dec-2014 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix permission check for audio recording Define input types covering the different usecases for audio recording, and check the corresponding permissions when starting to record. Move the permission check from audio flinger to audio policy, as only the policy has the information to determine which permission to enforce. Fix missing permission when an application records audio and the audio is injected by an external policy. Bug 18736417 Change-Id: If7ec040502242c990ac8ea464db484339bdce573
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3a3e87005fdfbfe4564605220a044b8023d0f539 |
|
26-Nov-2014 |
Eric Laurent <elaurent@google.com> |
am 72215491: am 1a475921: am 223fd5c9: audio: new routing strategies and stream types * commit '72215491c60fbcdb9a2f0be782e24e39cca249c5': audio: new routing strategies and stream types
|
72215491c60fbcdb9a2f0be782e24e39cca249c5 |
|
26-Nov-2014 |
Eric Laurent <elaurent@google.com> |
am 1a475921: am 223fd5c9: audio: new routing strategies and stream types * commit '1a475921c0577a4650d1bbe40a85b732d1766939': audio: new routing strategies and stream types
|
223fd5c9738e9665e495904d37d4632414b68c1e |
|
11-Nov-2014 |
Eric Laurent <elaurent@google.com> |
audio: new routing strategies and stream types Added new routing strategies and stream type for internal use by audio policy manager and audio flinger: - One for accessibility to allow different routing than media - One for re-routing (remote submix) in preparation of dynamic policies - Added stream type for "internal" audio flinger tracks used for audio patches and duplication. Bug: 18067208. Change-Id: I88f884b552e51e4a49c29125e5a1204cf58ff434
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
77e79a509d19ab50b1867fe3903b5a8fae450591 |
|
17-Nov-2014 |
Marco Nelissen <marcone@google.com> |
resolved conflicts for merge of e78a27ca to lmp-mr1-dev-plus-aosp Change-Id: If10a9cc17245f95d5e10b1507445abbb4020670e
|
f888020c6e2735624f2b2a30e72aca24e17b8b4d |
|
14-Nov-2014 |
Marco Nelissen <marcone@google.com> |
Update calls to IInterface::asBinder() to use the new static version. Change-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a Conflicts: media/libmedia/IAudioFlinger.cpp media/libmedia/IMediaPlayer.cpp media/libstagefright/CameraSource.cpp
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
06b46062d2f8bc82ca3061a23d197734ae51918b |
|
14-Nov-2014 |
Marco Nelissen <marcone@google.com> |
Update calls to IInterface::asBinder() to use the new static version. Change-Id: I89a5988a0ac694ffc04d88cf939e8455bf925d4c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
298c4dc7e90cae4873d89098b777d1068a4e35ea |
|
04-Nov-2014 |
Eric Laurent <elaurent@google.com> |
am d202ac37: am b7092547: Merge "remove some restrictions on effect output channels" into lmp-mr1-dev automerge: ed1e55c * commit 'd202ac37fc1f5f31e180af55cebd22810a80251b': remove some restrictions on effect output channels
|
b10352f4bc11ae6f3d93e464074709555ecf9e06 |
|
04-Nov-2014 |
Eric Laurent <elaurent@google.com> |
remove some restrictions on effect output channels Do not prevent from attaching effects to a non stereo output thread, unless the output thread is a mixer thread. Bug: 18157592. Change-Id: I6ac3187187a1b8aade7db04ea6dfbc47dacc25c3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2384b55ab31c49fb5babce058237c27ed28ed53e |
|
30-Oct-2014 |
Jean-Michel Trivi <jmtrivi@google.com> |
am 1f4b82a2: am b14e6dc8: Merge "Always use an address for remote submix" into lmp-mr1-dev automerge: 6e8212b * commit '1f4b82a20d75b5aa8d7801d342ac3a9b48fa0863': Always use an address for remote submix
|
fd4c14883b268a0bc5514da135fe6b7d1ce2071b |
|
07-Aug-2014 |
Jean-Michel Trivi <jmtrivi@google.com> |
Always use an address for remote submix Usage of remote submix device for audio rerouting (e.g. wifi display) didn't mandate the use of addresses. Use "0" as the default address when none is specificed. In logs, only use hex format for audio devices Bug 16009464 Change-Id: Ibfb1ce6881eba8b7e34420293b8a7077a6e659e6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
152f59b8cff44f74e6416cf309bfd85e0bb7e1db |
|
22-Oct-2014 |
Eric Laurent <elaurent@google.com> |
am 6efbadac: am b6a89512: am 9d0d5958: Merge "audioflinger: new HW A/V sync ID allocation flow" into lmp-mr1-dev * commit '6efbadac3ff5c3ddc194faaba44f1fe63e452c7f': audioflinger: new HW A/V sync ID allocation flow
|
fa90e84ed0cb2abdc0e0873a06d10ccf2b3c34f6 |
|
18-Oct-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: new HW A/V sync ID allocation flow The HW A/V sync ID is now allocated by the audio HAL before the output stream is created by a call to global get_parameters() with key AUDIO_PARAMETER_HW_AV_SYNC. When the AudioTrack is created, the HW A/V sync ID is communicated to the output stream by stream set_parameters() with key AUDIO_PARAMETER_STREAM_HW_AV_SYNC. Bug: 17112525. Change-Id: Ia8bc6f3bf9f358aa89f3f56ac554e893a19811ad
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d89eaddd1544dc9f6665e2578583e8083cac00da |
|
07-Oct-2014 |
Marco Nelissen <marcone@google.com> |
Check for duplicate uuids when parsing audio_effects.conf uuids need to be unique, and things don't work properly when they're not. Also fix/enhance/extend the dumpEffectDescriptor() method, and include a list of effects in audioflinger dumpsys. Change-Id: I3dfbc5ed0f7272c7809e337f2929212ece047ee4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1b92868010b5c1409692a86f6b27e4a265b64c1a |
|
03-Oct-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix pre processing transfer between record threads. Fix two problems remaining with pre processing effects transfer from one record thread to the next in case of tear down due to device connection: 1 - the enabled state of the effects was not communicated to the new HAL input stream. 2 - the effects saved in orphan chains list were not transfered to the new thread when a AudioRecord was created. Bug: 17757378. Change-Id: I0923c98470db3b51154dc89846157780a4c21e86
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cf7863ea8d9137aadf6bfd9756eb07ebd1c81b5c |
|
15-Sep-2014 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: fix pre processing effect leak" into lmp-dev
|
aaa44478a373232d8416657035a9020f9c7aa7c3 |
|
13-Sep-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix pre processing effect leak When a capture thread was closed, the effects attached to this thread were left dangling and the associated effect chain destroyed. When their last client was disconnected, the effects were not released properly from the effect library because the destruction process could not be completed without the effect being attached to a thread. A similar problem prevented a RecordTrack to be properly released if its client was destroyed after the capture thread. The fix consists in allowing the effect or record track to be properly released even if its parent thread cannot be promoted. Also save any effect chain still present on a closed capture thread in case a new client wants to reuse the effects on the same session later. Bug: 17110064. Change-Id: I5cd644daa357afd1f3548f9bcb28e6152d95fdb8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2f035f59d1e28728d38d18a7f0f7a9c6e8b0c11b |
|
14-Sep-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: send mic mute command to all audio HALs Mic mute should be sent to all audio HALs, not only the primary HAL as telephony can use capture devices on other HALs (e.g USB) Bug: 17321604. Change-Id: I658f6084d5b5cdc5a70784661d5cea0b6f81c3a9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
329f6511ee4e03a4605c70bbda8d3a96d2544884 |
|
29-Aug-2014 |
Glenn Kasten <gkasten@google.com> |
Restore the ability to build tee sink for debugging This changelist does not enable tee sink, but makes it possible to do so. Tee sink had suffered some bit rot since it is not built by default. Also fixes a crash for > 2 byte per sample or > 2 channels. Still does not write correct header for floating-point; that will be best solved by moving to libsndfile. Bug: 16990102 Change-Id: I8e92c588ccc513d7802d696fcfb324e815772df6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
93c3d41bdb15e39dac0faea9c5b60f1637cd477c |
|
01-Aug-2014 |
Eric Laurent <elaurent@google.com> |
AudioSystem: add API to query audio HW sync source Add a method to query from the audio HAL the HW sync source used for a given audio session. Modify audio policy to select a direct output with HW sync when requested. Bug: 16132368. Change-Id: I03038f9188f2d389f8a5fd76a671854013a4513e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
44622db93a24219123facbbe14259000f90de728 |
|
02-Aug-2014 |
Eric Laurent <elaurent@google.com> |
audio flinger: fix service fuzz test crash Bug: 13744704. Change-Id: I572c89f88dcab2b8b612ec6860983306f9f159ab
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
de3f8392fbf380ba6f09d009b00d7172477389a2 |
|
28-Jul-2014 |
Eric Laurent <elaurent@google.com> |
rename AudioSystem::newAudioSessionId() Rename AudioSystem::newAudioSessionId() to AudioSystem::newAudioUniqueId() as it can be used also for I/O handles. Bug: 12378680. Change-Id: I611ea3b5eb57a4b0774437f477ee87dc4ccc2cc2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cf2c0210c8afbe7d0661ccbbae3835b5ce73c0bf |
|
26-Jul-2014 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: update openInput() and openOutput() Add parameters to openInput() and openOutput(): device address, input source. Allow caller to specify a given I/O handle Group parameters in a struct audio_config. Bug: 12378680. Change-Id: I7e9af74c0d996561cc13cbee7d9012d2daf33025
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9a59276fb465e492138e0576523b54079671e8f4 |
|
22-Jul-2014 |
Andy Hung <hunga@google.com> |
Add multichannel capability to AudioFlinger But not enabled (kEnableExtendedChannels == false). Change-Id: I62f7e31fbd29ad703a9a02f5d1a280b6972dd423
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
83b8808faad1e91690c64d7007348be8d9ebde73 |
|
21-Jun-2014 |
Eric Laurent <elaurent@google.com> |
audio flinger: add patch connection between hw modules Add support for audio device connections between different audio hw modules. The patch is performed by creating a bridge between the playback thread connected to the sink device and the record thread connected to the source device using a pair of specialized PlaybackTrack and RecordTrack. - Added PatchTrack and PatchRecord classes. - Added TrackBase type to indicate more clearly the track behavior. - A TrackBase can allocate the buffer or reuse an existing one. - Factored some code in openOutput() and openInput() for internal use by PatchPanel. Bug: 14815883. Change-Id: Ib9515fcda864610458a4bc81fa8f59096ff4d7db
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ec40d284218466d8f0e832e7eb88e6ea6c479c88 |
|
16-Jul-2014 |
Glenn Kasten <gkasten@google.com> |
Add audio_input_flags_t to IAudioFlinger::openInput For backward compatibility, until flags are correctly calculated, we will assume that the request is for a low latency input stream. Change-Id: I76746834e870df00833dc77cbdaa2edd2ffeec95
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
da3bd9f12883f8344d2db00ce2fa47511ed9bef6 |
|
16-Jul-2014 |
Glenn Kasten <gkasten@google.com> |
Add audio_input_flags_t to HAL open_input_stream For backward compatibility, until flags are added to openInput(), we will assume that the request is for a low latency input stream. Change-Id: I5e6f7e574418917ff1b41b0a47199203c69cb40f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2829edccd7d2bb8244246f316face82b650b8949 |
|
18-Jun-2014 |
aarti jadhav-gaikwad <agaikwad@nvidia.com> |
stagefright: Pass audio aac sub formats in offloadinfo Pass audio aac sub formats in offloadinfo according to aac profile. Audio HAL can take decision about offload using DSP capabilities Change-Id: If269a3654b5d2b09c183212b0646ef03e06f2d8f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5c68f959eaa2e02fed5643c78e281fff42bcc0a2 |
|
07-Jul-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "IAudioFlinger::openRecord now suggests notificationFrames"
|
7df8c0b799d8f52d6386e03313286dbd7d5cdc7c |
|
03-Jul-2014 |
Glenn Kasten <gkasten@google.com> |
IAudioFlinger::openRecord now suggests notificationFrames Change-Id: I08885cc381d03c522a23289e74f0e1ed46563863
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5ba4440c11eb975ec0e104e0af1981838f42f57c |
|
04-Jul-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Remove obsolete IAudioFlinger::channelCount()"
|
6146c08f0c3dd8b9e5788063aa433f304a810602 |
|
18-Mar-2014 |
Andy Hung <hunga@google.com> |
Add enabling variable for extended precision audio Set AudioFlinger::kEnableExtendedPrecision = true to enable extended precision. Enabling will be required for devices (such as USB) which report 24 bit or 32 bit sink formats. Change-Id: I0dc1d7a4f7607086d7b536ea0e43aef0e696f2ee
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4ea00a25cf85877b48ebd1e15a657cfaab29af58 |
|
02-Jun-2014 |
Glenn Kasten <gkasten@google.com> |
Add mPrimaryOutputSampleRate Change-Id: I46b527fc3f2b5a5720a74b4f0b9a8f2e0d570b09
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f947dbce4390f2c3c460325d37002a34f09c0b74 |
|
01-Jun-2014 |
Glenn Kasten <gkasten@google.com> |
Remove obsolete IAudioFlinger::channelCount() Change-Id: Ie623edae2e795f9155f1f452fe4e6c7217a4a4c8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ecc03733bfd3262ffadef3166e6be23b539c505c |
|
28-May-2014 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: first patch panel implementation."
|
1c333e252cbca3337c1bedbc57a005f3b7d23fdb |
|
20-May-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: first patch panel implementation. Added a new PatchPanel subclass to AudioFlinger to handle audio ports and audio patches configuration and connection. The first implementation does not add new functionnality. AudioPolicyManager uses patch panel interface to control device routing. AudioFlinger: - Added PatchPanel class. The first implementation does not add new functionnality. PatchPanel handles routing commands for audio HAL after 3.0 or converts to setParameters for audio HALs before 3.0. - Added config events to ThreadBase to control synchronized audio patch connection. AudioPolicyManager: - Use PatchPanel API to control device selection isntead of setParameters. - New base class AudioPort common to audio device descriptors and input output stream profiles. This class is RefBase and groups attributes common to audio ports. - Use same device selection flow for input as for outputs: getNewInputDevice -> getDeviceForInptusiource -> setInputDevice Change-Id: Idaa5a883b19a45816651c58cac697640dc717cd9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fe1a94e68e173fe4dfe7699112422a94eddacb4e |
|
27-May-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix deadlock upon AudioRecord creation error AudioFlinger:openRecord() should not hold mClientLock when releasing the local reference on AudioRecord as the destructor will also lock mClientLock. Same fix for AudioFlinger::createTrack(). Also make sure that AudioFlinger::createEffect() holds mClientLock when clearing local reference to the Client in case of error. Regression introduced by 021cf9634ab09c0753a40b7c9ef4ba603be5c3da Bug: 15118096. Change-Id: Ie961c398c8e0460bca9b95e2ee4ce6859316c275
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5806b3533437e3d83208e8e9d6bd74ed304e51ec |
|
22-May-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: test min HAL version instead of current Change-Id: Ibce2353b4390329b4c1a453e829178e3986c25a7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
87cebadd48710e42474756fc3513df678de045ce |
|
22-May-2014 |
Elliott Hughes <enh@google.com> |
resolved conflicts for merge of f285c91e to master Change-Id: I4c995e297d09c0854a42142cc57dce8b771acf65
|
8b5f642eb2364ea7fe46a5b3af51b48b58f12183 |
|
22-May-2014 |
Elliott Hughes <enh@google.com> |
Move frameworks/av from fdprintf to POSIX dprintf. Bug: 11156955 Change-Id: Ia98cd16b4c1f7be87cf060b7456de4f40896bacb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e541269be94f3a1072932d51537905b120ef4733 |
|
16-May-2014 |
Andy Hung <hunga@google.com> |
Use new channel count functions for audio masks Change-Id: Ia658ab4b6320d19fdb50f123c930918724ff0ef3 Signed-off-by: Andy Hung <hunga@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
021cf9634ab09c0753a40b7c9ef4ba603be5c3da |
|
13-May-2014 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: add specific mutex for client lists Add a specific mutex to protect access to mClients and mNotificationClients lists. This avoids locking the main AudioFlinger mutex from inside thread loops and allows not to worry about cross deadlocks when sending a config event with status reply while keeping the ThreadBase or AudioFlinger mutex locked. As a way of consequence, remove notification client list passed to processConfigEvents_l() and audioConfigChanged() as the list can now be accessed by locking client mutex only. Change-Id: I228022204b6709a8bb60cc96d9514a6ffe59b62e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
26d5ff926fa3323b39ae4408bcd29826a9523c9b |
|
10-May-2014 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: refactor thread config events"
|
1035194cee4fbd57e35ea15c56e66cd09b63d56e |
|
09-May-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: refactor thread config events Merge config events and set parameters messaging mechanism. - setting parameters now uses the config event mechanism - config event now allow to wait for a condition and synchronize caller binder thread with execution thread and return an execution status. - simplify locking mechanism to avoid unlocking the thread mutex while processing events. Change-Id: Ia49cb3e617abec4bacb6c1f9a8cb304c4ed3902e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d776ac63ce9c013c9626226e43f7db606e035838 |
|
07-May-2014 |
Glenn Kasten <gkasten@google.com> |
IAudioFlinger::openRecord returns IMemory(s) openRecord() now explicitly returns the control block and data buffer as separate IMemory references. If the IMemory for data buffer is 0, this means it immediately follows the control block. Change-Id: Ic098f88f0e037f8fbe30006689e18cacacf09d06
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c4b88a8d0f524666bf0f390075c334d047a104f2 |
|
01-May-2014 |
Glenn Kasten <gkasten@google.com> |
Fix bug for direct track with PCM != 16-bit The AUDIO_FORMAT_PCM_8_BIT format was being converted to AUDIO_FORMAT_PCM_16_BIT on client side even for direct tracks. That conversion was incorrect; it should only be done for mixed tracks. Also remove checks for specific PCM formats in the generic part of server side of createTrack. Those format checks should only be done by the thread. This will allow direct tracks for PCM 8-bit, PCM 24-bit, etc. Change-Id: If5b9fd79f8642ed93e2aeabcaf4809b2ed798978
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1b24cf32e02a1372e57b3a2a432bc0adfe496e6d |
|
16-Apr-2014 |
Mark Salyzyn <salyzyn@google.com> |
am e80631aa: am 839d11d1: Merge changes I0a744dc7,Id993a70d * commit 'e80631aa1992ca50af679cd6a018c0ffda7f9b17': media: use size_t for integer iterator to Vector::size() media: 64 bit compile issues
|
3ab368e0810d894dcbc0971350c095049478a055 |
|
15-Apr-2014 |
Mark Salyzyn <salyzyn@google.com> |
media: use size_t for integer iterator to Vector::size() Change-Id: I0a744dc7815a86a993df9b0623440be620ec8903
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1490d5142d8d485ea0d56a9974726fb6dff0a62d |
|
28-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Mark the logging heap read-only to media.log service"
|
142f519aa1acd5804d111e60d100f170fed28405 |
|
26-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Use symbol AUDIO_IO_HANDLE_NONE from <system/audio.h> Change-Id: Id6b1aa17558eb73e17f22b8eab6cd02e00a96dff
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
51beebba9d4989d05831a13bbe5cdf53ecac1bf5 |
|
26-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Use symbol AUDIO_DEVICE_NONE from <system/audio.h>"
|
73ec11738cd4399c55d4905665a14a7c4cd42cbf |
|
26-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix uses of KeyedVector"
|
45faf7e02791993a487d6e038d16ff46395f1975 |
|
17-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Use symbol AUDIO_DEVICE_NONE from <system/audio.h> Change-Id: I61f882c5e7c949bf00d3bfc745ebf3b5e1c42a58
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9ea65d0f4a564478343b1a722fae4ce5883670c3 |
|
17-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Fix uses of KeyedVector Constructor for AudioFlinger::mAudioHwDevs was missing, and so AudioFlinger::findSuitableHwDev_l() could return an undefined pointer if a non-0 module wasn't found. A KeyedVector of Plain Old Data (POD) element type must specify the default value in the constructor, or else the default will be undefined. Minor: - Parameter had wrong type in constructor for AudioSystem::gOutputs. - Remove obsolete AudioSystem::gStreamOutputMap. Change-Id: I9841493e018440e559d8b8b0e4e748ba2b2d365b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bcefec31bd1346133052356ffc8d7ac8a5b13fab |
|
17-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Document AudioFlinger::nextUniqueId() Change-Id: Iafe96f1c10bd85cb23a2553945ca68aa601dc2eb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cf515ab0030cf5e0bef843638af7c989a8f6843a |
|
15-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Mark the logging heap read-only to media.log service Change-Id: Ie26a9e7e37c951774c71d2c53886db52dd5479aa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3ef14ef30359376006a233f6a21a165d4b65a7df |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Make error handling more similar for output and capture And simplify error case Change-Id: I0bb1ec252945d672cc4cef137977b912f1b23d51
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
570f633e0b02d1bc25f3312b92e72cc29a40ca38 |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Make session ID code similar between output and capture Change-Id: I873a97d0e36e1a452421df4f749d51e1916797a5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e848bd9abb3bbbd4c66f9fb9d1442f7663d7ba40 |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Move declarations to where needed Also remove unnecessary ALOGV and dead variable inFrameCount Change-Id: I34547fb0fd2ff142fc60277bedfa4064e7356611
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c5a17425986b4ce3384e6956762c86018b49c4a0 |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Remove name output parameter from createTrack It was only used for one log. A better solution will be a per-track unique ID. Change-Id: Ia440e02ae4a5a4019a9a2d08970e1ee93ac4c3a3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
05997e21af6c4517f375def6563af4b9ebe95f39 |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Whitespace and comments Change-Id: I99752cca74a459c4746ea4718acb0115439e50bd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0e0e846f3d86906ff990025981e514d6bcf44d8e |
|
13-Mar-2014 |
Glenn Kasten <gkasten@google.com> |
Prepare for additional capture formats Change-Id: Ib10b004f0029191b33a97671e41b0d86ebfbe0b9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6cbccee701e74fa43a5ea49c15af7dd3267b6699 |
|
14-Dec-2013 |
Haynes Mathew George <hgeorge@codeaurora.org> |
audioflinger: Fix for a deadlock in track creation AudioFlinger enters a deadlock (with itself) on trying to free a RecordTrack or Track object that failed initialization. Clear this bad object from the caller instead. Bug: 12423233 Change-Id: I926f2beb922a70f6924e593e2bbf1a5b5df85b16
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d2304db2fcb5112292105a0949a55986a4c9875f |
|
03-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Rename setStreamOutput to invalidateStream And simplify by removing the unused I/O handle parameter 'output'. Change-Id: Ie9c4df17a7378066312d4ed8790fda7a9125c95e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
53b5d098b7d5d4412b9b9fe08daaf84c56b716e9 |
|
05-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Move up AudioFlinger::createTrack and openRecord parameter checks Perform the basic sample rate, format, and channel masks tests as early as possible. Now the thread methods only need to do the thread type-specific checks. Change-Id: I57d8319a228dda0446ca9b3ddcb7c9f67f28238c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d0e0cfa58a35508c14818b88804845194b5d80e1 |
|
22-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Make tee sink work again"
|
f66b42242342017c26eb97de544dae31dd2537ca |
|
20-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Make tee sink work again It was broken by this earlier change to NBAIO: > Change-Id: I5eda412648b094358f5eefc38300e9ec8a734cd3 But the code was not being compiled, so the error was not caught earlier. Also increase the default size of per-track pipe to a reasonable value. Change-Id: Ica05017e6c6533e1fea9df379a9b204eebed4a1f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8ea16e4b0a7d398d26887c18675b3899de5d779d |
|
21-Feb-2014 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix race condition in SyncEvent callback Now that the SyncEvent callback is implemented by the RecordTrack instead of the RecordThread, there is a possibility that the callback is called after the track deletion. SyncEvent callback now uses a weak pointer instead of a raw pointer as cookie. This allows the callback implementer to acquire a strong reference on the object pointed to by the cookie. Bug: 13114128. Change-Id: Id61b8f06044ed1e52c6f7e7c666cdede68340de2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4cc0a6a835c806d200ef83ef31fe5bef327c355c |
|
17-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Multi-client recording continued Remove mReqChannelCount and mReqSampleRate. Increase number of input frames needed for sample rate converter. Add TODO comments to investigate later. Fix bugs in sample rate conversion. Change-Id: I3aa54b862843d518b6e4ece9a7f52fd27d741629
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d457c970c8d08519cd77280a90b61ae1e342cfe3 |
|
11-Feb-2014 |
Marco Nelissen <marcone@google.com> |
Track pid for each session so they can be properly freed. Change-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1d6fa7af1288b550faabe4ec2cf98684236723db |
|
11-Feb-2014 |
Narayan Kamath <narayan@google.com> |
resolved conflicts for merge of 566be7c3 to master Change-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce
|
377b2ec9a2885f9b6405b07ba900a9e3f4349c38 |
|
03-Feb-2014 |
Kévin PETIT <kevin.petit@arm.com> |
Make frameworks/av 64-bit compatible Contains the necessary changes to make frameworks/av build and work on a 64-bit machine. Signed-off-by: Craig Barber <craig.barber@arm.com> Signed-off-by: Kévin PETIT <kevin.petit@arm.com> Signed-off-by: Ashok Bhat <ashok.bhat@arm.com> Signed-off-by: Marcus Oakland <marcus.oakland@arm.com> Change-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9601c6efcb2552960d6f125d073525b581c1b7ec |
|
10-Feb-2014 |
Marco Nelissen <marcone@google.com> |
Merge "Pretty up audioflinger dumpsys"
|
ec95f0e82a680931e9c7c9011dbbd68d5ab484c8 |
|
10-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Use printf format %#x for audio_format_t in logs"
|
b220884bf3129253cc5bc8d030bc475411ea4911 |
|
07-Feb-2014 |
Marco Nelissen <marcone@google.com> |
Pretty up audioflinger dumpsys Change-Id: I57e44b4c36b99f7149542bbcf9645521c6152dfa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a793625031a3e326a261a0843598c35a5784bbde |
|
07-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Use Format_isValid() and Format_isEqual() instead of direct comparison"
|
cac3daa6332bf6d1f7d26adc4a9915f3d7992dd9 |
|
07-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Use printf format %#x for audio_format_t in logs Change-Id: I1c611d1037685d52ccc84efe0fccd6413ec938e9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7332c37c459f5f382a9e4105d522d1c5a7f6f0b5 |
|
05-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "audioflinger: Fix for a deadlock in track creation"
|
6e0d67d7b496ce17c0970a4ffd3a6f808860949c |
|
31-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Use Format_isValid() and Format_isEqual() instead of direct comparison Change-Id: Ie87607aa514976947540a77775e6425c4e56e7d9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0f11b51a57bc9062c4fe8af73747319cedabc5d6 |
|
01-Feb-2014 |
Glenn Kasten <gkasten@google.com> |
Fix unused parameter warnings in audio Change-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
03e9e83c47ab4a518da0a1f36b8f702f59221c95 |
|
14-Dec-2013 |
Haynes Mathew George <hgeorge@codeaurora.org> |
audioflinger: Fix for a deadlock in track creation AudioFlinger enters a deadlock (with itself) on trying to free a RecordTrack or Track object that failed initialization. Clear this bad object from the caller instead. Bug: 12423233 Change-Id: I926f2beb922a70f6924e593e2bbf1a5b5df85b16
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f0002d142e6d24c5438600b2c259679de710f8ac |
|
24-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Replace control block frameCount_ by explicit in/out parameter"
|
0ce5ca5e113d58cbcb7cb48615d6dbbf3fbe7c66 |
|
17-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Merge "Cleanup createTrack error handling"
|
0cde076ddb283c84c3801a2df4cc3df99bd1577f |
|
17-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
Cleanup createTrack error handling Similar to cleanup done earlier for openRecord in this CL: > Change-Id: I84897dd7d30b370640b54e928f230604b873cb68 Bug: 10888816 Change-Id: I804a47f898e0319a60a9bd58906bbb037e45cc25
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5f972c031d4061f4f037c9fda1ea4bd9b6a756cd |
|
13-Jan-2014 |
Glenn Kasten <gkasten@google.com> |
AudioRecord::getInputFramesLost() cleanup Fixed bug that if the binder call failed (for example if the IAudioFlinger binder is dead), then getInputFramesLost was returning garbage. Now it correctly returns zero, which is the error value for this method. The type declarations for getInputFramesLost were inconsistent: a mixture of unsigned int, size_t, and uint32_t. Now it returns uint32_t everywhere, which is what the underlying HAL API returns. Added a FIXME about the side effect behavior. This will need review for multi-client. Change-Id: Ifa2e117a87dbd0c1f2c892a31d1c3dd919bf1a0a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aea7ea06394bcb155972d82055d4ea59962e4051 |
|
26-Jun-2013 |
Glenn Kasten <gkasten@google.com> |
Use AUDIO_SESSION_ALLOCATE instead of 0 Also fix a couple of places where we were using AUDIO_SESSION_OUTPUT_MIX, which happens to also be equal to 0, but has a different meaning. Change-Id: I90e39be3b89f5021a96d9e3b8d10929013ca977f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
74935e44734c1ec235c2b6677db3e0dbefa5ddb8 |
|
19-Dec-2013 |
Glenn Kasten <gkasten@google.com> |
Replace control block frameCount_ by explicit in/out parameter in IAudioFlinger::createTrack and IAudioFlinger::openRecord Change-Id: I09c644c80e92c8e744b1b99055988a2588b2a83d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
481fb67a595f23c5b7f5be84b06db9b84a41a42f |
|
30-Sep-2013 |
Glenn Kasten <gkasten@google.com> |
Add RecordThread media.log and deferred deallocation This change allows a media.log buffer for RecordThread. Unlike playback threads which stick around forever, the RecordThread comes and goes for every capture session. This means that the media.log buffer for a RecordThread would disappear too, and so was useless. Now when a thread exits, it's associated media.log buffer is just marked for deferred deallocation. It is only actually freed when the memory is needed. Other changes: - Fix bug in unregistering comparison, it was comparing the wrong pointers - Increased size of log area so we can log for RecordThread also Change-Id: If45d4c03a793b86390a0112ec3acc5d41b2e3635
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
663c2247b71086e30bfd3192979d1dd7f15c539e |
|
24-Sep-2013 |
Glenn Kasten <gkasten@google.com> |
Consistent error checking for sp<IMemory> and pointer() There have been concerns that an sp<IMemory> could be non-0, but the associated pointer() still be NULL. There are rumors this may happen when a non-0 sp<IMemory> is passed in by client but the shared memory cannot be re-mapped into mediaserver. There's also evidence in the early (2009/03/03) pre-git code of checking pointer() for NULL, after a local allocate() returned a non-0 sp<IMemory>. It's not clear if this is "cargo cult" paranoia, or if there was a genuine reason for the check. In any case, we now consistently check pointer() for sp<IMemory> input parameters in createTrack() and queueTimedBuffer(). We also check after successful allocate(). If allocate() returns a non-0 sp<> but NULL pointer(), then treat it as if the allocate() had returned 0. Change-Id: I3013ac5766b493d443ecef71711ec861076a623e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8594843c15b4722ced39436fe9e64f3e57e7ace4 |
|
19-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Pull HAL reads out of RecordThread resample Previously, the resample was indirectly calling HAL read from within the BufferProvider's getNextBuffer. Now the HAL read is done ahead of time into a circular buffer, and the getNextBuffer just reads out of that memory. This change will permit some future planned features. Also removed the mono to mono resampling optimization, as that optimization will no longer be valid in the future. Change-Id: I59f5016a2df91078d697c37a7dec2d9d9f44542e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1fc6cb5be26734938b3999e6bf4ce0e625e7d284 |
|
30-Oct-2013 |
Eric Laurent <elaurent@google.com> |
am ce275b7d: am 1c594b63: Merge "audioflinger: enable effects after registration if needed" into klp-dev * commit 'ce275b7dd20e3d4781a46126c753e6eb998e6c0f': audioflinger: enable effects after registration if needed
|
1c594b637df26499ce1dae2db34f2b3290efd838 |
|
30-Oct-2013 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: enable effects after registration if needed" into klp-dev
|
9cae217050aa1347d4ac5053c305754879e3f97f |
|
14-Jan-2013 |
Marco Nelissen <marcone@google.com> |
Assign blame for playback wakelocks. Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Cherrypicked from master. b/9464621 Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
462fd2fa9eef642b0574aa7409de0bde3fec8d43 |
|
14-Jan-2013 |
Marco Nelissen <marcone@google.com> |
Assign blame for playback wakelocks. Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d72b7c0180ee83fc3754629ed68fc5887a125c4c |
|
13-Oct-2013 |
Eric Laurent <elaurent@google.com> |
audioflinger: enable effects after registration if needed This fixes a bug where effects were not properly reenabled after being moved from one playback thread to another. The effect is enabled but the audio policy manager sees it as disabled. Bug: 11181933. Change-Id: I19cac7acbaf61c546e667fd85ed7d4eda1c716d8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
35295078ab59c8c5d143a54d5a55557c3ca62c51 |
|
07-Oct-2013 |
Glenn Kasten <gkasten@google.com> |
resolved conflicts for merge of 9a7d11f0 to master Change-Id: Ie4d101185a93d37ec280f608813ad62a077a584e
|
fee4ce338d78eeb58af1f66831ead53322d3859e |
|
07-Oct-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Cleanup openRecord error handling" into klp-dev
|
62dbe93f7743061e97fc3299386a2f887ca748cf |
|
25-Sep-2013 |
Eric Laurent <elaurent@google.com> |
am 4e141a4f: am 1802399c: Merge "fix deadlock in audioflinger::createEffect()" into klp-dev * commit '4e141a4f1303767f70ea983925ec01b034fe667b': fix deadlock in audioflinger::createEffect()
|
eb3c337a3d6c74ec857dfc8be7eeafe634614bcd |
|
25-Sep-2013 |
Eric Laurent <elaurent@google.com> |
fix deadlock in audioflinger::createEffect() commit 5baf2af5 introduced a regression by calling getOutputForEffect() with AudioFLinger main mutex locked. The locking order must always be AudioPolicyService mutex then AudioFlinger then ThreadBase mutex. Bug: 10916796. Change-Id: Ide34a2d84dbb06dbb35abd0640d91b01b0ac4d40
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f |
|
24-Sep-2013 |
Glenn Kasten <gkasten@google.com> |
Cleanup openRecord error handling Bug: 10888816 Change-Id: I84897dd7d30b370640b54e928f230604b873cb68
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d7e076589dc5298d7a78cb683159723b7eb08d7f |
|
19-Sep-2013 |
Eric Laurent <elaurent@google.com> |
am 87fb4f30: am d1b28d41: audioflniger: fix leaked audiosession references * commit '87fb4f30077e7bcf78e65cf25fe95bd58238bad1': audioflniger: fix leaked audiosession references
|
d1b28d41dbda203ffb420ba2e36cbe736b163ff8 |
|
19-Sep-2013 |
Eric Laurent <elaurent@google.com> |
audioflniger: fix leaked audiosession references acquireAudioSessionId() should not create session references if the caller is not listed in the known notification clients. It happens when the MediaPlayer or AudioTrack is created by the mediaserver on behalf of a client (e.g CameraService). In this case releaseAudioSessionId() can be called from a different pid and the session reference will not be removed. Also we will not be able to remove the reference if the client process dies. Bug: 10606426. Change-Id: Ibb5e27518daeb484a2e66302e4c6221cbaca5b70
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dc8cae8c118e4aef4ef1f7b2c6f79becc1df4a05 |
|
18-Sep-2013 |
Eric Laurent <elaurent@google.com> |
am bf5e2397: am 5baf2af5: more support for audio effect offload * commit 'bf5e23979a03da96ce1d63126c480103232f174b': more support for audio effect offload
|
5baf2af52cd186633b7173196c1e4a4cd3435f22 |
|
13-Sep-2013 |
Eric Laurent <elaurent@google.com> |
more support for audio effect offload Offloading of audio effects is now enabled for offloaded output threads. If an effect not supporting offload is enabled, the AudioTrack is invalidated so that it can be recreated in PCM mode. Fix some issues in effect proxy related to handling of effect commands to offloaded and non offloaded effects. Also fixed a bug on capture index in software Visualizer effect. Bug: 8174034. Change-Id: Ib23d3c2d5a652361b0aaec7faee09102f2b18fce
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8136cfae9c22ae8ff42eec9ed751833dda605444 |
|
09-Sep-2013 |
Eric Laurent <elaurent@google.com> |
am 8a910716: am 6ca83fad: Merge "audioflinger: no effects on offloaded tracks" into klp-dev * commit '8a910716892d17a2ac62c7e9884af0e9d75b26bc': audioflinger: no effects on offloaded tracks
|
813e2a74853bde19e37d878c596a044b3f299efc |
|
31-Aug-2013 |
Eric Laurent <elaurent@google.com> |
audioflinger: no effects on offloaded tracks Invalidate offloaded tracks when an effect is enabled so that the track is recreated in PCM mode and the effect can be applied. This is temporary until effect offloading is implemented. Bug: 8174034. Change-Id: I77b8b54a10db6cb8334be76d863ea7e720eaad09
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
61bd7a0281ffecb99b27bff63334c559df7357e6 |
|
20-Aug-2013 |
Jeff Brown <jeffbrown@google.com> |
am 0541b3bb: am c8b226f4: Merge "Enforce permission for recording from remote submix." into klp-dev * commit '0541b3bb40fa23e97e0a4599463b6afc0e271939': Enforce permission for recording from remote submix.
|
893a5642871114fca3b2a00c6ff8e5699ce3e3ed |
|
17-Aug-2013 |
Jeff Brown <jeffbrown@google.com> |
Enforce permission for recording from remote submix. Bug: 10265163 Change-Id: I2395036bac6e10baeaf6ea4bc3093bd9dd98742d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3255095af6677caeeebf81c8891ce8db745617ff |
|
06-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Move local variable declarations to point of first use Change-Id: Ia0fc4b099a3cf8bb5b67b287e7687e9dc9691e0e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6e2ebe97f2ad0a21907f20f9ee644c4eacbb7a40 |
|
13-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Use curly braces in 'if' to make it easier to add logs Change-Id: I58b33fefdd8bf703647414157a99a3223be3531c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e198c360d5e75a9b2097844c495c10902e7e8500 |
|
13-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Whitespace Change-Id: Id3ccc183a03421330d0498faaa62a45915cdc3d6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2fc14730e4697a6f456b4631549c9981f6b0b115 |
|
05-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Comments Change-Id: I56f82904cb3855bad6f33ad1ff4ddf66a61c5720
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
030033342a6ea17003e6af38a56c7edc6d2ead01 |
|
07-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Clean up error handling in createTrack and openRecord Outside callers now use initCheck() to determine whether a TrackBase has been created successfully, instead of relying on internal knowledge. Previously, callers needed to know that a TrackBase was only valid if it's getCbk() != 0. For a Track (playback), they needed to know to also check the track's name (track index). Now, outsiders can just call initCheck(). Other changes: - Return a 0 reference if track creation fails - Remove a dead line of code in AudioFlinger::openRecord Change-Id: If374924a3f6fd27906f625aa83dd0a1e3f506e00
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9156ef3e11b68cc4b6d3cea77f1f63673855a6d1 |
|
07-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Status pointer passed by caller is always non-NULL in createTrack, openRecord, createEffect, createTrack_l, createRecordTrack_l, and createEffect_l. Change-Id: I2e459e4de9c78145f4d496e6abf289479a2f0941
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
309f7abb3c170ba764e67e9b6fed31fb442e9953 |
|
09-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Use 0 for sp<>, NULL for raw pointers"
|
3a6d5ded7187ae324532a60b03532c33d607e282 |
|
09-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Rename reqChannels to reqChannelMask"
|
937098b9b564a779ff1c8c2d9e60769ee5c69810 |
|
26-Jun-2013 |
Glenn Kasten <gkasten@google.com> |
Use 0 for sp<>, NULL for raw pointers Change-Id: Ia0595afdc41e1dec428d7a3db73558b54c417bf3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fb872cc6f77f6d74011fab703b3edd7023c736cb |
|
06-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
memset audio_config to zero Per guideline in hardware/libhardware/include/hardware/audio.h, "You should memset() the entire structure to zero before use to ensure forward compatibility." Change-Id: I2bce70ef6ea4b070668bd9cbc54bfe20a60111aa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f506e9495f2b2123b3bec7d42ec8ef13c6213ee8 |
|
06-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
Rename reqChannels to reqChannelMask This avoids potential ambiguity with channel count. Change-Id: I0db82efc4c14dd8189d65a1db29809a085acf528
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ddb0ccf3fb6fe8da8c71a6deb30561b821f3c0a2 |
|
01-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
RecordTrack::createRecordTrack_l flags are in/out The flags are currently unused, but will be used for requesting a fast track. Making flags in/out will allow reporting back up to client that the request is denied. Change-Id: Ifbee57da3632ce130551065a426577fb97b1a68d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eeca32671896739e84050da5992d5f151a1629de |
|
01-Aug-2013 |
Glenn Kasten <gkasten@google.com> |
IAudioFlinger::openRecord track_flags_t flags is in/out This will allow AudioFlinger to tell client it is denying a request. Change-Id: Iff2be3ad6636371bbda9c9899a283c94620c1f06
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b08ab81bab9e8cd2e3a7fff02725a387070fd078 |
|
31-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Add resampler comments and fix a typo"
|
34af02647b387a252fb02bab8e2cb9f7bd9c8abb |
|
30-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Add resampler comments and fix a typo Change-Id: Ie071673875f663de4212eed4a4dff89d51a5a915
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d054c32443a493513ab63529b0c8b1aca290278c |
|
12-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Move control block mName to createTrack() output This is part of a series of CLs to clean up the shared memory control block, by removing any fields that don't have to be there. Change-Id: I6e51003a1293b6800258c31b22cff2eba42162e7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
97252bb0e40a5a9b41f020163393cf6c5da10b7e |
|
30-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioRecord and HAL input stream must be 16-bit PCM only"
|
fa319e6d918b84f93fb5457af5d1cca6421ac517 |
|
30-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Remove CC_LIKELY and CC_UNLIKELY where not needed Only keep them in performance-sensitive code Change-Id: Ib257ddd7bc39ce9896997ffae008c524ac743d01
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2eeca1f8e18106d118f7268cb9d8597539685c5c |
|
29-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Merge "Move local variable declarations to point of first use"
|
bfb1b832079bbb9426f72f3863199a54aefd02da |
|
07-Jan-2013 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: offload playback, non-blocking write - Added specialized playback thread class for offload playback, derived from directoutput thread. This thread type handles specific state transitions for offloaded tracks and offloading commands (pause/resume/drain/flush..) to audio HAL. As opposed to other threads, does not go to standby if the track is paused. - Added support for asynchronous write and drain operations at audio HAL. Use a thread to handle async callback events from HAL: this avoids locking playback thread mutex when executing the callback and cause deadlocks when calling audio HAL functions with the playback thread mutex locked. - Better accouting for track activity: call start/stop and release Output methods in audio policy manager when tracks are actually added and removed from the active tracks list. Added a command thread in audio policy service to handle stop/release commands asynchronously and avoid deadlocks with playback thread. - Track terminated status is not a state anymore. This condition is othogonal to state to permitted state transitions while terminated. Change-Id: Id157f4b3277620568d8eace7535d9186602564de
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
34542acfa25c6413c87a94b6f7cc315a0c496277 |
|
26-Jun-2013 |
Glenn Kasten <gkasten@google.com> |
Move local variable declarations to point of first use Change-Id: Ideb83dea2c3002651c34fa646753cba598e29e93
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
291bb6d8947c5b0c062f0895d623c529259bfa39 |
|
17-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
AudioRecord and HAL input stream must be 16-bit PCM only Currently there are 16-bit PCM assumptions in several places for capture: - resampler API - mRsmpInBuffer and mRsmpOutBuffer - RecordThread::threadLoop upmix, downmix, and resampling - possibly other places Until those assumptions are removed, this CL enforces 16-bit PCM in both client and server at all places where a format is checked. Change-Id: I08b0570bff626ad0d341804825a72c14e61b4233
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4182c4e2a07e2441fcd5c22eaff0ddfe7f826f61 |
|
15-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Use AudioSystem::setLowRamDevice() to configure memory Bug: 9798886 Change-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
153b9fe667e6e78e0218ff0159353097428c7657 |
|
15-Jul-2013 |
Glenn Kasten <gkasten@google.com> |
Make AudioFlinger::instantiate() more resilient when called from separate module Bug: 8834855 Change-Id: I4cd842cdfb09d2aaaaab9df9ac3bec6179709bd3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1ab85ec401801ef9a9184650d0f5a1639b45eeb9 |
|
31-May-2013 |
Glenn Kasten <gkasten@google.com> |
Include what is needed Remove old includes. Header files only include other header files that they directly need themselves. Change-Id: Ic471386808d9f42ea19ccbd59cb50a5f83a89dd0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ad3af3305f024bcbbd55c894a4995e449498e1ba |
|
25-Mar-2013 |
Richard Fitzgerald <rf@opensource.wolfsonmicro.com> |
Public API changes for audio offload support. NOTE: this does _not_ include all private member variables added to classes as part of offload support. Only public/protected functions and stubs functions/variables needed to make the changes buildable. - isOffloadSupported() added to audio policy service A stub implementation is required to build, this always returns false - setParameters() added to IAudioTrack A stub implementation is required to build, this always returns INVALID_OPERATION - CBlk flag for stream end - Change AudioSystem::getRenderPosition() to take an audio_output_t so caller can specify which output to query - Add AudioSystem::isOffloadSupported() This is fully implemented down to the AudioFlinger function AudioPolicyServer::isOffloadSupported() which is just a stub that always returns false. - Add EVENT_STREAM_END to AudioTrack interface. STREAM_END is used to signal when the hardware has actually finished playing all the data it was sent. - Add event type enumeration to media player interface AudioSink callbacks so that the same callback can be used to handle multiple types of event. For offloaded tracks we also have to handle STREAM_END and TEAR_DOWN events - Pass audio_offload_info_t to various functions used for opening outputs, tracks and audio players. This passes additional information about the compressed stream down to the HAL when using offload. For publicly-available APIs this is an optional parameter (for some of the internal and low-level APIs around the HAL interface it is mandatory) - Add getParameters() and setParameters() API to AudioTrack Currently dummy implementations. - Change AudioPlayer contructor so that it takes a set of bitflags defining what options are required. This replaces the original bool which only specified whether to use deep buffering. - Changes to StageFright class definition related to handling tearing-down of an offloaded track when we need to switch back to software decode - Define new StageFright utility functions used for offloaded tracks Currently dummy implementations. - AudioFlinger changes to use extended audio_config_t. Fills in audio_offload_info_t member if this info is passed in when opening an output. - libvideoeditor changes required to add the new event type parameter to AudioSink callback functions - libmediaplayerservice changes required to add the new event type parameter to AudioSink callback functions Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1 Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Eric Laurent <elaurent@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7c027248e1a4ccd5b22bc4deafb03e2d87ac8f38 |
|
26-Dec-2012 |
Glenn Kasten <gkasten@google.com> |
Consistent whitespace Change-Id: I118cce68d3b777f9ec9b6bfb70367496422a40f2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
949a926cadbc961fbb649c91d76d7aee8ea4d7bd |
|
16-Apr-2013 |
Glenn Kasten <gkasten@google.com> |
Use correct pid when running under test harness This is a partial fix which addresses one of the root causes of this bug, but only when running under test harness. It has no effect otherwise. Bug: 8598539 Change-Id: I87444daef1d76b17544f331e651ba1c87893c381
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c9b2e20f7c9a71e07ef398152709c76079decbcd |
|
26-Feb-2013 |
Glenn Kasten <gkasten@google.com> |
Miscellaneous cleanup Abbreviation framesReady to fRdy for new systrace. Put inline const on one line. Use local copy of mState in state. Improve logging. Line length 100. Change-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
46909e7eb074ce1b95b8a411eb71154f53f84f77 |
|
26-Feb-2013 |
Glenn Kasten <gkasten@google.com> |
Remove tee sink debugging at compile time Bug: 8223560 Change-Id: Iddbfb06c45d43d9f20bb428215dd4094931e19a7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
da6ef1320d0161b1640dc84d7a9c5a25860c3619 |
|
10-Jan-2013 |
Glenn Kasten <gkasten@google.com> |
Update tee sink Implement rotation to reduce long-term storage use. Implement optional per-track tee. Dynamically enable at runtime based on property, instead of at compile-time. Dynamic frame count not yet implemented. Bug: 8223560 Change-Id: I3706443c6ec0cb0c6656dc288715a02ad5fea63a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
59686720182dcaa1a1a4757964df38c16f1a5246 |
|
04-Feb-2013 |
Eric Laurent <elaurent@google.com> |
Merge "AudioFlinger: fix RecordThread initial device"
|
685ef09bcaf5de6abf2064d552296f70eaec6761 |
|
04-Feb-2013 |
Glenn Kasten <gkasten@google.com> |
Fix crash when destroying a DuplicatingThread Bug: 8121343 Change-Id: I9b1fc56c753e465e8a08916022e52db6c3a36906
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d3922f72601d82c6fc067a98916fda0bd1291c5f |
|
02-Feb-2013 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: fix RecordThread initial device A regression was introduced when the audio device enums where modified for a 32 bit representation: the device passed when constructing a RecordThread was still the concatenation of input device and output device bit fields on one 32 bit value which is not possible anymore. The fix consists in modifying the RecordThread constructor to accept separate values for input and output devices. Change-Id: I81fb5f4718428b54251e65d74b86e198ce15193e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9e58b552f51b00b3b674102876bd6c77ef3da806 |
|
19-Jan-2013 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger uses media.log service for logging Change-Id: Ia0f8204334f6b233f644d897762a18c95d936b4b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8d6cc842e8d525405c68e57fdf3bc5da0b4d7e87 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Remove unnecessary parameter Just get the parameter on server side Change-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
81784c37c61b09289654b979567a42bf73cd2b12 |
|
19-Nov-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger files reorganization Audioflinger.cpp and Audioflinger.h files must be split to improve readability and maintainability. This CL splits the files as follows: AudioFlinger.cpp split into: - AudioFlinger.cpp: implementation of IAudioflinger interface and global methods - AFThreads.cpp: implementation of ThreadBase, PlaybackThread, MixerThread, DuplicatingThread, DirectOutputThread and RecordThread. - AFTracks.cpp: implementation of TrackBase, Track, TimedTrack, OutputTrack, RecordTrack, TrackHandle and RecordHandle. - AFEffects.cpp: implementation of EffectModule, EffectChain and EffectHandle. AudioFlinger.h is modified by inline inclusion of header files containing the declaration of complex inner classes: - AFThreads.h: ThreadBase, PlaybackThread, MixerThread, DuplicatingThread, DirectOutputThread and RecordThread - AFEffects.h: EffectModule, EffectChain and EffectHandle AFThreads.h includes the follownig headers inline: - AFTrackBase.h: TrackBase - AFPlaybackTracks: Track, TimedTrack, OutputTrack - AFRecordTracks: RecordTrack Change-Id: I512ebc3a51813ab7a4afccc9a538b18125165c4c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a42ff007a17d63df22c60dd5e5fd811ee45ca1b3 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up channel count and channel mask Channel count is uint32_t. Remove redundant mask parameter to AudioTrack::createTrack_l() and AudioRecord::openRecord_l(). Change-Id: I5dc2b18eb609b2c0dc3091994cbaa4628062c17f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aa25c0321bd4b9eb46a4d1cb4ac5fa47af30eeb4 |
|
17-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge ""if" statements use curly braces per media style"
|
77035d10a740914313500811b31a90ab948bd267 |
|
17-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix time vs. bytes units bug in getRenderPosition"
|
67ba2b6b8018ce7556cdd880dbf28d06a92ebb78 |
|
17-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Don't use control block frame count after create"
|
b603744e96b07b1d5bf745bde593fb2c025cefcf |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Don't use control block frame count after create This is part of a series to clean up the control block. Change-Id: I7f4cb05aef63053f8e2ab05b286d302260ef4758
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d65d73c4ae74d084751b417615a78cbe7a51372a |
|
23-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
"if" statements use curly braces per media style Change-Id: I130e7849fd1da7a0b7fe56c3c53919d26e3843b8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
827e5f1237757aee78b677efcf0f7c44fd0dd3d8 |
|
02-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Don't explicitly log tid If needed, it can be obtained with adb logcat -v threadtime Change-Id: I91b3911d20f7bcfc3361db4052db21ff9181f1cf
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
26c77556efc30800466b60b3975bc35a70c8c28b |
|
16-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Fix time vs. bytes units bug in getRenderPosition Rename correctLatency since it requires thread to be locked. Use size_t for byte and frame counts. Change-Id: I178fdd18bdb823813b9563927bdff8c0d28ca5a5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aac817e6685a51843e84c23d970b3d559e74e8f6 |
|
16-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use size_t for frame counts"
|
e33054eb968cbf8ccaee1b0ff0301403902deed6 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Use size_t for frame counts Also fix typo: bufferCount should be frameCount. Change-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4bd7e5436f9c308503d72e80804fb5637fda1584 |
|
15-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Static AudioTrack plays twice initially Bug: 7528721 Change-Id: I10bc16a26f33dba6572b730a170cb3bf00e68e30
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
60a839204713e0f8258d082af83262b1eb33a6c3 |
|
21-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up frame size in AudioTrack and AudioFlinger TrackBase::mFrameSize, mChannelMask, and mChannelCount are now const. Use TrackBase::mFrameSize instead of re-calculating frame size. AudioFlinger only sees 16-bit PCM format, conversion from 8-bit is now entirely on the client side. Previously a small part of the responsibility was on server side also. size_t is unsigned, so use %u in logs. Fix theoretical bug where TrackBase constructor was over-allocating space for non-linear AudioTrack or 8-bit PCM AudioRecord (probably benign). Change-Id: I7cbbba0bf4dba29ea751d8af341ab8e5cbbdc206
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3b16c766d1ae2cfd8487e8ffb2b23936fc0a8e17 |
|
14-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Use uint32_t for sample rate Change-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9f2016d9adfb4f88fa0bbfcfa5954f79160db595 |
|
13-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Rename TrackBase::mFrameCount to mStepCount This prepares for adding a new field TrackBase::mFrameCount with a different meaning. Change-Id: I6bbe2c59f2a882be57caeec2e2e06f439a0e9e83
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
83a0382dc17364567667a4e6135db43f5bd92efc |
|
12-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Move frame size out of the control block This is part of a series to clean up the control block. Change-Id: Ifab1c42ac0f8be704e571b292713cd2250d12a3f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b929e417853694e37aba1ef4399f188987b709d9 |
|
08-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Move buffers pointer out of the control block This is part of a series to clean up the control block. Change-Id: Ie474557db7cb360f2d9a0f11600a68f5a3d46f07
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
864585df53eb97c31e77b3ad7c0d89e4f9b42588 |
|
07-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Remove CBLK_DIRECTION from control block flags This is part of a series to clean up the control block. Change-Id: I0265fece3247356b585d4d48fbda6f37aea8a851
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e0b07179a48ee50fda931d2aa1b3c751d167e4d7 |
|
07-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Remove CBLK_FAST from control block flags This is part of a series to clean up the control block. Change-Id: Ic881a3560d9547cb63fcc0cefec87aa3da480e0d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
287fedb1b1430f138c1f583869b10294773945be |
|
05-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Merge duplicate code in TrackBase::TrackBase() Change-Id: Id8a7db4d94888796a9dcbed4cac99941705cd174
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9c5fdd83f9b9f49be35107971feb33528d60b945 |
|
05-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify control block flag names Use only one symbol per flag Change-Id: Ia3582e2134abd60c896d11337face65383e79c7c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
85ab62c4b433df3f1a9826bed1c9bec07a86c750 |
|
01-Nov-2012 |
Glenn Kasten <gkasten@google.com> |
Line length 100 Change-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d06785bebf7e43d4a011b62a252771373ada910c |
|
30-Sep-2012 |
Glenn Kasten <gkasten@google.com> |
Save copy of mic input, disabled by default Change-Id: I4f5e95a5ddf016530d1b2747a0a5ca0962caabda
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
26dd66e8ea7a1abf28c33196fc77822f68a718af |
|
19-Oct-2012 |
Glenn Kasten <gkasten@google.com> |
Use ALOGVV instead of commented ALOGV Change-Id: I17bdb5274877760c7edaa31416020d349082e593
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
291f824e02ff517a34cfe50220b4e2b402ee998d |
|
19-Oct-2012 |
Glenn Kasten <gkasten@google.com> |
Remove active track when thread goes to standby Bug: 7369232 Change-Id: I7ff9f525dad4be0aef562a53015b06ee7d3d50f1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a045dcafd2b77036210f5b72e79d745ad4c1b848 |
|
16-Oct-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix track estimation for presentation complete Audio tracks were not using the right latency estimation for signalling the completion of their presetation. This caused the synchronization mechanism between playback and record to be off, and a synchronized recording would contain some of the audio that was meant to be over once recording would start. Use the playback thread's latency reporting which takes the audio pipe into account. Bug 7237669 Change-Id: I23a907a53ad0b0d68d246789ec595a77a79fced5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
087dd8e7232e4c009e9121ab7e8c37985522c9ad |
|
27-Sep-2012 |
Glenn Kasten <gkasten@google.com> |
Disable audio watchdog It's not critical, and is wasting power Bug: 7241714 Change-Id: I6ad4375f0000c92529688723dbe0ff0caa809c5d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2bfc6b42b3733c12485dd51ed95191956abc3e4e |
|
28-Sep-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
bug 7253033 clean up before closing an output An output can only be closed if there is no lock contention that prevents ThreadBase::exit() from being blocked. If an output device is waiting for an operation to complete (here a write in the remote_submix module, because the pipe is full), signal the module that it's entering the "exiting" state. Change-Id: I8248add60da543e90c25a4c809866cdb26255651
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
842c5d9553f3f8e97d04ed1bd0d37e4851240654 |
|
26-Sep-2012 |
Glenn Kasten <gkasten@google.com> |
Revert "Don't wait for presentation complete if terminated" This reverts commit 44cda3a4e7ca3de0db9cb49145def3803b03ebb4 Change-Id: I7fd29b77690dab057ac966a42fb198b2772f092c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d |
|
24-Sep-2012 |
Glenn Kasten <gkasten@google.com> |
Implement android.media.AudioManager.getProperty() Bug: 6635041 Change-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b6ba2fd0d61a4844c153e17843fbe2c841c4bf57 |
|
25-Sep-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: improve record start and thread exit Use broadcast() instead of signal() on the thread wake up condition when starting record or requesting thread exit to make sure that if another thread is waiting for the same condition (e.g binder thread calling setParameters()) the mixer thread will be woken up. Bug 7184317. Change-Id: I3154a4509ca7af6ffae5236e522b0fab8e75ed06
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1afc26db11b71c43f63a0f72a45a803f1a7910dd |
|
24-Sep-2012 |
Eric Laurent <elaurent@google.com> |
fix end of track presentation on suspended output The code detecting the end of an audio track presentation before removing it from the active track list is based on the count of audio frames sent to audio HAL. When an output stream is suspended (e.g. A2DP when SCO is active), this count does not change and a track in stopped state will never be removed from active track list causing the mixer thread to never release the wake lock. The fix consists in incrementing the audio HAL frame count even if the output is suspended. Also fix a problem in getRenderPosition() when the output is suspended. Bug 7167534. Change-Id: I3be836cbbea29b65dc087199cac6a1cd84c0a41d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
896adcd3ae6a1c7010e526327eff54e16179987b |
|
13-Sep-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: send priority request from a thread When creating a fast AudioTrack, a request is sent to SchedulingPolicyService to elevate the requesting thread priority. This generates a binder call into system_server process and to a JAVA service via JNI. If the thread from which the track was created is in the system_server process and does not have the "can call java" attribute, a crash occurs because the binder optimization reuses the same thread to process the returning binder call and no JNI env is present. The fix consists in sending the priority change request from the AudioFlinger mixer thread, not from the binder thread. This also reverts the workaround in commit 73431968 Bug 7126707. Change-Id: I3347adf71ffbb56ed8436506d4357eab693078a3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4362f5300162ed55f56cf167eccf7f2e5b89d435 |
|
13-Sep-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Handle audio HAL returning 0 bytes in record thread Enter standby when HAL returns an error, but also consider 0 bytes returned as NOT_ENOUGH_DATA. Change-Id: Ica83142310e9c176f936e0440571a6034cbc575f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
52762410dbc9189cd92a4094a1dbd4cfe8e71cb6 |
|
13-Sep-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Don't deadlock on AudioRecord start when reads return 0 When calling start() on an AudioRecord with a HAL that returns 0 on a read() operation, the start blocking condition was never unblocked. Add a boolean to track the first read operation so the returned number of bytes (mBytesRead) is only evaluated after that first read. Change-Id: I8c735a00d48cd6a0da467ccdf75d3616b38f6afa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fe3156ec6fd9fa57dde913fd8567530d095a6550 |
|
11-Sep-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Communicate audio session ID to downmixer The audio downmixer effect might need the audio session Id, pass it from the track creation in AudioFlinger to the downmix effect creation in AudioMixer. Change-Id: I5e29540542ae89cf4a0cdb537b3e67f04442a20a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f1c04f952916cf70407051c9f824ab84fb2b6e09 |
|
28-Aug-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: changes for new audio devices enums The ThreadBase class now has a separate member for input and output devices (mInDevice, mOutDevice). Only query get_supported_devices() from audio HAL if the function is exposed and if the audio policy manager did not specify the audio module to open. Also fixed bug in AEC preprocessing that would reset to default output device when an input device was given. Change-Id: I19d4d06aeb920b068e3ef31e6e6be6345ce5d67a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
57b2dd1e78af53115985f18d31ec5421c9da947e |
|
01-Sep-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: send audio source to audio effects Added support for EFFECT_CMD_SET_AUDIO_SOURCE audio effect command to inform preprocessings of current audio source selection for capture. Change-Id: Ib2418a9aa8114e8457fe828ecd43b230ed86cdd6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c3ae93f21280859086ae371428ffd32f39e76d50 |
|
30-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Update audio comments Change-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7aa25591769685ae0e8349b3ca3534c724484375 |
|
03-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead code RecordThread::isValidSyncEvent() returns false, so most of RecordThread::setSyncEvent() is never executed. Change-Id: I0cf848beb46a367a45126d2df3073c5afa2ca59c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2dd4bdd715f586d4d30cf90cc6fc2bbfbce60fe0 |
|
29-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Move libnbaio out of AudioFlinger libnbaio is now a separate shared library from AudioFlinger, rather than a static library used only by AudioFlinger. AudioBufferProvider interface is now also independent of AudioFlinger, moved to include/media/ Change-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
106e8a42038f9e90d5ff97f8ab6f1a42258bde9e |
|
02-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
const methods Change-Id: I92e32ee16274c032c9d0ce910676be2a7fa52471
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0dbb356050d0db9e0043dd43045c1864a933332b |
|
03-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify AudioFlinger::PlaybackThread::isValidSyncEvent() Change-Id: I3e4af69b929d4ca04afaac26c7e41c89fce25b9c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d23eedca9b5a1812891c05d89850ab7ee707040d |
|
02-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Discard setSyncEvent() return value setSyncEvent() returns a status_t which is sometimes ignored. Emphasize this is intentional by casting to void. Change-Id: Ic614988347cba36bd2504d7ad321594a355b0d9d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3ed292031dc50c56110cdadb1e3778117e3be76a |
|
08-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Replace hard-coded "2" by a constant and comment Bug: 6679403 Change-Id: I6c2701f9afedc26540dfad0b4e23348bbc4cb01a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2c3b2da3049627264b7c6b449a1622f002210f03 |
|
03-Aug-2012 |
John Grossman <johngro@google.com> |
AudioFlinger: fix timed audio (cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7) > AudioFlinger: fix timed audio > > Addresses Bug 6900517. > > Finish up support for timed audio in the new FastMixer world. Pay special > attention to remaining lock-less and voluntary yield free on the FastMixer > thread. This fixes audio playback for Q on JB. > > Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785 > Signed-off-by: John Grossman <johngro@google.com> Change-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5 Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ee578c0330319f04a48bccbdb26b53fea0388d04 |
|
24-Jul-2012 |
John Grossman <johngro@google.com> |
AudioFlinger: Better handling for master volume/mute (cherry picked from commit 93d906837e0e89aa1d9c913ab2b531b809f9bb9e) > AudioFlinger: Better handling for master volume/mute > > Changes to address bug 6842827. > > When a HAL is loaded, cache whether or not the HAL supports > set_master_volume/mute in the AudioHwDevice structure. Store an > AudioHwDevice in AudioStream(In|Out) structures instead of just an > audio_he_device_t. This give threads (PlaybackThreads in > particular) access to the cached capabilities. > > When setting master volume/mute, change the system to always set the > setting on all HAL which support it and also to set the setting on all > PlaybackThreads. Change PlaybackThreads to apply the setting at the > in SW mix stage of the pipeline if its assigned HAL does not support > the setting, or to ignore the setting of the assigned HAL does support > it. > > Change-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4 > Signed-off-by: John Grossman <johngro@google.com> Change-Id: Icb6bc13764e100a2003eb1dee2231132ab287d98 Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d8f178d613821c3f61a5c5e391eb275339e526a9 |
|
20-Jul-2012 |
John Grossman <johngro@google.com> |
Change audio flinger to user HAL master mute if available (cherry picked from commit 91de9b56282d126ffb36344266af5fee3cefcfdd) > Change audio flinger to user HAL master mute if available > > Hand merge from ics-aah > > > Change audio flinger to user HAL master mute if available: DO NOT MERGE > > > > Replicate the pattern used for HAL master volume support to make use > > of master mute support if the HAL supports it. This is part of the > > change needed to address bug 6828363. Because of the divergences > > between ICS and master, this change will need to be merged by hand. > > > > Signed-off-by: John Grossman <johngro@google.com> > > Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685 > > Change-Id: I32280582905c969aaec2bb166ec5c61df82d737a > Signed-off-by: John Grossman <johngro@google.com> Change-Id: I5cd709187221d307fe25c5117ccaadca5f6b197b Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
44cda3a4e7ca3de0db9cb49145def3803b03ebb4 |
|
01-Aug-2012 |
Glenn Kasten <gkasten@google.com> |
Don't wait for presentation complete if terminated Change-Id: Ia04cf6c620693457dca87b4ffea5dd0fe71efdce
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
510a3d6b8018a77683dac466127ffd0af34bef6e |
|
16-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Start adding support for multiple record tracks Replace single mTrack by vector mTracks. Destroy record tracks similarly to playback tracks. Dump all record tracks, in addition to the active record track. Change-Id: I503f10b51928b6b92698fe1c51a9ddd3215df1f4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0ec23ce0d1ff79566c402bc30df3074f6e25a22b |
|
10-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up start() parameters Document where int is used instead of AudioSystem::sync_event_t (probably because of a header file dependency). TrackBase::start() and RecordTrack::start() don't need default parameters. Change-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e4e2a37dbe2a4d923232305549101f779a2e3638 |
|
23-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Extract methods to enter standby and standby mode Also move initial standby from to threadLoop to avoid a race condition. Change-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0a7af18d0308295405491f86603e3d119450aba0 |
|
10-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use valueAt instead of editValueAt when possible Change-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1d491ff06f4b9c90ff24fe953b90d0843eaf1c04 |
|
16-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Fix races in AudioRecord stop() Change-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
69d799679c8c0308e42057e7b5ad63a7ae806480 |
|
19-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use upmix/downmix utility routines Change-Id: I9ae2ec938fb695ec576ea008a42205325af7bbf1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e65c89113232d070dd9153c54ca19301bca7a162 |
|
21-Jul-2012 |
Eric Laurent <elaurent@google.com> |
fix audio effect not destroyed when needed. commit a5f44eba contained an error which made that audio effect modules where not destroyed but left in the destroyed state rendering them unuseable after being released. Bug 6805168. Change-Id: Ia4e683b3c970ffd01846c482fde73d799ff219de
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
33e6e35b03a726e35203e97550f32154c91d5f13 |
|
17-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Miscellaneous audio record fixes Call AudioSystem::stopInput() if exitPending() after wait() returns. Acquire lock before clearing mActiveThread. Change-Id: Ia55e4c4b3accc65ad5479cbdc094fd919152af9f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4 |
|
19-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use constructor to initialize instead of memcpy Also don't check for thread parameter as it's always non-NULL Change-Id: Id23ded1370556ef3f76f81f5f0c6fa644bcba681
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
be5f05e0fdfc4e3799653702187861a2afa072ee |
|
19-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Internal dump methods return void not status_t Only the IAudioFlinger::dump() needs to return a status_t. Change-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5ad92f620fbbb6a8281f10169a23d38e3601e07a |
|
19-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Revert 94479fd5405642c67efd14cebe722feb9cbe6e77 Change-Id: I5ca78d5462badf541868785b2ba2e3f6d0cf492a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bb4350d3b9e9485ae59e084de270f86aecef8066 |
|
04-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_devices_t more places Change-Id: Id0ace02ca6f480a6c46e11880acf6cdc66d83184
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fd4e20c226eca185fc789de761beae64855bfbbb |
|
04-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
Run audio at priorities 2 and 3 above kernel 1 Also run the watchdog at same priority as the fast mixer. requestPriority() originally used only the caller's pid to decide which cgroup to assign, but in the future it might look at the priority also. So it's safer to use same priority as the fast mixer to be sure we run in the same cgroup. Bug: 6461925 Change-Id: Ia59c93e4b22dacbb6746bfa6ad491be7b72f2b8d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d96c5724818fb47917bb5e7abe37799735e1ec0e |
|
25-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
Don't call virtual methods in destructor The result of calling virtual methods from a destructor is undefined. Change-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1ea6d23396118a9cfe912b7b8a4e6f231e318ea2 |
|
09-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use atomic ops for thread suspend count There was a theoretical but unlikely race if two binder threads executed suspend() or restore() concurrently. Also added comments. Change-Id: I0908acc810b83bdd66455b27ca3429de1662a2cd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1879fff068422852c1483dcf8365c2ff0e2fadfc |
|
12-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Add tid parameter to IAudioFlinger::openRecord Not yet implemented Change-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bf04a5d7f287fc712e0ed91849dc85c90c1e182d |
|
12-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify AudioRecord::getInputFramesLost() This also fixes a benign race in reading mActive without a lock. Change-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
39c54f68804c1ce5c85ec588f3c2c63447a807b4 |
|
09-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead code Change-Id: If22a6c4e572b0734eba0c5a7ce29a2c61c581e5d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4fe1ec4f40b58abff6cec147aa786cb65698161a |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Fix check for invalid channel count Change-Id: Id9e3dce0e3d5971786212d3f70e17a17e32ce92b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
04270daf50f0c602d7c57a257a693e68246cbeb7 |
|
10-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Record overflow cleanup Add comments and rename one method for clarity Change-Id: I04a9147e46e88a072256c0211b112d52202419e2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
254af180475346b6186b49c297f340c9c4817511 |
|
03-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_channel_mask_t more places Use it in AudioSystem::getOutput(), AudioSystem::getInput(), IAudioPolicyService::getOutput(), IAudioPolicyService::getInput(), and various other places in AudioFlinger. Not done: AudioTrack and OutputDescriptor. Change-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9f34a36d9cdb9595c288e50ffe00da038bc8abb9 |
|
21-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Whitespace and indentation Change-Id: I424052b4ff9218147a5cfc8e6dcd67fe8105d229
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7d6c35bf132a46c0a8a9826491882495fc98bd8c |
|
02-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Move constant initializations from onFirstRef() to constructor Change-Id: I57f55b0bd1edee105c58c3a055f95f1e4a2c9646
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6648821933dc06c0b09ab2c8b32135edddcd4291 |
|
21-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger::getBuffer() always returns non-NULL Change-Id: I543d3db507597cacbfdad5d9ea71732137fe54fb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
94479fd5405642c67efd14cebe722feb9cbe6e77 |
|
10-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Fix build Revert after system/core audio_devices_t is submitted Change-Id: I5a8ee1a7b711e834501e927f41c62efa6a6600b6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
01542f2704f39956da09ae2840e192dab760091f |
|
02-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Only write to mDevice once This fixes a bug where readers might see intermediate values. Also add comments about how mStandby and mDevice are used. Change-Id: Idc84e56c21381a45137a2ca5ff9c57d437201869
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c1dae24a08b67b98e18e4239d4f3a74d600d353c |
|
03-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Remove debug code HAVE_REQUEST_PRIORITY and SOAKER Change-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a5f44ebaf58911805b4fb7fb479b19fd89d2e39b |
|
25-Jun-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix effect disconnect deadlock Fix possible deadlock when several EffectHandles on the same EffectModule are destroyed simultaneously: A wp on an EffectHandle should not be promoted to a local sp with ThreadBase mutex held as the EffectHandle destructor can be called when the sp gets out of scope which will call ThreadBase::disconnectEffect() and try to acquire the mutex. Use raw pointers instead of weak pointers for the list of handles on an EffectModule. Bug 6679606. Change-Id: Ice8b602fb03a7d363c44ce3dced8a53540d96270
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dd8104cc5367262f0e5f13df4e79f131e8d560bb |
|
02-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_channel_mask_t more consistently In IAudioFlinger::createTrack() and IAudioFlinger::openRecord(), declare input parameter to use correct type audio_channel_mask_t. In IAudioFlinger::getInputBufferSize(), input parameter is now channel mask instead of channel count. Remove unused IAudioFlinger::channelCount(audio_io_handle_t). In AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(), input parameter is channel mask instead of channel count. Change-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f1da96d8cf60842538e00a9c950cc451f7da2c10 |
|
03-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Remove longStandbyExit It was never set (the assignment was within an "if" that was never true). Change-Id: I01cc68e9df6b190eece621b2aa9858b4361880ce
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
415fa7599f48494f99206b8d6e1974abb52c5923 |
|
03-Jul-2012 |
Glenn Kasten <gkasten@google.com> |
Fix uninitialized field EffectModule::mPinned Also mark EffectModule::mId and EffectModule::mSessionId const, and document the initialization of other fields in EffectModule. Change-Id: Ic1ca008e75e9b5924743ffc35bef80057f3a0669
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d5903ec1332630f2992a6f0d5ca69d13a185c665 |
|
18-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Compare sp<> to 0 and raw pointers to NULL Change-Id: I50ff8a010d349d1d7e3dffa04a6331814c2128b0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a01992a0675a06df7d0bbe7b977207dd0c33fdc7 |
|
02-Jul-2012 |
Eric Laurent <elaurent@google.com> |
am dbbd5b86: am 109347d4: audioflinger: fix regression in attachAuxEffect(). * commit 'dbbd5b860a3a26bea3376410f75f27530d9cd10b': audioflinger: fix regression in attachAuxEffect().
|
109347d421413303eb1678dd9e2aa9d40acf89d2 |
|
02-Jul-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix regression in attachAuxEffect(). Commit 717e1286 introduced a regression in PlaybackThread::Track::attachAuxEffect() when called with an effect ID of 0 to detach the auxiliary effect. It is normal in this case that AudioFlinger::getEffectThread_l() returns 0. Bug 6768757. Change-Id: I7430bd1aad2f68da38f7c3e4794e7ad657bfc6be
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dbabf8a7dfe3aa8bf0ed169220d2009d5891fef2 |
|
01-Jul-2012 |
Eric Laurent <elaurent@google.com> |
am 651f9e7c: am 717e1286: audioflinger: fix auxiliary effect attachment * commit '651f9e7c972b58a49066081187161268bcf9237a': audioflinger: fix auxiliary effect attachment
|
717e128691f083a9469a1d0e363ac6ecd5c65d58 |
|
30-Jun-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix auxiliary effect attachment Auxiliary effects (Reverb) are global effects and as such follow the default rule which is to attach them to the output thread that handles music streams by default. This causes a problem when several threads are eligible to handle music streams as tracks can be attached to either thread based on criteria unknown when teh effect is created. The fix consists in moving the auxiliary effect if necessary when an AudioTrack is attached to it and this track is not on the same output thread. Bug 6608561. Change-Id: Ib32c3cabc731b2046aba728be1771982999c6069
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
22167855ff9af7b13fda669ca27c67a037a7d585 |
|
20-Jun-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix setStreamOutput() AudioFlinger::setStreamOutput() should also work for direct outputs. Also ignore the destination output specified to match the expected behavior which is to invalidate all tracks using the specified stream type so that they can be re created on the correct ouput thread. Do not send STREAM_CONFIG_CHANGED event wich is ignored by AudioSystem anyway since the stream to output cache has been removed. Change-Id: I13d9d47922923b630dd755717875424c16be4637
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
362ebcbf100f7fccd37551c77e67c4faa7241b63 |
|
24-May-2012 |
Glenn Kasten <gkasten@google.com> |
DO NOT MERGE Remove log spam for fast track denied Bug: 6531054 Change-Id: Iedf58e810a157aae88b5900da27c81054c437058
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1d6573032ecde54a466ca32951e101b41a05c797 |
|
14-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am 48a0bfa6: am 49dd5cf3: Merge "Log track name on obtain/releaseBuffer warnings" into jb-dev * commit '48a0bfa6f731386f2794ff36d6677d56e98fc6ea': Log track name on obtain/releaseBuffer warnings
|
0c9d26d187017f7fb028ab52a0fbc6395142faa4 |
|
31-May-2012 |
Glenn Kasten <gkasten@google.com> |
Log track name on obtain/releaseBuffer warnings This should help diagnose problems by allowing us to correlate the logs with the dumpsys media.audio_flinger output. Change-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8cc3651c04e48b755dcc579bfa4f9a7e9391d6e7 |
|
12-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am 57d9b728: am c15d6657: Add audio watchdog thread * commit '57d9b72812d25dff1c33e37b8475a469accd0919': Add audio watchdog thread
|
c15d6657a17d7cef91f800f40d11760e2e7340af |
|
30-May-2012 |
Glenn Kasten <gkasten@google.com> |
Add audio watchdog thread Change-Id: I4ed62087bd6554179abb8258d2da606050e762c0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
796078f96c8a15fefcea70e666b22ea67cc35301 |
|
08-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am ea5008d8: am 28ed2f93: Reduce underruns in screen off, esp. with EQ * commit 'ea5008d8abfdf1479b4efa266cdb7c842d168aa9': Reduce underruns in screen off, esp. with EQ
|
28ed2f93324988767b5658eba7c1fa781a275183 |
|
07-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
Reduce underruns in screen off, esp. with EQ Add MonoPipe APIs to specify setpoint. Use screen state to configure pipe setpoint. Fix a long-standing bug where pipe sleep time was excessive, which interacted poorly with governor and low clock frequencies. Now it deducts the elapsed time since last write(), which was significant when there was EQ and low clock frequency. Bug: 6618373 Change-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bdbf0c6f1a11d6fd9b71aa765f7de39e248557ba |
|
08-Jun-2012 |
Eric Laurent <elaurent@google.com> |
am 98e2e030: am a4f7e0e9: audioflinger: fix duplicating thread standby * commit '98e2e030231ce99a4796d34d39a7517078d6735e': audioflinger: fix duplicating thread standby
|
a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94 |
|
08-Jun-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix duplicating thread standby The code that waits for a track presentation to be complete before disabling it caused a regression for duplicating threads. Because of the way output tracks activity is managed, the number of frames output by the duplicating thread would never reach the target set for a track to be considered presented. The track would not be removed from active list and the thread would not go to standby and keep its wakelock held. Bug 6606922. Change-Id: I4b46b420ac4cbf79a86b6791ae6589d407b01c92
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
349d79668ea4ca078400995c70d5d3201e8d9ea1 |
|
07-Jun-2012 |
Marco Nelissen <marcone@google.com> |
am d89dea16: am e35a55fb: Merge "Take latency and current time into account for visualization" into jb-dev * commit 'd89dea161ff3c3da515c02928cad4a9c73b23312': Take latency and current time into account for visualization
|
f06c2ed50e1db871ae9eb2bd15a196064f8c278c |
|
06-Jun-2012 |
Marco Nelissen <marcone@google.com> |
Take latency and current time into account for visualization Buffer more data, and return the data that is currently being output from the audio output, to ensure that visualizations are smooth and responsive even when the audio output has a large latency and/or large buffers. b/6522728 Change-Id: I401637f01be7600b3c594a55c869036c13b206c0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a88ed026402d92d699c336aa11267616007e4a9d |
|
05-Jun-2012 |
Eric Laurent <elaurent@google.com> |
am 717f9b73: am 67c0a58e: audioflinger: various fixes on direct output * commit '717f9b7392b0fc3ba15b018c923b85e64c0662b5': audioflinger: various fixes on direct output
|
67c0a58e05f4c19d4a6f01fe6f06267d57b49305 |
|
02-May-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: various fixes on direct output Various fixes in direct output playback thread implementation: - threadLoop_write() was broken for playback threads that do not use a pipe sink. - output buffer size calculation was hard coded for stereo. - removed software volume that was implemented for PCM stereo format only: the audio HAL has to implement volume if needed for direct outputs. Change-Id: If211b4489be9af395435707b8cf0388cce1347b2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b86f92d552c391f5d2471bd4f979135be2578578 |
|
05-Jun-2012 |
Eric Laurent <elaurent@google.com> |
am e506084e: am ab9071b8: audioflinger: fix active sleep time calculation. * commit 'e506084e1c22f8f1797b9dc3eb789a699efd45c3': audioflinger: fix active sleep time calculation.
|
ab9071b8d1b375418eb797c9a790da71de644344 |
|
04-Jun-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix active sleep time calculation. When an audioTrack underruns, the audioflinger mixer thread sleeps for a certain time to give the app a chance to recover. This time is based on the reported audio HAL latency. Some audio HALs implementing deep buffering have a variable latency and this creates a problem if the sleep time is cached when the output stream is opened and not updated afterwards. This change derives the active sleep time from the mix buffer framecount instead of the latency. This is more conservative but works for variable latency. Bug 6588525. Change-Id: Ia892fc290fe06f836565c3ae15f7a2ce026c88c6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
24a2fd0113da60785ce5af5dd905f8aaf9e0f0a1 |
|
04-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am f335f182: am 39993085: State queue dump * commit 'f335f182e4b50249ac34b41da3566ddb016cc816': State queue dump
|
5385b7b0f5d922ee38f8a54f11ee4462ef4b5e29 |
|
04-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am 2c00676c: am 1295bb4d: Fast track dumpsys * commit '2c00676cd34d78460ad610a4a4fd7a68544a7b7d': Fast track dumpsys
|
399930859a75d806ce0ef124ac22025ae4ef0549 |
|
31-May-2012 |
Glenn Kasten <gkasten@google.com> |
State queue dump Bug: 6591648 Change-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
510ba8b812d88f62968a2c9b0b638fff6d99ee84 |
|
03-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am f45dc2f1: am bf0d21fb: Count underruns for normal tracks also * commit 'f45dc2f1751d9ac19826b99fab0b226f5c84570a': Count underruns for normal tracks also
|
1295bb4dcff7b29c75cd23746816df12a871d72c |
|
31-May-2012 |
Glenn Kasten <gkasten@google.com> |
Fast track dumpsys Bug: 6591648 Change-Id: I696f51c682e7233ba690d97da26012084989b412
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bf0d21fb1310e8677caa53b90e8c3aecebc7fc13 |
|
31-May-2012 |
Glenn Kasten <gkasten@google.com> |
Count underruns for normal tracks also Bug: 6591648 Change-Id: Iff9cabe392bb2ce97062603adb9c9dc7aa4170d5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
35d7bfc359b3aa87ade92d1ab55c6992418cad48 |
|
01-Jun-2012 |
Glenn Kasten <gkasten@google.com> |
am 92e5ee95: am 7dc5b165: Merge "Fix fast track leak if out of normal track names" into jb-dev * commit '92e5ee9548542513791a70c81e0cd3fd70397269': Fix fast track leak if out of normal track names
|
893a05479c96f911d02beb0443da3ed6508143a7 |
|
30-May-2012 |
Glenn Kasten <gkasten@google.com> |
Fix fast track leak if out of normal track names Bug: 6580402 Change-Id: I3ac7f012062c35833147f47ba822eb4bf532a824
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
529e888738a91ca70cbdeeabd982f8fb2947780c |
|
30-May-2012 |
Eric Laurent <elaurent@google.com> |
am 8c07f759: am 3bdb4fbf: Merge "audioflinger: fix effect problem during underrun" into jb-dev * commit '8c07f7599a757fe51dc54253c480067cf01f13d3': audioflinger: fix effect problem during underrun
|
91b14c4c144d0cc957a427cffc02ba10d0615677 |
|
30-May-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix effect problem during underrun When an audio track underruns, the input buffer of the corresponding effect chain (if any) must be cleared, otherwise audio from previous mixer run will be fed again to the effect process function. Bug 6551652. Change-Id: I5cd02196745f756c85af82d6937e9dc54369b37f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6d80297a55ab12759ee00b7f99fa97584b430da0 |
|
24-May-2012 |
Eric Laurent <elaurent@google.com> |
am 0cc62570: am f436fdcf: audioflinger: change session check in createTrack. * commit '0cc6257030d3e6c649ea3ad807ecb9327ceb5b3e': audioflinger: change session check in createTrack.
|
f436fdcf93bd417fd3c9d2a8b19fd221d894b5e3 |
|
24-May-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: change session check in createTrack. Do not refuse to create a track on an output thread if the same session is present on another thread. It is now possible that two tracks with the same session ID are on different threads if one can use deep buffering and the other can't. In this case, move effects attached to this session to the output thread ion which the new track is created. Bug 6530324. Change-Id: I9019b3ee382e374c89d2319033afcfa7f886e4c4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
852fca99e25db8d2180c2622ca55fca676490a08 |
|
24-May-2012 |
Glenn Kasten <gkasten@google.com> |
Remove log spam for fast track denied Bug: 6531054 Change-Id: Iedf58e810a157aae88b5900da27c81054c437058
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e737cda649acbfa43fc1b74612a83f2fac9aa449 |
|
23-May-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: refine latency latency calculation. There is an audio pipe between the normal mixer output and the fast mixer to cope for scheduling delays and buffer size difference. This pipe depth was not taken into account in latency calculation. Adding the pipe contribution to the latency significantly improves A/V sync. Bug 6520569. Change-Id: I5584908e8aa8a02170eb38b22b4370eea800a235
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fbae5dae5187aca9d974cbe15ec818e9c6f56705 |
|
21-May-2012 |
Glenn Kasten <gkasten@google.com> |
Keep a copy of most recent audio played Change-Id: I6b2f97881c39998a2fae9ab79d669af6c0a37e94
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
99c99d00beb43b939dedc9ffb07adb89f6a85ba5 |
|
15-May-2012 |
Glenn Kasten <gkasten@google.com> |
systrace for audio Trace fast track buffer fill status for underruns etc. Move the definition of macro to Android.mk. No overhead if disabled. Change-Id: If0e83e21b61b059ca38f543f8a6ffb58e08c79ee
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
88cbea8a918bbaf5e06e48aadd5af5e81d58d232 |
|
15-May-2012 |
Glenn Kasten <gkasten@google.com> |
Display pipe underrun counters in dumpsys The normal mixer writes it's submix to a pipe, which is read by the fast mixer. Now dumpsys media.audio_flinger display the raw underrun counters when fast mixer tries to pull from the pipe but doesn't get enough frames. Change-Id: I72505f149f9e12802784da654a651d43734e1c79
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9017e5e0ebad9664bb7b6f2057e5bb29c852c64f |
|
15-May-2012 |
Glenn Kasten <gkasten@google.com> |
Increase normal mixer's pipe to fast mixer Change-Id: I330925c7d07b6adb30b773bda3657e4efef9ae9b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
44a957f06400a338e7af20b3d16c4c4ae22a673c |
|
16-May-2012 |
Eric Laurent <elaurent@google.com> |
Fix static track activity ref counting When a static AudioTrack underruns, it means that playback is over. As apps do not necessarily stop playback explicitly, AudioFlinger should call stopOutput() to decrease activity ref count in audio policy manager. Bug 6486311. Change-Id: I1ea722c443780329ded6310c958b24726e918d16
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2986460984580833161bdaabc7f17da1005a8961 |
|
09-May-2012 |
Eric Laurent <elaurent@google.com> |
Fix issues with synchronous record start. - Added a timeout in case the trigger event is never fired. - Extend AudioRecord obtainBuffer() timeout in case of synchronous start to avoid spurious warning. - Make sure that the event is triggered if the track is destroyed. - Reject event if the triggering track is in an incompatible state. Also fix a problem when restoring a static AudioTrack after a mediaserver crash. Bug 6449468. Change-Id: Ib36e11111fb88f73caa31dcb0622792737d57a4b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4adcede0dc54a85c31abaf139921aebd7a072d8e |
|
14-May-2012 |
Glenn Kasten <gkasten@google.com> |
Reduce video frame drop rate The video playback engine depends on having relatively precise audio progress updates for its A/V sync and frame drop calculations. For small audio HAL buffer sizes, this was not a problem, but when the HAL buffer size was > 12 ms, the normal mix buffer size became > 24 ms and this then caused video problems. The new formula tries to keep the normal mix buffer size within a closer tolerance of 20 ms to 24 ms. Also use consistent term: multiplier instead of multiple. Bug: 6479613 Change-Id: I903bad74461908e8c8f0a61e99ab5e24d5c44433
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
09474df67278c0cd621b57c4aef1deaec4d8447f |
|
10-May-2012 |
Glenn Kasten <gkasten@google.com> |
Improve underrun handling for fast tracks Maintain more accurate accounting of type of underrun. Automatically remove track from active list after a series of "empty" underruns. Change-Id: If042bf80e1790dcaaf195c99dc9c0ed9b55382c1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d08f48c2ad2941d62b313007955c7145075d562c |
|
02-May-2012 |
Glenn Kasten <gkasten@google.com> |
Fix stopping process for fast tracks Previously, the state of a fast track "wiggled" back and forth at the end. Now it goes through these transitions: active -> stopping_1 -> stopping_2 -> stopped This CL is only for fast tracks, and does not change how normal tracks work. Change-Id: Icc414f2b48c46dda63cfa6373ca22d033dd21cd4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
808e7d16504cbe5b28bb88c31afb2542ab488965 |
|
12-May-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: fix global effects suspend logic Audio effects on the output mix should not be suspended when effects on the output stage (post processing) are enabled. Change-Id: I2e1c08fa9358ea3cbaec68856738d504b1be54e4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d8e6fd35ec2b59ee7d873daf1f1d9d348221c7bc |
|
07-May-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio tag for system tracing Disabled by default; uncomment ATRACE_TAG to enable Change-Id: I99af894022a859ee5644bd853cfd8a48e4735ff9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e213c86d36414a8fc75e37c52999522fe09c7328 |
|
25-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
dumpsys fCnt and flags Previously displayed TrackBase::mFrameCount but not control block frameCount. Now displays both. Also display the track flags in control block. Change-Id: Ie53781d4784633d78b6f928d69ebd494d8f110ec
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
31dfd1db7a4d2228d9642008af6f3dd744368eb6 |
|
01-May-2012 |
Glenn Kasten <gkasten@google.com> |
Disable fast track log spam except for "denied by client" and "denied by server" Change-Id: I133ab747933729cc1f386813ee06ece055bdb294
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
810280460da5000785662f6c5b0c7ff3ee0a4cb3 |
|
01-May-2012 |
Glenn Kasten <gkasten@google.com> |
Temporary fix for both normal tracks & fast tracks If there is at least one active fast track, it forces a mixer status of ready, which messes up the logic for normal track underruns. Change-Id: I9de2fcaef090e2c2f99682333af3d3dd618b0d6b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
288ed2103d96f3aabd7e6bea3c080ab6db164049 |
|
26-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
Fix race condition for non-started fast tracks This required re-implementing how fast tracks are considered active. Now, they use the same logic as normal tracks, except underrun is ignored. Other changes: - add framesReady() to AudioBufferProvider interface - rebased - add track underrun counter state to fast mixer dump state - move dumpsys header to Track::appendDumpHeader() so it closer to where tracks are dumped - display track state in dumpsys as a character code - measure and display warmup time and cycles in dumpsys - copy in the presentation complete code - add ExtendedAudioBufferProvider for framesReady() which returns size_t - simplify underrun tracking - deferred reset track after stop() - add comments Change-Id: I7db8821bc565230ec76da1f9380fe3fb09735e5b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
83faee053cfd4251dbb591b62039f563ffdac399 |
|
28-Apr-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: fix stop detection for static tracks The end of playback and end of presentation detection was broken for static AudioTracks (tracks using shared memory buffers passed by client). The mixer should not wait for a minimal amount of frames to be available to mix a static track otherwise the last frames might never be consumed. A static track should be removed from active list in case of underrun even if not stopped(). Issue 6411521. Change-Id: I66a2c1a77e98149e5049a223a6f04c3b8c5ad11a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
300a2ee9327c05fbf9d3a5fd595b558097c7c5e8 |
|
25-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
Fast mixer configuration Add compile-time option for when to use fast mixer. Double HAL frame count for fast tracks due to SRC, and make the normal frame count multiplier an even number for compatibility. Sample rate conversion can result in underruns if the HAL frame count is used as is, due to jitter. Change-Id: Ia1f8da1b8ac247d9807acfce3c318161db000905
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
da747447c1d4b5205469b4e94485b8769df57a97 |
|
26-Apr-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: fix tracks ready for mixing logic. Commit fec279f5 broke the logic allowing to wait for an application to provide frames for mixing in the case of several active tracks. This was causing audio gaps when playing music and superposing a sound Fx (keyboard clicks...). Issue 6185007. Change-Id: Id0fad150d0b615646d6b1387c0de8ca944d228f6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e0fa467e1150c65a7b1b1ed904c579b40f97c9df |
|
24-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
Move frame count calculations for fast tracks For fast tracks: move the default and minimum frame count calculations from client to server. If accepted, the default and minimum frame count is the fast mixer (HAL) frame count. If denied, the default and minimum frame count is the same as it currently is for normal tracks. For normal tracks: there is no change yet, preserve legacy behavior for now but add a FIXME to change this later. Bug fix: the test for buffer alignment matches channelCount was wrong. Bug fix: check for 8-bit data in shared memory, which isn't supported. Optimizations: - in set(), only call AudioSystem::getOutputSamplingRate() when needed - in createTrack_l(), only call AudioSystem::getSamplingRate() and AudioSystem::getFrameCount() when needed Change-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1dc28b794587be22c90a97070d928f94586db638 |
|
24-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
Use scheduling policy service Change-Id: I3c09da1dc0de5039d0c15ce7fb2bc373fa398712
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
58912562617941964939a4182cda71eaeb153d4b |
|
03-Apr-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger normal mixer uses FastMixer Change-Id: I3131bb22d2d057e9197a2ebfa6aa1cfaab9e5321
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3acbd053c842e76e1a40fc8a0bf62de87eebf00f |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Configure policy of mediaserver threads Change-Id: Ifd825590ba36996064a458f64453a94b84722cb0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c95cfbb87d0ac5e773037019a96bfc29972d4b4e |
|
12-Apr-2012 |
John Grossman <johngro@google.com> |
TimedAudioTrack: Optimize the queue trim operation. Hand merge from ics-aah > TimedAudioTrack: Optimize the queue trim operation. > > Don't perform the end PTS calculation for each buffer during trimming. > Instead, only calculate the ending PTS of a buffer if there is no next > buffer in the queue. This optimization assumes that the buffers being > queued are in monotonic media time order (a fair assumption for now) > and that the timestamps in the audio are contiguous (not a requirement > for this API, but a reality of how it is being used right now). > > In the case where the audio is discontinuous on purpose, it is > that this optimization will cause the system hold one extra buffer > which it could have safely trimmed. It should not be much of an issue > since in real life the audio is almost always contiguous, and as long > as the media clock is running and the mixer is mixing, the buffer will > be used up and discard as part of the normal flow anyway. > > Change-Id: I00061e85ee7d5651fcf80751646c7d7415894a14 > Signed-off-by: John Grossman <johngro@google.com> Change-Id: I0054b58e1389fa005aa990cb5710caf4af7b706a Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8d314b709fdd81bb64bdaa8d72a0b19c355cefb9 |
|
19-Apr-2012 |
John Grossman <johngro@google.com> |
TimedAudioTrack: Fix continuity threshold handling. Hand merge from ics-aah > TimedAudioTrack: Fix continuity threshold handling. > > Fix issues with continuity threshold handling; notably > + If the steady-state continuity threshold is exceeded, be sure to > clear the on-time flag. Failure to do this will result in the > system picking a new mix point which simply satisfies the > steady-state continuity threshold instead of the startup threshold. > Since we are putting a discontinuity in presentation anyway, we > really want to pick a perfect point, not just an OK point. > + Tighten the steady-state continuity threshold. It was currently set > to 100mSec which is enormous. 4mSec (the new setting) is much more > appropriate. On systems with a VCXO (like tungsten) this should > never be wrong by more than a sample. If TimedAudioTracks are ever > to be used on VCXO-less systems, this threshold should probably be a > a parameter configurable by applications on a track by track basis > so they can make the tradeoff between allowed error and frequency of > disruptive corrections. > + Reset the on-time flag if the mixer provides no PTS during a mix > operation. This makes for a convenient way for the HAL to reset > timed tracks when it makes changes for delay compensation across > multiple outputs. > > Change-Id: I2cb23de5a3d1f75618abc1c8ab903db883837aa8 > Signed-off-by: John Grossman <johngro@google.com> Change-Id: Ibd28c9d290494b0b19eb01caf2d9bfdef606a9b4 Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9bd23229fdec1657398abc682ccccfce1c95f8aa |
|
16-Apr-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Fix multichannel downmix pause bug on video player Pausing a video player will cause the track audio mixer to be disabled, which causes the downmixer to be deleted. When reenabled, the track channel mask hasn't changed but the downmixer is there anymore. Fixed by: - instanciating a downmixer when the AudioMixer track gets initialized (in getTrackName(), now taking a channel mask as input), and deleted when in deleteTrackName(). - when the channel changes on a track, check whether it needs a downmixer or not. Preparing a track for downmix automatically removes the old downmixer if there was one. Also: initialize the track downmixerBufferProvider field when AudioMixer is instanciated, so we can safely call delete on it in AudioMixer's destructor, in case deleteTrackName() wasn't called before the mixer was destroyed. Change-Id: I589b0781cda5b3c82f85b561c52b08546cac21f8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0ca3cf94c0dfc173ad7886ae162c4b67067539f6 |
|
18-Apr-2012 |
Eric Laurent <elaurent@google.com> |
rename audio policy output flags Change-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
acb86cccbd9d245439a04cef0bcefa589addaa4c |
|
16-Apr-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
Configure the resampler with the correct channel count when downmixing When a track needs to be downmixed and resampled, it gets downmixed first before being resampled. Therefore the resampler needs to be configured with the channel count of the output of the downmixer instead of that of the track. Removed frame size checks that don't apply anymore now that we support frame sizes that are not powers of 2 (e.g. 12 for 5.1 16bits), and changed test performed for every buffer during playback into an assert. Change-Id: Ia220f00ee382f4f7848b661c58555bdca664e194
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f7ffb8bf0a58037f0bc9662c5275005a4e539948 |
|
14-Apr-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: update to new audio HAL. Updated audio flinger to new function prototypes for open_output_stream() and open_input_stream(). Check audio hw device version when loading a module and reject devices with a version different from current one. Change-Id: I9d4c81a1f59a15db78b3989417c2a411c638fe88
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b388e531613730572067e193b6b66afb5d042233 |
|
14-Apr-2012 |
Eric Laurent <elaurent@google.com> |
Fix ALOG_ASSERT in AudioFlinger Fix broken ALOG_ASSERT in updateFramesPendingAfterTrim_l() introduced by commit 1c345196. Change-Id: Ie1b2653069283f23ff0367f2628828e37fb0749c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d3030da2ac3c0ebb8b7bdf38418263caf405b863 |
|
12-Apr-2012 |
John Grossman <johngro@google.com> |
Fix the build forgot to upload final fixup during merge. sry about that Change-Id: I2ddd2c08d8efa83c0a8d1e378ae4c28686145154
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1c345196edc61694f29307a1826a64a0d26028dc |
|
27-Mar-2012 |
John Grossman <johngro@google.com> |
TimedAudio: Track of the number of pending frames. This is a manual merge from ics-aah > TimedAudio: Track of the number of pending frames. > > Keep track of the number of frames pending in the timed audio queue so > we can implement framesReady in O(1) time instead of O(N). This > change partially addresses bug 6020970; the bug will be completely > addressed once this change has been up-integrated into master. > > Change-Id: I599eb15ea1f6d715b97b30e65214fb6fadd169df > Signed-off-by: John Grossman <johngro@google.com> Change-Id: I6cbbbc3afc8efd066fe94865326ede0c6b3db2bd Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9fbdee13d09447550dd22ae72c2dbabdce7f0a80 |
|
27-Mar-2012 |
John Grossman <johngro@google.com> |
TimedAudio: Fix a cause of audio popping. This is a manual merge from ics-aah > TimedAudio: Fix a cause of audio popping. > > Fix an issue with buffer lifecycle management which could cause audio > pops on timed outputs. There were two issues at work here. > > 1) During trim operations for the queued timed audio data, buffers > were being trimmed based on their starting PTS instead of when the > chunk of audio data actually ended. This means that if you have a > very large chunk of audio data (larger than the mixer lead time), > then a buffer at the head of the queue could be eligible to be > trimmed before its data had been completely mixed into the output > stream, even though the output stream was fully buffered and in no > danger of underflow. > 2) The implementation of getNextBuffer and releaseBuffer for timed > audio tracks was not keeping anything like a reference to the data > that it handed out to the mixer. The original architecture here > seemed to be expecting a ring buffer design, but timed audio tracks > use a packet based design. Pieces of packets are handed out to the > mixer which then frequently will hold onto that chunk of data > across two mix operations, using the first part of the chunk to > finish a mix buffer and then using the end of the chunk for the > start of the next mix buffer. If the buffer that the mixer is > holding a piece of got trimmed before the start of the next mix > operation, it would return to its heap and could be filled with who > knows what by the time it actually got mixed. On debug builds, > they seem to get zero'ed out as they go back to the heap causing > obvious pops in presentation. > > This change addresses both issues. Trim operations are now based on > ending presentation time for a chunk of audio, not the start. Also, > when the head of the queue is in flight to the mixer, it can no longer > be trimmed immediately, merely flagged for trim by the mixer when the > mixer finally does call releaseBuffer. > > Signed-off-by: John Grossman <johngro@google.com> > Change-Id: Ia1ba08cb9dea35a698723ab2d9bcbf804f1682fe Change-Id: I2c5e2f0375c410f0de075886aac56ff6317b144c Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3f9c84c0a5af83fceb8669390e2d71b75ec7b550 |
|
04-Apr-2012 |
Eric Laurent <elaurent@google.com> |
audio pre processing: test code for dual mic Added functional test code to validate effect API for multi mic simplementations. Also fixed warning in AudioFlinger. Change-Id: I07be4d2e4d17791d3626c804ba3e9f87ff26d05a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7d5b26230a179cd7bcc01f6578cd80d8c15a92a5 |
|
05-Apr-2012 |
Jean-Michel Trivi <jmtrivi@google.com> |
AudioMixer uses downmix effect for multichannel content In the AudioMixer structure associated with each track, add an object that acts as the buffer provider when the track has more than two channels of input in the mixer. This object, DownmixerBufferProvider, gets audio from the actual buffer provider of the track, and applies a downmix effect on it. The downmix effect is created and configured when the track gets created in AudioFlinger, which causes AudioMixer::getTrackName() to be called with the new track's channel mask. It is released when the track is disabled in the mixer. Change-Id: I05281ed5f61bef663a8af7ca7d5ceac3517c82db
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a4c5a550e2a3bc237179b8684e51718e05894492 |
|
29-Mar-2012 |
Eric Laurent <elaurent@google.com> |
audio policy: load audio hw modules. Audio HW modules are now loaded upon request from audio policy manager according to the configuration in audio_policy.conf. Removed hard coded HW module loading by AudioFlinger at init time. Added methods to IAudioFlinger and AudioPolicyInterface to control the loading of audio HW modules. Added methods to open an output or input stream on a specific hw module. Change-Id: I361b294ece1a9b56b2fb39cc64259dbb73b804f4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1a9ed11a472493cac7f6dfcbfac2064526a493ed |
|
21-Mar-2012 |
Eric Laurent <elaurent@google.com> |
audio policy: add configuration file removed outputs to stream mapping cache in audio system: the output for a given stream type must always be queried from audio policy manager as the cache is not always updated fast enough by audioflinger callback. removed AudioFlinger::PlaybackThread::setStreamValid() not used anymore if stream to output mapping is not cached. Change-Id: Ieca720c0b292181f81247259c8a44359bc74c66b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
73d227557ba5192735356bacab9f77b44980793b |
|
19-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger track flags and server's fast policy Change-Id: I72358c8e6829d173b3e60ced8a8babc089869fac
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0bf65bdde04b8e66c998ff37e2b2afafddddfa33 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
const methods and comments Change-Id: Ifd16750174fdb15b72507787502b587562ffc99e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a1472d9883e35edd280201c8be3191695007dfd4 |
|
30-Mar-2012 |
Marco Nelissen <marcone@google.com> |
Make AudioTrack/AudioRecord handle more than 2^32 frames b/6160363 Change-Id: I471815012c6a113ec2c4dd7676e8fa288a70bc76
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a011e35b22f95f558d81dc9c94b68b1465c4661d |
|
30-Mar-2012 |
Eric Laurent <elaurent@google.com> |
implemented synchronous audio capture Added the infrastructure to support the synchronization of playback and capture actions on specific events. The first requirement for this feature is to synchronize the audio capture start with the full rendering of a given audio content. The applications can further be extended to other use cases (synchronized playback start...) by adding new synchronization events and new synchronous control methods on player or recorders. Also added a method to query the audio session from a ToneGenerator. Change-Id: I51f1167290d9cafdf2fbcdf9e4785156973af44c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b83d38feeeb88a8a2a6219e1fca2480b5a14fb0d |
|
26-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "IAudioFlinger::createTrack and openRecord flags"
|
c5c49398584f2399af905a931e556ed6e0a29cd4 |
|
21-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Clean up Track constructor"
|
63c1faa8dea7feb90255d31ef2a133d8f2818844 |
|
21-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Update comments"
|
7153494670bdac8b650cb10b8b1838651e0ca418 |
|
21-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Whitespace"
|
a26ff6f22f4e86d09514c2819237bd9748455018 |
|
21-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "new doesn't fail on Android"
|
9a5f413a21b320fea0607e653bc75b1a4f0e7a2e |
|
21-Mar-2012 |
Eric Laurent <elaurent@google.com> |
am a48285c4: am 165ee4c5: am 14958e21: Merge "audioflinger: fix issue with camcorder and A2DP" into ics-mr1 * commit 'a48285c4f22ffc43f1771ebd1ff35dcec48db2c7': audioflinger: fix issue with camcorder and A2DP
|
f99590187e2e3f1cf6f093063170edec269cac5d |
|
19-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up Track constructor The 'thread' parameter can never be NULL. Use constructor initialization list when possible. Make more members const. Only put the relevant code under "if (mCblk != NULL)". Add comment about track name leak. Change-Id: Ib963390a69bed1999638cc982a759edd1d5f4712
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ea7939a079b3600cab955760839b021326f8cfc3 |
|
14-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Whitespace Fix indentation, and add blank lines in key places for clarity Change-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
17a736c3e1d062d7fc916329eb32aef8935614af |
|
14-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Update comments Change-Id: I327663a020670d0a72ff57bd0b682e2ce0528650
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a03567676e8766828ff970b87e13bc4c97b23473 |
|
19-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
new doesn't fail on Android Change-Id: I5079a3bf31097dd0807b2d806d5f8d3cff2077ab
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a075db4ff9b086ac2885df77bb6da0869293df92 |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
IAudioFlinger::createTrack and openRecord flags createTrack and openRecord don't need the "old" flags parameter, which was either audio_policy_output_t or audio_in_acoustics_t shifted left by 16 bits. But they do need "new" flags, which are defined by the application use case. Initially, the only application use case flag is timed output, but others are planned. For output, the audio_policy_output_t flags are passed to AudioSystem::getOutput, which returns an audio_io_handle_t, and that handle is then passed to createTrack. So createTrack doesn't need the old flags parameter. For input, the audio_in_acoustics_t flags are passed to AudioSystem::getInput, which returns an audio_io_handle_t, and that handle is then passed to openRecord. So openRecord doesn't need the old flags parameter. Change-Id: I18a9870911846cca69d420c19fe6a9face2fe8c4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9d7b4c074205609271f61e1a4741ac0c524a1795 |
|
19-Mar-2012 |
Eric Laurent <elaurent@google.com> |
am 14958e21: Merge "audioflinger: fix issue with camcorder and A2DP" into ics-mr1 * commit '14958e21c12f922d7501d32c3bec05109eb342d5': audioflinger: fix issue with camcorder and A2DP
|
89d94e79dad032fb18ddc655e6068e4231d3f0aa |
|
17-Mar-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix issue with camcorder and A2DP Some audio HALs do not support well a device selection of 0 (no device) received on an input stream. This can happen because of a problem in the audioflinger code that handles the forwarding of the output device selection to the record thread for use by the pre processing modules that need it. If the output device is 0 (meaning no op, which happens when stopping playback over A2DP) audioflinger could not detect it was an output device selection and would forward it to the input stream (see AudioFlinger::setParameters() and RecordThread::checkForNewParameters_l(). Issue 6179641. Change-Id: Idae534521866538e0d12ba259a2834f402a922e2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dfaf549e3e310bc22444f4404b19f4907b24c286 |
|
15-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioFlinger playback thread CPU measurement in Hz"
|
190a46f7c84e160386610c0c4cecb9767fb5503b |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger playback thread CPU measurement in Hz Log statistics on CPU usage in Hz in addition to wall clock time Use CPU statistics for all playback threads, not just MIXER (but they are disabled by default by a compile-time debug macro). ThreadCpuUsage library: - Move statistics out of the library and leave that up to the caller - Add API to determine a CPU's frequency Change-Id: Ia1011123146e641fcf210ef26e78ae2b4d3b64ad
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3b229ed97c0dfc85a8cf881341e29e595e0edea7 |
|
14-Mar-2012 |
Eric Laurent <elaurent@google.com> |
Merge "audioflinger: more info in dumpsys"
|
612bbb57c59397a540e96f06bdd16e437a583af5 |
|
14-Mar-2012 |
Eric Laurent <elaurent@google.com> |
audioflinger: more info in dumpsys Added TID and io handle to AudioFlinger threads dump. Change-Id: Ib1a856f3bad55c73e4c395b5e59d57435f4b9a4c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d3cee2f0f649c01e1153d593cbe723887b8e0ba0 |
|
14-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Break circular dependency on media player service Bug: 6165157 Change-Id: I3c85bbcaf31f3cb9a009e273f7b6284015eb3bd8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e53b9ead781c36e96d6b6f012ddffc93a3d80f0d |
|
13-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Whitespace and indentation Fix indentation to be multiple of 4. Make it easier to search: sp< not sp < to "switch (...)" instead of "switch(...)" (also "if" and "while") Remove redundant blank line at start or EOF. Remove whitespace at end of line. Remove extra blank lines where they don't add value. Use git diff -b or -w to verify. Change-Id: I966b7ba852faa5474be6907fb212f5e267c2874e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fd83fbf5ead098070bae674b20e6f87f45ab5d4c |
|
13-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Clean up assertion checks"
|
aa4397f07c43bd83bc3100b749401dc3d15e7622 |
|
13-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Fix bug where mMixerStatus was set to IDLE Change-Id: I55df1738fb7ba17ba6caeea6a17557526eac17a7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5798d4ebf236357a4b13246f40e52b90a34d09a4 |
|
08-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Clean up assertion checks Use ALOG_ASSERT instead of assert. Use compile-time asserts where appropriate. Fix typo in an ALOGV. Change-Id: I58f1c1ffc14319a022c88b5a88b8d0368660da8b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
73f4bc33e0d458933460250a47c64aa868c05f97 |
|
09-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Inline applyVolume() into threadLoop_mix() Also the declaration of applyVolume in PlaybackThread was dead. Change-Id: I4b1a9848d07d3d7f340baea05b17f667c78df868
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
66fcab972e9218d47c58a915f391b2f48a09903a |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge dup code at thread entry and param change This CL is mostly just cleanup, but there are a couple of fixes marked "FIX" below. Merge the duplicate code that was at the beginning of threadLoop() and after a parameter change. cacheParameters_l() is now called at entry to threadLoop() and after any parameter change. It re-calculates all values that are derived from parameters, and caches them in instance variables. updateWaitTime_l(): - FIX activeSleepTime depends on mWaitTimeMs, which was initially set to infinity. updateWaitTime_l() was not called at entry to threadLoop(), so activeSleepTime was not set correctly before the first parameter change. - FIX reversed the order of calls after parameter change for the same reason so that updateWaitTime_l() is called before calculating values that are derived from wait time. - marked it private since now it's only called from DuplicatingThread Change-Id: If2607d2ed66c6893d910433e48208a93c41fb7e9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
18868c5db2f90309c6d11e5837822135e4a0c0fa |
|
07-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_policy_output_flags_t consistently This affects: - IAudioFlinger::openOutput - AudioTrack::AudioTrack - AudioTrack::set - apps that call these Change-Id: I26fb281bac6cb87593d17697bc9cb37a835af205
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d69549665d412f1f6ebad48ad8cd05133ada8728 |
|
09-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Replace hard-coded 3 by FCC_2 to simplify searches"
|
083c154162c88a9f63aeaa10a4b52dd454bda9ff |
|
09-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Don't ask policy manager about invalid stream type"
|
53d76dbe7c55821e89d9da02e7a563f7fb45de87 |
|
08-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Replace hard-coded 3 by FCC_2 to simplify searches Change-Id: I92881d04e8378307f849fb343071a58d181a68b4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fec279f5a0bfaa2a42e91ab6dfa0282baeee308b |
|
08-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Mixer status cleanup Use mPrevMixerStatus for DirectOutputThread also. Remove the MIXER_CONTINUE logic and use MIXER_IDLE instead. Rename the field mixerStatus to mMixerStatus. Rename local variable back to mixerStatus. Change-Id: I0a8145fc856c6c5ff8b784b6176ef3c4d8eb7408
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b071e9bc248865ef87a339044c0c5cbabfac175c |
|
08-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Cleanup DirectOutputThread::mActiveTrack Rename activeTrack to mActiveTrack. Release the reference earlier, at the end of threadLoop_mix(). This allows the field to be made private and to move the declaration from PlaybackThread to DirectOutputThread. Change-Id: I02be7a254638f7d85e92aaf0002d20ca0092a5c3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
639dbee79140956c43926344c23af765f6e0c9a5 |
|
07-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Don't ask policy manager about invalid stream type Change-Id: If50fbff9d34045d1398984da48da7e6428a74491
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b279312a9038b9c5b9b05b31b1b1db86f748efd8 |
|
08-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "IAudioFlingerClient::ioConfigChanged param2 const"
|
fa26a859bacb597587a8f49acfc3127351fa688c |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Isolate references to outputTracks/mOutputTracks Move all references to DuplicatingThread::outputTracks and DuplicatingThread::mOutputTracks from the common threadLoop() into virtual methods. This allows them to be moved from PlaybackThread to DuplicatingThread, and to be marked private. Also use vector assignment to copy mOutputTracks to outputTracks. Change-Id: Ieb1cf1ad36b8a65143e61e6c92a65fb43427e5e2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d4513b09123deebf8023b73a82d2d46d35806cea |
|
07-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Make applyVolume private to DirectOutputThread Change-Id: I7ca4a59505857cbd106b6f274c66e9580dead271
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1465f0c3df04c3166155a852a6a5c10069c1fd0a |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge the calls to prepareTracks_l Change-Id: I1dd759581333e2908d980180d44db7bf5ed6591d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b81cc8c6f3eec9edb255ea99b6a6f243585b1e38 |
|
01-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
IAudioFlingerClient::ioConfigChanged param2 const The 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged is used as an input. So changed it from void * to const void *. It is then cast to const OutputDescriptor * or const audio_stream_type_t * depending on the event. Change-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f8edf68a1e39da273eafe8c85bdbedc26636c4ec |
|
07-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Rename fields of AudioSessionRef"
|
92b8360fe9c3174dc0edaaab4b746d8a3d3f831f |
|
07-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix indentation for re-organized code"
|
438b036deaf4413503567a75a2861c000d21da5b |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Rename updateWaitTime since a lock is held Change-Id: I9bb978cbd0debf5b21676467060f72eebafea3e6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
952eeb27682a9b2ddfa761f24b6eb5e18fe5d814 |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Fix indentation for re-organized code Change-Id: I63471cebdbd095b7ad4e481611b785f9b02c7941
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
012ca6b4f69fb24385025c0e84b8f816525a3032 |
|
06-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
Rename fields of AudioSessionRef Change-Id: I9f2a66094135c4ac6bec2d3e9db3ac5fbf988ede
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
000f0e39b4d0c88441297a05ab5f8da6832c1640 |
|
02-Mar-2012 |
Glenn Kasten <gkasten@google.com> |
threadLoop merge Change-Id: Id8e6330ac6be76f9c2debba94f856de87e2d98f7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e8286332f3817a8b7cc4cfd8f6450a3913533660 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Shorten thread names"
|
3e07470f3b122097cacfe5b85cdb1359279a2f33 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Prepare for threadLoop merge - active tracks Continued work on making the copies of threadLoop more similar: - Remove alias for mActiveTracks in MixerThread and DuplicatingThread. - Pull in declaration of activeTrack in DirectOutputThread. - Remove redundant parameter of prepareTracks_l(). - Comment prepareTracks_l(). Change-Id: If1087c1902b454acec01ddfdd9f055f0ca7abf04
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
91cda8bdf8358a8b977a44e016b60a70bc1a5ee9 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Pull in declaration of effectChains to inner block"
|
73ca0f5837d5448f7a5eb159a09cd0ebe82b4de9 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Pull in declaration of effectChains to inner block Change-Id: I09eacf72124942abd604132b9f4e774b1236fcf3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c455fe9727d361076b7cead3efdac2d32a1a1d6d |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
mSuspend comments and usage Emphasize that playbackthread::mSuspend is a counter, not a bool Change-Id: I7188e56814e1c54dbc65e560f3627f138257d644
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
688a64030834ea2f52cc9765676ddf6aa34df767 |
|
29-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Mark similar and different sections in threadLoop Most of these comments will be removed after the threadLoop merge. Note: the trivial change in assignments to mixBufferSize, and the comments about "tracks to remove" is to make them all identical. Change-Id: I3b1a33a7f2cd12ad557a1986bb71f6171161974a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
480b46802bef1371d5caa16ad5454fce04769c57 |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Shorten thread names prctl(PR_SET_NAME) limits to 15 characters. Before we had names like "Binder Thread #" and the counter was cut off :-( Also remove redundant "thread" at end of name; it's always a thread. Change-Id: I1f99c2730ba0787ed9b59c15914356cddf698e2f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a3873833d518e032138cf70188b6f33cd7acec3d |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Unlock effect chains in the middle of two if's"
|
3e9c3a1d34960cd258f294d31135ab6bf76179d5 |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Simplify removeNotificationClient"
|
a17c820c556fddf7ddd96b82b3e9874e340ffafd |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioFlinger const methods and parameters"
|
cfbd62616ab2b12f0fee603658f04e5827cc7f8f |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix theoretical race condition in addOutputTrack"
|
fadb2c73fce479205432652530663e1e90fd546c |
|
28-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioBufferProvider comments and cleanup"
|
843a12d146bd64642bf85a4e56c274246e3893a6 |
|
27-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix tracking of hardware state for dump"
|
e628d515888baadba75442128678e747e930ed58 |
|
27-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Make threadLoop() logs identical"
|
d3cee0b1f77baa4fb7a049eb757e9f5006890726 |
|
27-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Move declaration of mixerStatus to inner block"
|
a3b09254d44cd8d66ec947abe547538c4cfeaa89 |
|
20-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify removeNotificationClient No need to check for presence of item before removing (but we do lose the log of the previous value). Change-Id: I2838430824de5f257f2ee15db0c22b1920c67d08
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
02fe1bf923bbe5789202dbd5810e2c04794562e6 |
|
25-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger const methods and parameters Change-Id: I93ec28024005ed23aa141518092a012a4a7c44c5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c0b52836d07f823732f0ff98ca5ca9d7f5730cb8 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Make threadLoop() logs identical Change the wording of the logs in the various copies of threadLoop() to be identical. This will make it easier to merge them soon. Change-Id: Idfa181e437738712c784dc7f746cac79f83d2931
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5d4eeeaf76ebe177b43e87b2a9df5e55e39021f0 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Move declaration of mixerStatus to inner block mixerStatus was being declared (and initialized) too early, which also resulted in a duplicate initialization. Moved the declaration into the block where it is actually used. Change-Id: Ifdcfefe362a5efe3493dd616cdb44645c6f9aed5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
37d825e72a6c606553a745da1212590a425996d3 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Pull out duplicated copies of silent mode check Also fix the error handling for the property_get. This is part of preparation for the threadLoop() merge. Change-Id: I6405190ea18146d1271575e1dfe9f279e8f36b17
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
04743e99e71c0da012508c7119f414027654ee94 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Unlock effect chains in the middle of two if's As part of the upcoming threadLoop() merge, this CL makes it clearer what are the similar and different parts before and after unlocking effect chains. In each threadLoop(), the old code was: if (sleepTime == 0) { // A unlockEffectChains(effectChains); // B } else { unlockEffectChains(effectChains); // C } The new code is: if (sleepTime == 0) { // A } unlockEffectChains(effectChains); if (sleepTime == 0) { // B } else { // C } Also this is slightly slower by one "if", it has the advantage of making it much more obvious about what is done before and after the unlock, and also to see the similarities and differences among the various copies of threadLoop(). Change-Id: I7bf4369d2dcb072573ec43b7e52c637f0097dc00
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5ce96d97feafc6989f6141bb2633eae3d87ddf28 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Pull CPU statistics code out of threadLoop()"
|
b6b740629c9f11535086e744465bada03f26df11 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Fix theoretical race condition in addOutputTrack This is not a real race, because addOutputTrack was only called in two places, and in both places there could be no other threads referencing the DuplicatingThread instance. Those two places are: - the DuplicatingThread constructor, which is of course safe - openDuplicateOutput - this is safe because it's called immediately after the new DuplicatingThread, and there are no sp<> either in the constructor or here which could cause onFirstRef() to do Thread::run(). But for safety in case addOutputTrack is ever called somewhere else, or there are sp<> created earlier, it is safer to take the thread lock. Change-Id: I1502d014fa37ec5dbf4bf40d3e2884af311cd5e9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
83efdd0fc08cd5aedf50b45741a8a87be8dc4b41 |
|
24-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Pull CPU statistics code out of threadLoop() This is to prepare for the threadLoop() merge Change-Id: I118c7d5c6b011b5d5b95ec7d63fb03feb166a9cf
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
01c4ebf6b794493898114a502ed36de13137f7e5 |
|
22-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
AudioBufferProvider comments and cleanup Add comments about which methods implement the AudioBufferProvider interface. Simplified the definition of kInvalidPts. <stdint.h> is very hard to work with, there seems to be no way to use it reliably to get INT64_MAX without having a separate source file, which is ugly because it means kInvalidPts is not a compile-time constant. So I just deleted AudioBufferProvider.cpp and used a hard-coded constant instead. Added a default constructor for Buffer so that the fields aren't random (especially .raw which is used to determine if the buffer is valid). Make the pts for getNextBuffer default to kInvalidPTS so code that doesn't need a pts doesn't have to specify a value. Rename the parameter to AudioMixer::setBufferProvider to make it clearer. Change-Id: I87e7290884d4ed975b019f62d1ab6ae2bc5065a5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8abf44d2f2bcd20a2835570efe89d89c19db426a |
|
02-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Fix tracking of hardware state for dump At end of AudioFlinger::onFirstRef(), the hardware status was being left in wrong state. It should be AUDIO_HW_IDLE but was AUDIO_HW_INIT. mHardwareStatus was being set to AUDIO_HW_OUTPUT_OPEN too early, and so a return would leave it in the wrong state until next hardware operation. Take the hardware lock for dev->get_parameters, and update mHardwareStatus before and after. Keep hardware lock only for the duration of the dev->set_parameters. Rename two constants in enum hardware_call_state to have the prefix AUDIO_HW so they follow the naming conventions. Add comments. Change-Id: I6c7450b11f9b13adaeef9cec874333e478a58fc0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5cf034d92d901169ca6e36c90475f40715827fcd |
|
21-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Remove TrackBase::mFlags The bit-field TrackBase::mFlags was supposed to have track-specific flags in the upper 16 bits, and system flags in the lower 16 bits. The upper 16 bits of mFlags were initialized in the TrackBase constructor from the flags parameter of IAudioFlinger::createTrack() and IAudioFlinger::openRecord(), and the lower 16 bits were cleared. However, the upper 16 bits of mFlags were never acccessed again. So really there are no track-specific flags. I left the flags in the parameter list of createTrack() and openRecord() but made a note that these should be removed eventually as they are dead. This leaves only the one system flag "step server failed". I replaced the bit-field mFlags by bool mStepServerFailed, which is simpler and slightly faster. Change-Id: I6650f5487be72791b4a67d73adcd10ffa04e2aa5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d6fd85a157ce2054b2304e6d171fa87ae09c363d |
|
22-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Avoid wp<>::unsafe_get() with a few exceptions"
|
9eaa55756c5b245970447019250ce852f5189525 |
|
20-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Avoid wp<>::unsafe_get() with a few exceptions Avoid using wp<>::unsafe_get() except in a log, and other specific cases when it's known to be safe. Use more specific subclass types for parameters to avoid down-casts. When a constructor or method parameter is "this" of an object that is currently being constructed, it's better to use a raw pointer rather than either sp<> or wp<>. Using the raw pointer is safe, provided either: - it is "this" of an object being constructed (which has sp<> refcount of 0), - or the caller already holds an sp<> The raw pointer is simpler and faster, and it avoids the problem of the sp<> reference count being incremented and then decremented to zero on scope exit, which would cause the object's destructor to run while the object is still being constructed. Also removed some dead code per a review comment. Change-Id: I7375f64da3aec11b928c33cb01faff186252ef5e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f063b49e95c28d63a58215ebda892a5fee4204cc |
|
18-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Fix build warning warning: pointer of type 'void *' used in arithmetic warning: enumeral and non-enumeral type in conditional expression Change-Id: I7b8d626a636145ef648e3b5d0e77068216dd012e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3b81acab52b7140c1b8b20be2d67be3e221637e7 |
|
28-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove bit fields to improve performance uint16_t enabled is (mostly) changed to bool in a separate CL Change-Id: Ied9f8c034b2479cee9a8778cee7b8ff92ae75b7b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1b094ee8f7fe7eca65bf3d2f983ba95eef6db93d |
|
17-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Simplify code"
|
a111792f1314479c649d1d44c30c2caf70c00c2a |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify code Use DefaultKeyedVector::valueFor to avoid extra test Make local variables as local as possible No double parentheses No typedef for single use No parentheses around indirect function call No AudioFlinger:: prefix when not needed Remove unnecessary casts Remove block with only one line Saves 128 bytes Change-Id: I3a87430eeb01b81e7b81a1c38f6fdd3274ec48f3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fe5b3ba4b332d5fc9aa4f453434329b9f38768c2 |
|
13-Feb-2012 |
John Grossman <johngro@google.com> |
Put a bandaid on a segfault in timed audio track handling. Add a bandaid to prevent a segfault which can occur while handling timed audio buffers. There is a deeper problem which should eventually be addressed, but for now this fix should prevent any crashing. The deeper problem is as follows. When the AudioFlinger mixer gets data to mix from an AudioTrack, it ends up getting a structure filled out which points into an IMemory region owned by the AudioTrack. Unfortunately, this structure is not holding a refcount on the IMemory which it points into. If the IMemory refcount hits 0 and the chunk of RAM is retuned to the binder heap it came from, there can still be a Buffer object being held by the AudioFlinger mixer which points into the region of memory which was retuned to the binfer heap. If AF reads from this buffer, it could read corrupt data (if the region of memory gets handed back out to a writer), or it could segfault (if the heap has been freed and the pages unmapped). Similar problems could happen if AF attempts to write to the buffer, heap corruption in one case, segfaulting in the other. In the past, this has not been an issue for AF, because tracks allocate a single IMemory (which serves as a ring buffer) and the IMemory lives for as long as the track lives. As an artifact of the way the code came out, the mixer cannot be holding a Buffer structure pointing into the IMemory which used to be owned by a track if the track no longer exists. Tracks cannot come into or out of existence during a mix operation, which is the only thing which makes this safe. TimedTracks work differently, however. Timed tracks each allocate a small binder heap, and then hand out IMemory instances broken out of this heap. The heap lives as long as the track, so the worst which could happen here is that a TimedTrack's IMemory gets returned to the heap while there is still a buffer structure in flight pointing into the memory region, then the region gets handed out again and overwritten by new data causing the mixer to mix the wrong audio. The timing to cause this to happen is very difficult to encounter, and you to generate the timing conditions required, you need to be in a pretty bad failure state where audio is already breaking up and skipping, so its unlikely that anyone would notice (which is why I'm band-aiding the segfault and letting the deeper issue slide for now). In general, however, it might be a good idea to revisit this buffering design. On principal, if someone is going to hold pointers into a refcounted object, they should be holding a ref on the object at the same time. Failure to do this will usually lead to a situation where there are corruption or segfault issues, or to a system where the refcounted object's lifetime must be implicitly managed very carefully in ways which are usually non-obvious and are easy to break by new engineers on a project. Change-Id: Ib391075395ed0ef46a03c37aa38a82d09e88abeb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ef7740be67a4d7b6b033ebed59c3d4a9c74a2c18 |
|
09-Feb-2012 |
John Grossman <johngro@google.com> |
Fix a segfault in AudioFlinger. Check the string returned by a HAL's implementation of get_parameters for NULL before attempting to make use of it. That way, we won't bring down the mediaserver because of a poorly written HAL. Change-Id: Ic99d7b004520d7d6347842a681c0595e889b68ea Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4ff14bae91075eb274eb1c2975982358946e7e63 |
|
09-Feb-2012 |
John Grossman <johngro@google.com> |
Upintegrate Audio Flinger changes from ICS_AAH Bring in changes to audio flinger made to support timed audio tracks and HW master volume control. Change-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae Signed-off-by: John Grossman <johngro@google.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6dad4378f2a78d967defc8912ecf47f6ed117584 |
|
14-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix races related to volume and mute"
|
d9b9b8d09e7471b0ffa21cfa9f944ef4ad300a71 |
|
14-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Update comments"
|
99e53b86eebb605b70dd7591b89bf61a9414ed0e |
|
19-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Update comments We no longer put the filename at start of file. Change-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8d6a2449a91f5116d7243ab039393195ebd663fe |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Use size_t and ssize_t with Vector Use size_t with size() and ssize_t with indexOfKey(). Exception: use ssize_t for backwards loops, and indices that are overloaded as a marker or error code. Change-Id: Ibf2a360af4539b72b09c818dda22ea2a0de92431
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6dbc1359f778575d09d6da722b060a6d72c2e7c5 |
|
02-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
AudioRecord and AudioTrack client tid Inform AudioFlinger of the tid of the callback thread. Change-Id: I670df92dd06749b057238b48ed1094b13aab720b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
44deb053252a3bd2f57a007ab9560f4924f62394 |
|
06-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Factor out and speed up permission-checking code Use the caching permission check for dump to save IPC. Cache getpid() to save kernel call for other permission checks. The C runtime library getpid() can't cache due to a fork race condition, but we know that mediaserver doesn't fork. Don't construct String16 on the stack. Change-Id: I6be6161dae5155d39ba6ed6228e7683e67be34ed
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2b213bc220768d2b984239511cd4554a96bc0079 |
|
02-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
mAudioHwDevs and related cleanup Inline AudioFlinger::initCheck and remove unnecessary lock. Remove redundant check of mAudioHwDevs.size(). No need to lock mHardwareLock for each device separately during initialization. Use size_t not int to loop through Vector, since size() returns size_t. Add missing hardware lock for get_mic_mute() and get_input_buffer_size(). Add comments. Change-Id: Iafae78ef78bbf65f703d99fcc27c2f4ff221aedc
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b6333aa8317ce5162ab006c4baed6b0890936dc7 |
|
11-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Simplify ThreadBase::exit() aka requestExitAndWait"
|
858df80948ee64f478782a6a6c06533ba1651ef1 |
|
11-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Camel case readability & private disconnect(bool)"
|
c8ad36bbb30e99e49026cba78e5e0f83db5cb0f6 |
|
11-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use mul from audioutils"
|
b28686f95daee16edeb5f39af2cd5274ac3dc99f |
|
06-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify ThreadBase::exit() aka requestExitAndWait We can remove mExiting and use Thread::exitPending() instead. The local sp<> on "this" in exit() is not needed, since the caller must also hold an sp<> in order to be calling us. (Unless it was using a raw pointer, but that would be dangerous for other reasons.) Add comment explaining the mLock in exit(). Change-Id: I319e5107533a1a7cdbd13c292685f3e2be60f6c4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0ba18ec1b343a8de70924f87630dd1f329b00fe6 |
|
10-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "No newline or space at end of ALOG format string"
|
8b5980798ca06e57b1284e6e23fa220e1207bf41 |
|
10-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix typos in ALOG for pid vs tid"
|
58123c3a8b5f34f9d1f70264a3c568ed90288501 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Camel case readability & private disconnect(bool) Change-Id: If66516ed2703e048c5e6ccc6cd431446a024f4a1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5b9ff43995f6a6b819d9ad37dd8cdc5ad4a088d7 |
|
09-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Use mul from audioutils I verified that the disassembled output is identical. Change-Id: I34a76f0842ebc4aef2c923e079e38d0bc1f98b5c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
23d82a9bc9a43b49ba684ba40875b91db310d3b9 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Fix typos in ALOG for pid vs tid Change-Id: I6dc70f137d0ff8a86427ab8882a81886e1de0782
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
90bebef5669a9385c706b042d146a31dca2e5d9b |
|
28-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
No newline or space at end of ALOG format string Change-Id: I0bef580cbc818cb7c87aea23919d26f1446cec32
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6637baae4244aec731c4014da72418d330636ae1 |
|
09-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Fix races related to volume and mute Fix race conditions when setting master volume, master mute, stream volume, stream mute for a playback thread, and when reading stream volume of a playback thread. Lock order is AudioFlinger, then thread. Rename streamVolumeInternal to streamVolume_l, comment, and use it to implement streamVolume(). Code size reduction: - Remove dead code: AudioFlinger::PlaybackThread::masterVolume, masterMute, streamMute. - Change return type of non-binder methods that always succeed from status_t to void. - Remove virtual from volume and mute methods that don't need it. This change saves 228 bytes but decreases performance of binder operations due to the added locks. Change-Id: Iac75abc1f54784873a667d1981b2e08f8f31e5c9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
02bbd20cece1785c223ac4ca2ddc635931a80673 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Rename type() to streamType() This avoids possible confusion with thread's type(). Also remove redundant cast "(audio_stream_type_t)". Change-Id: I320b9177b6c267a102d215f002228bcf988c437a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
98ec94c5854daccc3474758524e7f4adfe535ce0 |
|
25-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Combine duplicate code & document wp<> in mClients Change-Id: Iea8cfe8e57563337fb2484a1246ef79d6ad3db18
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
72ef00de10fa95bfcb948ed88ab9b7a177ed0b48 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_io_handle_t consistently instead of int Other: - add a comment to nextUniqueId - made ThreadBase::mId const, since it is only assigned in constructor. Change-Id: I4e8b7bec4e45badcde6274d574b8a9aabd046837
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
dbfafaffe2e97eaf8d74ec6b6c468418a1ad2443 |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify destructors Remove explicit clear() when the order doesn't matter. Change-Id: I5931bc7ef5f681c7ce329aa9ec0a6e46d34a56c5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5e92a7861196ddae14638d4b7a63fc4892b7ef59 |
|
30-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Effect UUID inputs passed by pointer are const Change-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0a20fa9c41c96e31fa20e071074a4b6e7f6c41c3 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use pid_t not int"
|
b61ec89bb0c701b3bd06eb658f854230681f8b39 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Don't double destruct audio_track_cblk_t"
|
63d2daed17ab749baa80bc808fb5083b688b771b |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioFlinger methods const and inline"
|
e616d4e6de6d53ddebbc3d7fb381af94589c2232 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Improve performance for sp<> on stack"
|
1579d7948117e3e6541b0cfda02cc5234a3280ea |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use 0 not NULL for sp<> and wp<>"
|
e98bbd36d67243fe987b09904956550a68af1cc7 |
|
08-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Declare more IAudioFlinger methods const"
|
1a0ae5be3d1273cba12584b33830d859510fbf82 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Don't double destruct audio_track_cblk_t Fortunately audio_track_cblk_t doesn't have a destructor, but for clarity remove the double destruction. Also add warning not to add any virtuals to audio_track_cblk_t. Change-Id: I70ebe1a70460c7002145b2cdf10f9f137396e6f3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bb001926447d0b7dc71ca8bb3c9856f3136d8f4c |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Use pid_t not int Change-Id: Iad1c2fd4152e94080ad8c65c13ddf4519fc2ed27
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d5e54f7a36daedc3b2a642d1499c262da04e6280 |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead code mFormat is unused in resampler mClientTid is unused local variable pid is unused in dump Change-Id: Ib156e38029366620bfeff2a13e73471867155a5b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f587ba5b991c7cd91e4df093d0d796bd419e5d67 |
|
27-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Declare more IAudioFlinger methods const This is just documentation, as C++ method const-ness doesn't mean anything for a binder API. Instead, here const means "no side effects". Change-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c59c004a3a6042c0990d71179f88eee2ce781e3c |
|
02-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger methods const and inline This saves 1063 bytes and probably improves performance. Change-Id: I11cf0dfd925fbaec75e3d1b806852a538eae5518
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7378ca506e4e20c2b2d4e94a131cf1b95831adb5 |
|
20-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use 0 not NULL for sp<> and wp<> Change-Id: Id1f0c89acefaceed6cb9ca7c165fce895e46d85b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
787bae0578fbaab6219ebf23494866b224d01438 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_in_acoustics_t consistently"
|
a0d68338a88c2ddb4502f95017b546d603ef1ec7 |
|
28-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use NULL not 0 for raw pointers Use if (p != NULL) instead of if (ptr) Change-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
87f155d6655b2d3b27e69281a29e85c6407e4d26 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "For performance, return large objects by reference"
|
f81e97e4ec8b01965a5b36987f886cf5001f71ff |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "No need to check a wp<> for 0 before promote()"
|
84afa3b51ac48f84ed62489529ce78cba7fca00e |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Constructor initialization and const fields In constructors, initialize member fields in the initialization list rather than constructor body where possible. This allows more fields to be const, provided they are never modified. Also initialize POD fields in constructor, unless it's obvious they don't need to be initialized. In that case, put a comment instead. Remove explicit clear() in destructors on fields that are now const. Give AudioSessionRef a default constructor, so it's immutable fields can be marked const. Add comment about ~TrackBase() trick. Initialize fields in declaration order to make it easier to confirm that all fields are set. Move initialization of mHardwareStatus from onFirstRef() to constructor. Use NULL not 0 to initialize raw pointers in initialization list. Rename field mClient to mAudioFlingerClient, and getter from client() to audioFlingerClient(). Change-Id: Ib36cf6ed32f3cd19003f40a5d84046eb4c122052
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5c0ad10b14ec2287f90f95912d98e66eef006e2a |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Cleanup thread types"
|
62da7fbd60bee2dd57f503126266e9f04311d400 |
|
03-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Make AudioTrack control block volume field private"
|
d45ee9d9d61af0791c7c3c51f8d4fe6794ef02a5 |
|
02-Feb-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix const sp<>& in parameter list and return value"
|
d05397144be774f2f3623c754e865f51753e4e31 |
|
30-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
For performance, return large objects by reference Change-Id: Ibf737018ef1d3c7d717584615dcb2d4ecdb50c99
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
090f01963e215f895020a31e22368cd44e086ce3 |
|
30-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Improve performance for sp<> on stack Combine default constructor for sp<> immediately followed by assignment, as the reference-counting is relatively slow. Also return sp<> directly rather than via local variable, for the same reason. Change-Id: If55931f1e407994f6591ddde41b53db72fb4fc40
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
435dbe6c3ecd04bcb4bd80584064e287ebccd720 |
|
30-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Fix const sp<>& in parameter list and return value EffectModule::addHandle and Client::heap() were declared incorrectly. As a parameter, an sp<> should be & for efficiency, and for input parameters it should also be const to protect the caller's value. But as a return value, an sp<> should have neither const or &. The "e" in "return e;" might be located on the stack, and if there is "&" then the caller would see the address of a variable which no longer exists. Also, an & would make it hard to do "return 0;". A "const" without & is meaningless in the return type. (In this particular case, the "e" is a member field, so it was safe.) Change-Id: I3df5f294214eb15a9d4d596c6d5ef29de97b5c27
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e9dd0176933d6233916c84e18f3e8c0d644ca05d |
|
28-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Unconditional delete Don't check that pointer is non-NULL before delete. Don't leave deleted member fields non-NULL, except in a destructor, since it could be misleading in a dump or debugger. (mRsmpOutBuffer) Change-Id: Ic0492a6b752f74a67f4c96dfb89ca2de4e69eecf
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
77c1119ea0b5cb32287088ceeeb7e3b6bd14a85d |
|
25-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
No need to check a wp<> for 0 before promote() Also remove unnecessary wp<> local variable. Change-Id: I620e67b5d559d28616f8e00609a525cfe19c5ddc
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
de9719b3ec71472e6bf75117152176af51d1a515 |
|
27-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_in_acoustics_t consistently Change-Id: I0a9dd668fb2e57b1c3ece3190588194974b99062
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a3a2cd4072aaa2d93c91251a786eb7323f8d2c27 |
|
27-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioStreamIn and AudioStreamOut"
|
6f5980b75df837231365d238c1b0d6f386363fbb |
|
27-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Declare methods in binder opcode order"
|
114c458f2b80a252ec627add1d5fda2093c79068 |
|
27-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use enum track_state consistently"
|
aed850d0d3b3c8cf3feaf1438076f33db2a60946 |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
AudioStreamIn and AudioStreamOut These are immutable, so make the fields const. getOutput() and getInput() methods are now const. Change-Id: I128246ebd56ea50b3e542be43f2aa1bcb55f1373
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
23bb8becff20449a9b1647d5a1a99b14c83f0cce |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Cleanup thread types Use type_t instead of int for thread types. Initialize ThreadBase::mType in constructor and make it const. Change-Id: I43d141388b9639e4783c30b97dbda5688bf7555f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
90716c5728b37637b2d0a730a721bfc9fad299e0 |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Declare methods in binder opcode order This makes it easier to compare interface and implementation. Change-Id: Ie060e43dec348902abcf40f5a610cec639d6d0d3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
29c23c3aee5ae799b3480dc6876a46c46b019710 |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use enum mixer_state consistently Change-Id: I5b71ed20f939dfc4b98143334b7aa064d282f584
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b853e986caf43408ad95b9014f194aadff385e3c |
|
26-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use enum track_state consistently Change-Id: Ie5ebb7befa092e1de1e4df9c6e2d51e6bcfd176a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9365ea9bf2e439b3e71abbabe22ce7382ebc4b3a |
|
25-Jan-2012 |
Eric Laurent <elaurent@google.com> |
am 535b0264: am 7eeaf3f0: Merge "AudioFlinger: refine mixer sleep time logic" into ics-mr1 * commit '535b0264a4cfa790e549bd9cd09980788f1375f4': AudioFlinger: refine mixer sleep time logic
|
84e19873fde204d73628ba1b5ca9e3f5778574fa |
|
24-Jan-2012 |
Eric Laurent <elaurent@google.com> |
am 7eeaf3f0: Merge "AudioFlinger: refine mixer sleep time logic" into ics-mr1 * commit '7eeaf3f07aa6fb10639d9f96c1367eb98c3e8839': AudioFlinger: refine mixer sleep time logic
|
7c5aea0a8d9b422999483f96a2566f77ff11abf2 |
|
24-Jan-2012 |
Eric Laurent <elaurent@google.com> |
am 41773d46: Merge "DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""" into ics-mr1 * commit '41773d46556aa47d4322ff89fdaf7d1345c2d1f2': DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)""
|
21e4b6ed00e814bffc70895847a4944d7a190020 |
|
24-Jan-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: refine mixer sleep time logic When an AudioTrack is in underrun state, the AudioFlinger mixer will sleep for a short period of time to give the app a chance to fill the AudioTrack buffer. If the AudioTrack is still not ready during next mixing round, the mixer will proceed with other tracks. If an application keeps a steady underrun condition, the AudioFlinger mixer will alternate between ready and not ready states. In the longer term this will cause the audio HAL to underrun. There is a mechanism to reduce the sleep period if the mixer is not ready several times in a row but this mechanism is defeated by the alternating ready/not ready conditions. The fix consists in only increasing sleep time if the mixer is ready for at least two consecutive times. Issue 5904527. Change-Id: Id0139bca9be8c4e425ec6d428515c4d8f718e8c9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac |
|
24-Jan-2012 |
Eric Laurent <elaurent@google.com> |
DO NOT MERGE Revert "Revert "AudioFlinger: mix track only when really ready (2)"" This reverts commit b918035d34422a2041b6ec8c09c566bb93345b40. Change-Id: I093bcfa56ad54a080b930208b6b79169d33581fb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
15dfda272eec983508b89fb8bc9ca6f2bb825496 |
|
24-Jan-2012 |
Justin Ho <justinho@google.com> |
am fee5a860: Merge "DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)"" into ics-mr1 * commit 'fee5a860a8355cda071ff23644e943414ba7f65d': DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)"
|
7baf7894bc2f1a62440f381eeb50143f210a5d61 |
|
23-Jan-2012 |
Justin Ho <justinho@google.com> |
DO NOT MERGE Revert "AudioFlinger: mix track only when really ready (2)" This reverts commit 71c4496a9757438afd30b4404824f296f6158a49. Change-Id: Iff10c49ea728bb10023ddeb50a3b708db770fff2
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
335787fe43596f38ea2fa50b24c54d0823a3fb1d |
|
21-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove AudioFlinger dependencies on client Change-Id: Ibb591e41a3ca5d7015e2b66b98b8fef5f415fb37
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
83d86538c4c479a9225c75ab27938e8f05abb9c8 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Make AudioTrack control block volume field private This is part of the process of abstracting the control block to make it easier to maintain. Change-Id: Idb8f461e68dab3bcf268159cc0781651c6fb7094
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
58f30210ea540b6ce5aa6a46330cd3499483cb97 |
|
12-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_format_t consistently, continued Was int or uint32_t. When AudioFlinger::format can't determine the correct format, return INVALID rather than DEFAULT. Init mFormat to INVALID rather than DEFAULT in the constructor. Subclass constructors will set mFormat to the correct value. Change-Id: I9b62640aa107d24d2d27925f5563d0d7407d1b73
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d967f0a099db2b71597a3127134afd4a46287a4a |
|
20-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Remove redundant get()"
|
7fc9a6fdf146ded90b51c52f4a05d797294dcb85 |
|
10-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove redundant get() get() is almost always unnecessary, except in a LOG. Also no need to check for != 0 before calling get(). Change-Id: Ib06e7a503f86cf102f09acc1ffb2ad085025516d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d746737921074e2a6c39c52b06022c5166689df5 |
|
20-Jan-2012 |
Jean-Baptiste Queru <jbq@google.com> |
am 6df477be: Merge "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)" * commit '6df477be186233e36fc370c4d2db6c1ed928a740': Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)
|
daef36f5d4934bd055c694a8d54b86e2b50a6159 |
|
20-Jan-2012 |
Jean-Baptiste Queru <jbq@google.com> |
am a826f9e2: Merge "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)" * commit 'a826f9e2c4f6329d8d48c927f6e942e78ffaf92f': Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)
|
3734cbca25c6d902677cfb5e59dff7a1cb17a45d |
|
20-Jan-2012 |
Jean-Baptiste Queru <jbq@google.com> |
am 4f367f33: Merge "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)" * commit '4f367f3387887c538c81c34cc8becaea6fa5e430': Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)
|
e744a90eb52bf9547848c08380cfb7ba7e63ffbc |
|
20-Jan-2012 |
Jean-Baptiste Queru <jbq@google.com> |
am ba7f0d2a: Merge "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)" * commit 'ba7f0d2a03643ce429421b81febf18fd50473070': Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)
|
ca05a87f4c69670a06bdee4b4f98bcdcd838beda |
|
20-Jan-2012 |
Jean-Baptiste Queru <jbq@google.com> |
Merge ee4618bc Change-Id: Ie1dc6ad38e7c30636d80f6caef11cf6673144940
|
9a8ded7348c5b2302dd27b285b395416bc842c49 |
|
06-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) Change-Id: I1de629b4632a4b3187ca1a28d6416daccd35f924
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aa70226152d2084f85a96b52359dbc8476a86a45 |
|
06-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) Change-Id: I8fbdfa7a7581f481968dbb65aa40f7042936d7cb
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
53feeb42c721e8fc9285e35e679906a951f3277c |
|
04-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) Change-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
52546c0ef96aa3e7e21482e0f9b6e982557c8da9 |
|
20-Dec-2011 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) Change-Id: I44f267700356967dc51e8f85ebf457dc85cfb229
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3812256de32e73e38ba16e50ac0451c10223d4eb |
|
20-Oct-2011 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF) Change-Id: I5321ebd12e9c6248a108529e82c4e1af2a4405e3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aeeb7e219e34d2d657d829913659a4e10e976375 |
|
19-Jan-2012 |
Eric Laurent <elaurent@google.com> |
resolved conflicts for merge of 05683c85 to master Change-Id: I7846b7da8c5813b7a9b1f3f71aede0229689ff0d
|
f1d4592d4c3c99ebab55559e164ff102e825283e |
|
14-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
For booleans, use ! instead of == false Change-Id: Ibc115936d2d0b0b7744ebe9b52839ea5b42c4edd
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2774144fa8283f1a7b43e17a53c97dec0c366dd3 |
|
18-Jan-2012 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: mix track only when really ready (2) This problem due to the way audio buffers are mixed when low power mode is active was addressed by commits 19ddf0eb and 8a04fe03 but only partially. As a matter of fact, when more than one audio track is playing, the problem is still present. This is most noticeable when playing music with screen off and a notification or navigation instruction is played: in this case, the music or notification is likely to skip. The fix consists in declaring the mixer ready if all active tracks are ready. Previous behavior was to declare ready if at least one track was ready. To avoid that one application failing to fill the track buffer blocks other tracks indefinitely, this condition is respected only if the mixer was ready in the previous round. Issue 5799167. Change-Id: Iabd4ca08d3d45f563d9824c8a03c2c68a43ae179
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b1cf75c4935001f61057989ee3cf27bbf09ecd9c |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Track volume cleanup Always read and write track volumes atomically. In most places this was already being done, but there were a couple places where the left and right channels were read independently. Changed constant MAX_GAIN_INT to be a uint32_t instead of a float. It is always used as a uint32_t in comparisons and assignments. Use MAX_GAIN_INT in more places. Now that volume is always accessed atomically, removed the union and alias for uint16_t volume[2], and kept only volumeLR. Removed volatile as it's meaningless. In AudioFlinger, clamp the track volumes read from shared memory before applying master and stream volume. Change-Id: If65e2b27e5bc3db5bf75540479843041b58433f0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ad0f6cc5e115ca167ff122c83451b46d85c590ac |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Remove dead setVolume() and mVolume[2] Change-Id: I94b835434093e920432614eb5007101e87758f32
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0696400a6bb9abbed62b3b9c6aa105495dc600a2 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_mode_t consistently"
|
263709e7be37c7040aaef385bc5c9389a9b5f514 |
|
06-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Check stream type in AudioFlinger::createTrack A bad parameter to AudioFlinger::createTrack could cause mediaserver to crash. Other AudioFlinger stream type cleanup: - Simplify range check for audio_stream_type_t - Add comment about mStreamTypes array initialization. Change-Id: Ia33aa1cce0fdd694b08d9288816ffc097a9543d0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3944e0326a286bcb931551e61e79c033b10d09d4 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix locking for mMasterVolume and mMute"
|
613882293184e575a44bff681a3decaefe889e69 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use size_t for frame size"
|
0107954f72153db747a3727dc1157e9236dfed90 |
|
17-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use audio_stream_type_t consistently"
|
9806710f5d6722cfc5783c7eca3512451a0f2035 |
|
13-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Fix locking for mMasterVolume and mMute mMasterVolume and mMute are both protected by mutex in AudioFlinger class, but there were two places where they were accessed without a mutex. Also make AudioFlinger::mMasterMute private not protected. Change-Id: Ia3897daeb5c50313df5bcc071824357526237f3e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
05632a5fa4b88ca474294887fc92a9fcdf0e2352 |
|
03-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
AudioTrack and AudioFlinger send level cleanup Add an API to control block for getting/setting send level. This allow us to make the mSendLevel field private. Document the lack of barriers. Use 0.0f to initialize floating-point values (for doc only). Change-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b9980659501d0428d65d8292f3c32da69d37fbd2 |
|
11-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use size_t for frame size except in the control block, where we don't have room. In AudioFlinger::ThreadBase::TrackBase::getBuffer, read the frame size from control block only once. Change-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fff6d715a8db0daf08a50634f242c40268de3d49 |
|
13-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_stream_type_t consistently At native level it was a mixture of audio_stream_type_t, int, uint32_t, and uint8_t. Java is still int. Also fixed a couple of hard-coded -1 instead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0 instead of AUDIO_STREAM_VOICE_CALL. Change-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f78aee70d15daf4690de7e7b4983ee68b0d1381d |
|
04-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use audio_mode_t consistently It was int or uint32_t. Also make getMode() const. Change-Id: Ibe45aadbf413b9158e4dd17f2b3bcc6355288d37
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e3a067f8bc98134941ee1a4da8c2a92a15aaa9cc |
|
11-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Simplify range check for audio_mode_t"
|
c40256146bee58bff09e1c16ef99ea06d31f89f9 |
|
11-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use correct type for hardware call state"
|
2ea3410d0d3d592ce30c3ba0ce3e0e63b1244057 |
|
11-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use consistent style of & reference for AutoMutex"
|
9770988e61961d34033fd2c12f0de85a267df68f |
|
11-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "AudioFlinger new can't fail"
|
930f4caa1e311ef7ff538c421a324396157eb24f |
|
07-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Simplify range check for audio_mode_t AudioSystem::setMode previously allowed negative modes, but these were then rejected by AudioFlinger. Now negative modes (including AUDIO_MODE_INVALID and AUDIO_MODE_CURRENT) are explicitly disallowed. Change-Id: I0bac8fea737c8eb1f5b6afbb893e48739f88d745
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2 |
|
09-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename LOG_ASSERT to ALOG_ASSERT DO NOT MERGE See https://android-git.corp.google.com/g/157519 Bug: 5449033 Change-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
25b248eb52a0a16adaef6b79c9d92cb88b9a2bc2 |
|
04-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use cached reference to media.player service This save unnecessary binder calls Change-Id: I93a60efc54d9c8fb8fab706cd4477bbfd00ffec8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
febdbfec3b1ed0e20aa4f10bfdd82702d3e41f4b |
|
09-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "suspended() and isSuspended() are const"
|
29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47 |
|
06-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/#/c/157220 Bug: 5449033 Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
4a6f02833d8421b7d9b20f89729d8bb03b8b8102 |
|
07-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
AudioFlinger new can't fail Change-Id: I7dae05a5ea1c962a9975386eab1fedbbe106ffba
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a7d8d6fc5e102a08b262a1b78aa1abeeb097d9e4 |
|
06-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use consistent style of & reference for AutoMutex AutoMutex, which is a typedef for Mutex::Autolock, is overloaded for either a reference (&) or pointer (*) parameter, but we prefer to use the reference form when the mutex is known at compile time. Change-Id: I3515e6d6ab7959b2356a27fa3b04fd49e42cb31e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a4454b4765c5905f14186893b0688be375642283 |
|
04-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Use correct type for hardware call state Change-Id: Ic6d98b129e3ec653df1d8f7e829adf8dccb4f378
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5ff1dd576bb93c45b44088a51544a18fc43ebf58 |
|
06-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/157065 Bug: 5449033 Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8a08dcc0a5de19a904e77d5f31bed3dff9a59890 |
|
05-Jan-2012 |
Steve Block <steveblock@google.com> |
Merge "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE"
|
a3a854868a80fd9b9b8720e06a172754943f9417 |
|
04-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
suspended() and isSuspended() are const Change-Id: I04b95970b5a645b64e7e64fffd46d868354dda66
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
88592eccaf6afcddd5f985955be92fe25205c680 |
|
05-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Remove the notion of "active track" from mixer"
|
a2a0a5d7d56baa831870f4bf2a0d942a477d92ef |
|
05-Jan-2012 |
Glenn Kasten <gkasten@google.com> |
Merge "Use the standard CC_LIKELY and CC_UNLIKELY macros"
|
f6b1678f8f508b447155a81b44e214475ab634a8 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Use the standard CC_LIKELY and CC_UNLIKELY macros Several source files privately defined macros LIKELY and UNLIKELY in terms of __builtin_expect. But <cutils/compiler.h> already has CC_LIKELY and CC_UNLIKELY which are intended for this purpose. So rename the private uses to use the standard names. In addition, AudioFlinger was relying on the macro expanding to extra ( ). Change-Id: I2494e087a0c0cac0ac998335f5e9c8ad02955873
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7ab41c9f773ba599646f1b0d00955c1be80f92fd |
|
05-Jan-2012 |
Eric Laurent <elaurent@google.com> |
resolved conflicts for merge of 1a4b9939 to master Change-Id: I0c910d391a38a916d8431f7d1f5b82e39e1a66c2
|
df64d15042bbd5e0e4933ac49bf3c177dd94752c |
|
04-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/156801 Bug: 5449033 Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b8a805261bf0282e992d3608035e47d05a898710 |
|
20-Dec-2011 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/156016 Bug: 5449033 Change-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
071ccd5a9702500f3f7d62ef881300914926184d |
|
23-Dec-2011 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix clicks on 48kHz audio. The calculation done in prepareTracks_l() for the minimum amount off frames needed to mix one output buffer had 2 issues: - the additional sample needed for interpolation was not included - the fact that the resampler does not acknowledge the frames consumed immediately after each mixing round but only once all frames requested have been used was not taken into account. Thus the number of frames available in track buffer could be considered sufficient although it was not and the resampler would abort producing a short silence perceived as a click. Issue 5727099. Change-Id: I7419847a7474c7d9f9170bedd0a636132262142c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9c56d4ae6212c21ce5fd71ed534eb195983a07c1 |
|
20-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Remove the notion of "active track" from mixer This is a first step towards making the mixer more object-oriented. Change-Id: Ifd445d0e471023a7f5c82e934736ffc95ba1b05b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bbaf8673f1d1dd79d1b7f474ca7111da58e84aff |
|
20-Dec-2011 |
Eric Laurent <elaurent@google.com> |
Merge "audio effects: rename configure command"
|
3d5188bd6abe55898f10a0edf3c05aff8aa2ef67 |
|
17-Dec-2011 |
Eric Laurent <elaurent@google.com> |
audio effects: rename configure command Renamed audio effect library interface command for audio format configuration from EFFECT_CMD_CONFIGURE to EFFECT_CMD_SET_CONFIG. 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 EFFECT_CMD_CONFIGURE_REVERSE to EFFECT_CMD_SET_CONFIG_REVERSE. Implemented EFFECT_CMD_GET_CONFIG in exisitng effect libraries. Change-Id: Ia7b1c620f13797fe5aceb3b0b4acbacce09fb067
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
d1e672acd8fa1af899f85ee2321327237028adf8 |
|
17-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Extract out audio DSP code to utility library"
|
3b21c50ef95fe4e7ac3426ca14b365749e66ff08 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Extract out audio DSP code to utility library Change-Id: Ib8ce72028a7ea30e82baa518e381370e820ebbd0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b87c068727a15a3d3f0bfdcb758c76a097f5e869 |
|
16-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Simplify enable/disable mixing"
|
079123ee3d2e20bbc17a7ddbd96ca46bed27898f |
|
16-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Improve resistance to leaks for ConfigEvent"
|
26fa039c3752eaaf74d1be53d9795f48e9f43de3 |
|
16-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Use NULL not 0 for pointers"
|
1c48c3c61970527b97892ab6a2daae8eaac26964 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Simplify enable/disable mixing The MIXING enum isn't needed, and now returns void instead of status_t. Change-Id: Ibe4ec24081d75ad4ab78b9c7191fc9077959c4e9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f3990f2cc8fd824ae52a880a7b22248e1bdfb192 |
|
13-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Improve resistance to leaks for ConfigEvent A Vector of pointers is risky, as there is no ownership (and the ThreadBase destructor was not deleting them, so if there were any left over at end it would leak). Replaced by a Vector of values. Change-Id: Iddde72dc30134adfcf724dec26cbe0a742509b8c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e0feee3da22beeffbd9357540e265f13b2119cbb |
|
13-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Use NULL not 0 for pointers Change-Id: Iab3f9abbdab617dc5a599e657ec46a0b0a002eef
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
42968939dfce0954d6540011199045ec4ed7de80 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Fix indentation and whitespace"
|
a06a9a50b37d60e9c43c9de9f8ea3a8649cd5691 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Improve AudioFlinger error logging"
|
d879601ace079e3c0aed79cf3fa5fb4db6ad4a9f |
|
28-Oct-2011 |
Glenn Kasten <gkasten@google.com> |
Improve AudioFlinger error logging Change-Id: I8ce9aff4038cd7fa0067600faa8080b137db1939
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2eda60a8485cfe70a60e72156beffdc470ecb093 |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Audio C++ comments"
|
c5ac4cb3a5124860ccfc7e4ff66251c55a5595ca |
|
12-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Fix indentation and whitespace Use git diff -w to verify. Change-Id: Ib65be0a1ecf65d6cad516110604e3855bf68a638
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c23bd9b5b9e4be9c395789810fdd8522296fc50c |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Use const char correctly in AudioFlinger"
|
e5dfcd8c6792c4b64120fd03708729b70a887f2a |
|
15-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Use units after all times"
|
362c4e697d8e9c034e964ac7b40227e054491547 |
|
14-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Audio C++ comments Change-Id: I84906ebb9dfcfa5b96b287d18364b407f02a30c1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
91eb8bfbe253a6b6fe1aa23fb884a601c28991c4 |
|
13-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Remove redundant clear() Change-Id: Ie5e4e63cbc8fa85ef50451dddf8f149fa864b132
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ec1d6b5e17281a066d618f7fcd2b63b3ce11f421 |
|
12-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Use const char correctly in AudioFlinger Use const char [] instead of const char * to eliminate unnecessary pointer. Make the array audio_interfaces also const, in addition to the strings. Change-Id: I31f33d1dcb9a657ee136f4280fd2d46492496831
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7dede876998ff56351d495ec3a798c1b131193e8 |
|
13-Dec-2011 |
Glenn Kasten <gkasten@google.com> |
Use units after all times Change-Id: I48d3f29c37228b5d03189e4c9600824c9360cac9
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
2013d4d159bfc29b4143d3b5fd4735f51a03684c |
|
06-Dec-2011 |
Eric Laurent <elaurent@google.com> |
am 5433e25f: am 7b6aff23: Merge "audioflinger: fix audio skipping over A2DP" into ics-mr1 * commit '5433e25f6ce013860ff2a074ad8d1158cc39ab91': audioflinger: fix audio skipping over A2DP
|
162b40bbaf3c3a24f61a6636bef6f80a9c0a31dd |
|
05-Dec-2011 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix audio skipping over A2DP The maximum sleep time allowed in the mixer thread when audio tracks are enabled but not ready for mixing is derived from the latency reported by the output stream. This does not work for A2DP where the latency also reflects encoding, decoding and transfer time. Modified activeSleepTimeUs() to take A2DP case into account. Issue 5682206. Change-Id: I3784ac01fb6f836b5a6ce6f764fb15347586de35
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
926798f8c21ab002d9797ef8973852a2612c1f75 |
|
23-Nov-2011 |
Eric Laurent <elaurent@google.com> |
am f6422f5f: am 20398fac: Merge "audioflinger: reduce sleep time to avoid underrun" into ics-mr1 * commit 'f6422f5f5d04aab47f8f36a0ea92e2140bed0105': audioflinger: reduce sleep time to avoid underrun
|
7cafbb32999049873d4746ba83bd20c88abe6ce6 |
|
23-Nov-2011 |
Eric Laurent <elaurent@google.com> |
audioflinger: reduce sleep time to avoid underrun Progressively reduce the sleep time applied in MixerThread::threadLoop() in case of consecutive application underruns to avoid starving the audio HAL. As the default sleep time is longer than the duration of an audio buffer we ended up writing less data than needed by the audio HAL if the condition persisted. Issue 5553055. Change-Id: I2b23ee79c032efa945025db228beaecd1e07a2e5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c4795ecad4e5a0b3ec54862a40c82ef1ba53cd59 |
|
14-Nov-2011 |
Eric Laurent <elaurent@google.com> |
am 25924f8f: am 030bb998: Merge "audioflinger: fix noise when skipping to next song" into ics-mr1 * commit '25924f8f6c0a4ca4a2eb257b72d9625f69d2525e': audioflinger: fix noise when skipping to next song
|
544fe9b6e9325701df4ab8c1d29774fc13c4cf6c |
|
12-Nov-2011 |
Eric Laurent <elaurent@google.com> |
audioflinger: fix noise when skipping to next song When audio effects are enabled, a noise can be heard at the beginning of the new song when skipping to next song in music app. This is because some effects (especially virtualizer) have a tail. This tail was not played when previous song was stopped because effects were not processed when no tracks were present on a given session. This is to reduce CPU load when effects are enabled but no audio is playing. The tail was then rendered when the new song was started. Added a delay before stopping effect process after all tracks have been removed from a session. Issue 5584880. Change-Id: I815e0f7441f9302e8dfe413dc269a94e4cc6fd95
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6977ca7d5ffdbc1610a95c74653b1fbe6a665f32 |
|
10-Nov-2011 |
Eric Laurent <elaurent@google.com> |
am db7d79e6: am 2b7f91b9: Merge "Fix regression for SoundPool playback" into ics-mr1 * commit 'db7d79e6f1e1860a9bfe4756a03c753435fd0ddf': Fix regression for SoundPool playback
|
a47b69c6f7c6fe0044ebcb2d0790ce3548de56fd |
|
09-Nov-2011 |
Eric Laurent <elaurent@google.com> |
Fix regression for SoundPool playback Commit 19ddf0eb introduced a problem with applications (like SoundPool) relying on an underrun condition to detect end of playback instead of stopping the track when all data is written. AudioFlinger would keep waiting for new data in case of partial buffer filling and never reach the underrun condition. Added a mechanism to wait no more than once if not enough frames are present in the track buffer. Issue 5585490. Change-Id: I131e605ff6070831a01ddf734e68459e3bf2354b
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3b86c964df855a9740c446e984309b719c3ec37c |
|
08-Nov-2011 |
Eric Laurent <elaurent@google.com> |
am f3a892ab: Merge "AudioFlinger: mix track only when really ready" into ics-mr1 * commit 'f3a892ab9347ce733b81ccb4913a91c586f8f367': AudioFlinger: mix track only when really ready
|
3dbe3201479828e84abe02e1fdd0a5d414c0ddb8 |
|
03-Nov-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: mix track only when really ready The addition of low power audio playback mode made that audio buffer consumption by audio HAL can now happen in bursts. This makes that requesting audio data from an AudioTrack for mixing can happen at much shorter intervals than before. This revealed an existing problem where AudioFlinger would consider a track ready for mixing although not enough frames were ready to completely fill one output buffer, thus creating short periods of silence. The fix consists in waiting for enough frames to be ready in AudioTrack buffer before declaring a track ready for mixing. This minimum is not applied when the track is stopped to allow the buffer to be emptied completely. Change-Id: I6d04f9b65db5af85b0b53f0a5674be7ec02f9e9f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a85a74a8219c03f2b1d1ef98f3f02e55f89f89a3 |
|
19-Oct-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 381905: BassBoostTest CTS tests fail... When AudioEffectTest is executed, an Equalizer is created and enabled on a MediaPlayer session. Effects on the output mix are therefore suspended. Then the MediaPlayer is released with the effect still enabled. In this case, Audioflinger::purgeStaleEffects_l() fails to restore the suspended effects when the effect attached to the released audio session is removed. When subsequent tests are executed on output mix effects, these effects cannot be enabled as they are still suspended. Fixed purgeStaleEffects_l() to restore suspended effects if the effect removed is enabled. Also fixed EffectHandle::disconnect() to only restore suspended effects if the disconnected handle actually has control over the effect. Change-Id: I67232e7c34680b0cc01abfd57d5d510a524e5d4f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5c4e818c39ac2d2739675fe907904a874f7623c5 |
|
19-Oct-2011 |
Eric Laurent <elaurent@google.com> |
Limit AudioFlinger log. AudioFlinger logs a warning when a write to the audio HAL takes too long to return. The threshold for this warning is a rule of thumb based on the assumption that the audio HAL will consume buffers at a regular pace. The introduction of low power audio mode with larger buffers and writes occuring in bursts makes that this threshold is often exceeded resulting in excessive and misleading warnings. The threshold is raised to remove unwanted warnings but we should reconsider the usefulness of this warning altogether. Change-Id: I5ef6898ea28d879cede3e47da542a64092a3cca4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
ec35a1416472865dbebc22b10199ad718ed2cc95 |
|
06-Oct-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 5381089: problem with A2DP music volume This problem only occurs when audio effects are present and the music volume is applied by one effect engine. When connecting or disconnecting A2DP, audio effects are moved from one mixer thread to another. When removed from the source thread, the effect is stopped but it is not restarted when added to the destination thread. This regression was introduced by commit 21b5c47e. Change-Id: I4cc578d8d760ec65b185032b6fda98c739d331bc
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9d18ec574f5d847a86a21594ac39394ef5b108fc |
|
27-Sep-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 5373658: memory leak in AudioFlinger. Unlink PowerManagerService binder interface death recipient in ThreadBase destructor. Change-Id: Iab06ae9a8a6737bb002b6416a157b0fb50c11ad5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6bffdb8b598a2399e57f6ca48660fb7bdb2490b5 |
|
23-Sep-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 5355047: Automated effect tests fail. Fixed several regressions in automated audio effect tests due to changes in effect framework and visualizer FFT output range. - Do not suspend Volume effect on session 0 when effects are enabled on specific sessions. - Adapt energy detection thresholds to new visualizer FFT range. - Leave more time for BassBoost and Virtualizer effects to ramp up before measuring the effect. - Removed second insert reverb left by mistake on the player session in preset reverb test. Change-Id: I7a1ad1372d783fa7900eb9dd1d3b47f54d8d766f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
60cd0a0d488e604d27fc7dbb02b00348693dfde2 |
|
13-Sep-2011 |
Eric Laurent <elaurent@google.com> |
Issue 4345021: Audio routed to multiple devices... There is a possiblility that the condition on which RecordThread::checkForNewParameters_l() waits after updating the command completion status is never signalled. This happens if the thread executing ThreadBase::setParameters() has timed out waiting for the status (for instance if the audio HAL takes too long to execute the setParameters() command. Then the RecordThread is stuck forever. The fix consists in waiting for the condition with a timeout in RecordThread::checkForNewParameters_l(). Change-Id: I7fc671bc2fc43ba4acb65a2beb33ee05742f091e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
b76e90de3c64626fe07a68469d0a59a31c8efb6b |
|
30-Aug-2011 |
Eric Laurent <elaurent@google.com> |
Merge "226483: A2DP connected, but music out to speaker"
|
9f6530f53ae9eda43f4e7c1cb30d2379db00aa00 |
|
30-Aug-2011 |
Eric Laurent <elaurent@google.com> |
226483: A2DP connected, but music out to speaker When the A2DP headset is connected, there is a possible race condition when the audio tracks are moved from the mixer thread attached to the speaker output to the thread attached to A2DP output. As the request to clear the stream type to output mapping cache in the client process is asynchronous, it is possible that the flag indicating to the client audio track to re-create the IAudioTrack on the new thread is processed before the cache is invalidated. In this case, the track will be attached to the old thread and music will continue playing over the device speaker instead of being redirected to A2DP headset. Change-Id: Ib2ce1eb5320eaff83287b93779061bf4e7a330df
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
bee5337da7659b3b7128622ba1f42618b11df5be |
|
29-Aug-2011 |
Eric Laurent <elaurent@google.com> |
Audioflinger: reverse logic of BT NREC indication The interpretation of BT NREC by AudioFlinger to enable or disable AEC and NS was wrong: NREC to ON (default) means the phone (Audio Gateway) must enable local AEC and NS. Change-Id: I88a264e7fc9831c43bbace4f6b585baec73f2006
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a1884f9e9ec3836683efd7eb333ee442e8bc9d56 |
|
23-Aug-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: add check for audio HAL init failure Do not call audio HAL functions on the primary HW interface if it could not be initialized properly. Change-Id: If54059c8fd188d6c1686f9e0439994fe9411478a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0270b188aa3929cc512ec6869caba1d6b60cc08c |
|
12-Aug-2011 |
Marco Nelissen <marcone@google.com> |
Don't remove effects on session 0 b/5159902 Change-Id: Id6f29fb1c687069f7480dd81d4745a558f202226
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
db7c079f284f6e91266f6653ae0ec198b1c5006e |
|
10-Aug-2011 |
Eric Laurent <elaurent@google.com> |
Audio effects: track CPU and memory use separately Before this change, CPU and memory usage for an audio effect were registered and checked against the limit by audio policy manager upon effect instantiation. Even if an effect was not enabled it would prevent another effect to be created if the CPU load budget was exceeded, which was too restrictive. This change adds a method to register/unregister CPU load only when an effect is enabled or disabled. It also adds a mechanism to place all effects on the global output mix in suspend state (disabled) when an effect is enabled on a specific session. This will allow applications using session effects to have the priority over others using global effects. Also fixes some issues with suspend/restore mechanism: - avoid taking actions when an effect is disconnected and was not enabled. - do not remove a session from the suspended sessions list when corresponding effect chain is destroyed. Change-Id: I5225278aba1ae13d0d0997bfe26a0c9fb46b17d3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
3a34befc6fb04a4945a849e8bda8b84e4bf973fe |
|
02-Aug-2011 |
Marco Nelissen <marcone@google.com> |
Keep effects sessions active when the caller dies. Don't remove effects until the session they are in goes away or all AudioEffects have been explicitly released. This allows the control panel process to die without stopping the effects. Change-Id: I4496e5df080230ca1af149dec95c1309ab8ea888
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c3e6572e0ff535932b1f6ffb7bcf5acd891675fb |
|
08-Aug-2011 |
Eric Laurent <elaurent@google.com> |
Merge "AudioFlinger: protect input/output stream access"
|
b8ba0a979067a4efb0b3819bf17770793e41c15e |
|
08-Aug-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: protect input/output stream access Some methods would not check that the output orinput stream of a thread was still valid before calling functions on its interface. This could cause a crash if those methods where called while the output or input was being closed by another thread. Make sure that the output or input stream pointer is cleared before closing the stream. Always check that the output or input pointer is not null before calling functions at the stream interface. Generalize the use of initCheck() method to verify that the output or input stream is not null. Change-Id: I9d9ca6b744d011bcf3a7bbacb4a581ac1477bfa5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
59bd0da8373af0e5159b799495fda51e03120ea4 |
|
01-Aug-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: disable AEC and NS with BT headsets Disable AEC and NS when the Bluetooth SCO headset in use indicates it implements those pre processings. Change-Id: I93f3d10b0a27243d5dbff7182639576fc0c6d862
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
59255e4fc7d8ff52874b85b1988dc0785140cf81 |
|
28-Jul-2011 |
Eric Laurent <elaurent@google.com> |
Audio Effect Framework: add effect suspend/restore Add the possibility for the effect framework to suspend (temporarily disable process) and restore audio effects. This feature will be usefull to disable pre processing under certain conditions and better control coexistence of audio effects on output mix and specific sources. Change-Id: I79b195982cc48748d5708308fb1647b9c3c34cc6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6dbe883644940badc684957cfc381bfd115f205e |
|
28-Jul-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 5090721: audio record broken Commit 6dbdc40 introduced a deadlock when exiting the AudioFlinger RecordThread. Change-Id: I1f63e54c5aeff05da4e4d028b53f734c62c78677
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
a7280a59259018d997896c043fd2db95f631f12e |
|
27-Jul-2011 |
Eric Laurent <elaurent@google.com> |
Merge "AudioFlinger: fix crash when deleting pre process."
|
ec437d8d3db79459d7b19e1734e6fe309bd621e8 |
|
27-Jul-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: fix crash when deleting pre process. If a pre processing effect is detroyed while enabled and capture is active, there was a possibility that the effect engine is released by the framework while still processed by the audio HAL. The fix consists in not releasing the engine in EffectModule::removeHandle() but just flag the effect as being detroyed to avoid further calls to functions on the engine effect interface. The effect interface is then removed from the audio HAL safely in EffectChain::removeEffect_l() while holding the EffectChain mutex. Change-Id: I71fab30d9145062af8644f545a1f1d4d3e7e7f02
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
feb0db689c17dced50afaee54c659f1676e2d505 |
|
22-Jul-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 4604090: notification sound interrupted. The problem is that the audio HAL fails to acquire the wake lock when playing the notification. This is because of a change that removed the mediaserver process form the system group for honeycomb. The fix consists in requesting the wake lock from PowerManagerService when AudioFlinger mixer wakes up. A consequence of this change is that audio HALs or pcm drivers do not have to hold wake locks anymore as in the past. Change-Id: I4fb3cc84816c9c408ab7fec75886baf801e1ecb5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
1d2bff0e588afe183a1baaae731519b4e957bbdb |
|
25-Jul-2011 |
Eric Laurent <elaurent@google.com> |
AudioFlinger: add dump of audio pre processing. Dump of media.audio_flinger service was only listing effects on output threads. Moved the dump of effect chains from PlaybackThread to ThreadBase class so that pre processings on RecordThread are also listed. Change-Id: If8bc74023c12b9c2371f1b300743b156ceca7b87
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
edc15ad8fcde12dc4f642d80d077239b1532eeca |
|
22-Jul-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 4988574: 8 bit PCM audio playback broken. Fixed regression in audio track control block frame size calculation introduced by commit c310dcb. Change-Id: Ia731b946ae4e43316b98d80229e3b08a696e47d6
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7c7f10bd4fda9a084e5e7f0eb3a040dfcbf01745 |
|
18-Jun-2011 |
Eric Laurent <elaurent@google.com> |
Audio framework: support for audio pre processing Audio effect framework is extended to suport effects on output and input audio path. AudioFlinger: Support for audio effects and effect chains is moved from PlaybackThread class to ThreadBase class so that RecordThread can manage effects. Effects of type pre processing are allowed on record thread only. When a pre processing is enabled, the effect interface handle is passed down to the input stream so that the audio HAL can call the process function. The record thread loop calls the effect chain process function that will only manage the effect state and commands and skip the process function. AudioRecord: The audio session is allocated before calling getInput() into audio policy serice so that the session is known before the input theead is created and pre processings can be created on the correct session. AudioPolicyService: default pre processing for a given input source are loaded from audio_effects.conf file. When an input is created, corresponding effects are created and enabled. Change-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
e0b5bb23f0a26d248275d203885b820659da7320 |
|
16-Jul-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Log CPU usage"
|
4d8d0c30abfa4b8d75866d42094cc797e05068fa |
|
09-Jul-2011 |
Glenn Kasten <gkasten@google.com> |
Log CPU usage Change-Id: Ie447e59be139153e526b7ad467c46c659d26816f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
6d8b694d999e9be7d5dcc336535832a80fb6f61f |
|
24-Jun-2011 |
Eric Laurent <elaurent@google.com> |
Moved and renamed effect API header files Moved specific effect header files to system/media/audio_effects/include/audio_effects and renamed to lower case (effect_xxx.h). Change-Id: Icfc2264bfd013cab0395d7e310ada636b9fe3621
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
671a636931295d9c33ffca74551a804479d01241 |
|
17-Jun-2011 |
Eric Laurent <elaurent@google.com> |
Added audio_bytes_per_sample() helper function Change-Id: Ibfcd75c4c241a53d5f052c25ada091904991048a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
7394a4f358fa9908a9f0a7c954b65c399f4268e6 |
|
14-Jun-2011 |
Dima Zavin <dima@android.com> |
audio: update for audio/audio_policy header names/locations Change-Id: I36c49352eee57559403cd1597f56a8485a360289 Signed-off-by: Dima Zavin <dima@android.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0512ab559d4670c2204078470d7ef5d376811c57 |
|
05-May-2011 |
Glenn Kasten <gkasten@google.com> |
Remove dead code related to gettid The gettid system call is always available now. Change-Id: Ib78b41781eda182dc8605daf456bbea7ff7c2dc0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
0d255b2d9061ba31f13ada3fc0f7e51916407176 |
|
25-May-2011 |
Jean-Michel Trivi <jmtrivi@google.com> |
Use channel mask instead of channel count for track creation Record and playback objects (resp AudioRecord and AudioTrack) are created using a channel mask, but this information is lost in the mixer because only the channel count is known to AudioFlinger. A channel count can always be derived from a channel mask. The change consists in: - disambiguiting variable names for channel masks and counts - passing the mask information from the client to AudioFlinger and the mixer. - when using the DIRECT ouput, only verifying the format of the track is compatible with the output's for PCM. Change-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
65580f9adf6c4d98449ad0716488f9fe3869aa5a |
|
28-May-2011 |
Eric Laurent <elaurent@google.com> |
Removed interface to load audio effects libraries Removed unused functions allowing dynamic loading of audio effects libraries from effects factory API. Change-Id: I06cc5a51dc10aca87c7a8687bbb874babd711eca
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
162f7d15ac5c8c23d1c3de171239f3a4e6e06b2a |
|
23-May-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "HAVE_ANDROID_OS AUDIOFLINGER_SECURITY_ENABLED dead"
|
6708b9a3fb654f5623ba5a696288fdba310a5e1a |
|
13-May-2011 |
Eric Laurent <elaurent@google.com> |
Merge "Fix audio effect framework issues"
|
b469b9490b3cd9e0f0466d9b9ab228f6c793b82e |
|
09-May-2011 |
Eric Laurent <elaurent@google.com> |
Fix audio effect framework issues Fix two issues in audio effect framework reported by partners. 1 - Fixed duplicated audio buffer sent to effect process function when pausing a track. Modified Effectchain::process_l() function to clear the effect chain input buffer before calling the effect process functions when no track is active on the session. Previous code was clearing the buffer after calling the process functions and when transitioning from active to inactive, the last processed buffer was passed again once to effect process function before being cleared. 2 - Fixed potential mutex cross deadlock when disconnecting an effect while playback is active. This is because EffectChain::process_l() was calling PlaybackThread::hasAudioSession() thus creating an inversion in the mutex lock order (EffectChain mutex locked before ThreadBase mutex). The fix consists in removing the call to hasAudioSession() from process_l() and requires each effect chain to keep count of the number of audio tracks attached to it (previously only the active tracks were accounted for). Change-Id: Iee4246694ea8c7a66c012120c629d72dd38f9c35
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
64760240f931714858a59c1579f07264d7182ba2 |
|
11-May-2011 |
Dima Zavin <dima@android.com> |
update for new audio.h header location Change-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876 Signed-off-by: Dima Zavin <dima@android.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
249c6a61f21bc90e25e4b77f18c98af1ac363e69 |
|
05-May-2011 |
Glenn Kasten <gkasten@google.com> |
HAVE_ANDROID_OS AUDIOFLINGER_SECURITY_ENABLED dead Remove dead code from the days when Android ran in emulator. Change-Id: Ibadbbde0538239ad9b2811a3a2e8f8a6d3b6389c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5a61d2f277af3098fc10b2881babca16391362da |
|
20-Apr-2011 |
Dima Zavin <dima@android.com> |
audioflinger: don't do work in constructor, instead do it in onFirstRef Change-Id: I22d9e01821816c3beb52b014330386c7fd2f0411 Signed-off-by: Dima Zavin <dima@android.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
799a70e7028a4d714436c3a744a775acfbd31aae |
|
19-Apr-2011 |
Dima Zavin <dima@android.com> |
audioflinger: enumerate all the possible audio interfaces Keep track of the primary interface that handles the master volume, etc. Change-Id: Ib0701fccff8d8783a99035a241ab7c8ec75c00ac Signed-off-by: Dima Zavin <dima@android.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fce7a473248381cc83a01855f92581077d3c9ee2 |
|
20-Apr-2011 |
Dima Zavin <dima@android.com> |
audio/media: convert to using the audio HAL and new audio defs Change-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5 Signed-off-by: Dima Zavin <dima@android.com>
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
c30268b9d118309a0514bcf280a03ee69f81403f |
|
06-Apr-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Miscellaneous code cleanup in audio framework"
|
4bcae82f9b07d1a39956c45a6f5bec0b696c4dd1 |
|
04-Apr-2011 |
Glenn Kasten <gkasten@google.com> |
Miscellaneous code cleanup in audio framework Changes: - Move declaration of kClassPathName to top of file so it can be used in more than one place, instead of "android/media/AudioSystem". - Make private methods static. - Add comment to stream_type, audio_mode, force_use types that they must match values in AudioSystem.java. - Add comment about unused types mp3_sub_format and vorbis_sub_format. - Fix typos. - Use @ in javadoc comments. - Delete dead APIs setMode, getMode, setRouting, getRouting in AudioSystem.java (they are all hidden, deprecated, and unused by rest of framework) - Delete unused private log method. - Fix pathname for android_media_AudioSystem.cpp. - Improve code formatting for space after == and !=. - Add logging of delta for changing audio policy manager ref count. Change-Id: I18037c7beb8ab76d1fda08c11e589f6e591d36e1
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
38ccae2c0324daa305f3fe77d25fdf5edec0b0e1 |
|
29-Mar-2011 |
Eric Laurent <elaurent@google.com> |
New fix for issue 4111672: control block flags The first fix (commit 913af0b4) is problematic because it makes threads in mediaserver process block on the cblk mutex. This is not permitted as it can cause audio to skip or worse have a malicious application prevent all audio playback by keeping the mutex locked. The fix consists in using atomic operations when modifying the control block flags. Also fixed audio_track_cblk_t::framesReady() so that it doesn't block when called from AudioFlinger (only applies when a loop is active). Change-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
33797ea64d067dfeaacbfd7ebe7f3383b73961b5 |
|
17-Mar-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 4111672: AudioTrack control block flags Make sure that all read/modify/write operations on the AudioTrack and AudioRecord control block flags field are protected by the control block's mutex. Also fix potential infinite loop in AudioTrack::write() if the written size is not a multiple of frame size. Change-Id: Ib3d557eb45dcc3abeb32c9aa56058e2873afee27
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
9ee159b79022b2e1a050acb3890ce948e99e9ccb |
|
24-Feb-2011 |
Gloria Wang <gwang@google.com> |
- To track the usage of all audio output devices - To track the currently used audio device - The devices are separated as speaker and other audio devices - Provide the collected data to battery application through pullBatteryData() Change-Id: I374c755266b5ac6b1c6c630400f4daf901ea8acc
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
243f5f91755c01614a8cafe90b0806396e22d553 |
|
01-Mar-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 3479042. The problem is that when an AudioRecord using the resampler is restarted, the resampler state is not reset (as there is no reset function in the resampler). The consequence is that the first time the record thread loop runs, it calls the resampler which consumes the remaining data in the input buffer and when this buffer is released the input index is incremented over the limit. The fix consists in implementing a reset function in the resampler. A similar problem was also present for playback but unoticed because the track buffer is always drained by the mixer when a track stops. The only problem for playback was that the initial phase fraction was wrong when restarting a track after stop (it was correct after a pause). Change-Id: Ifc2585d685f4402d29f4afc63f6efd1d69265de3
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
117cd9286424888c1c5bf202ebf1e08ae1e6affe |
|
04-Feb-2011 |
Glenn Kasten <gkasten@google.com> |
Merge "Bug 3366885 Remove LVMX switch"
|
db130fbd3ccd37e247e49494a84f8a9841ecd593 |
|
04-Feb-2011 |
Glenn Kasten <gkasten@google.com> |
Bug 3366885 Remove LVMX switch Change-Id: I0bf98c6f85f00b3296874571e1c049dcc4e2fcca
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
eda6c364c253ba97ee45a3adeb8c2b45db1f81db |
|
02-Feb-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 3371080 Modified default volume control logic in AudioService: 1 IN_CALL volume if in video/audio chat 2 NOTIFICATION if notification is playing or was playing less than 5s ago. 3 MUSIC Modified silent mode: - now also affect MUSIC stream type - entering silent mode when VOL- hard key is pressed once while selected stream volume is already at 0 (except for VOICE_CALL stream). - exiting silent mode when pressing VOL+ hard key while in silent mode Play sound FX (audible selections, keyboard clicks) at a fixed volume. Modified audio framework: - isStreamActive() method now implemented in AudioPolicyManagerBase (previously AudioFlinger) - iStreamActive() now specifies a time window during which the stream is considered active after it actually stopped. Change-Id: I7e5a0724099450b9fc90825224180ac97322785f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
73337489229cc9b50371c7a9fcd86e9f00ea46d0 |
|
20-Jan-2011 |
Eric Laurent <elaurent@google.com> |
Fix issue 3371096. EffectModule::process() was copying effect chain input buffer to output buffer if no effect was active instead of accumulating it. Change-Id: I2838af2e7b6654d0a76547625929a5453da68d02
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
935752053ef2691dbb6d5a6d149e0e362c6e3c74 |
|
19-Jan-2011 |
Eric Laurent <elaurent@google.com> |
Tentative fix for issue 3362362. The problem is likely that one method is called on the AudioPolicyManagerBase instance while it is still being constructed by AudioPolicyService. To avoid this, the AudioPolicyService mutex is held by the constructor until the platform specific AudioPolicyManager is constructed and the member mpPolicyManager initialized. Also added an initCheck() method to AudioPolicyInterface to verify successful initialization of AudioPolicyManager. A similar change is done in AudioFlinger constructor. Also added some missing protections in AudioFlinger methods where the playback thread list is parsed. Change-Id: I006b244ec057e1bb0aa5ebe426ef006e3b171056
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f5aafb209d01ba2ab6cb55d1a12cfc653e2b4be0 |
|
18-Nov-2010 |
Eric Laurent <elaurent@google.com> |
Fix issue 3157123. Use a Mutex wherever atomic operations were used in AudioTrack, AudioRecord, AudioFlinger and AudioEffect classes. Change-Id: I6f55b2cabdcd93d64ef19446735b8f33720f8dbc
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f1fb01a7f00b8da90a36268aba8584a872e99175 |
|
15-Nov-2010 |
Jean-Michel Trivi <jmtrivi@google.com> |
Add new audio mode for audio communications other than telelphony. The audio mode MODE_IN_CALL signals the system the device a phone call is currently underway. There was no way for audio video chat or VoIP applications to signal a call is underway, but not using the telephony resources. This change introduces a new mode to address this. Changes in other parts of the system (java and native) are required to take this new mode into account. The generic AudioPolicyManager is updated to not use its phone state variable directly, but to use two new convenience methods, isInCall() and isStateInCall(int) instead. Change-Id: Id744cd26520ea1d1a4795eabe6a1f0c58789af76
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
af59ce2407fa4e6e5d8f1664a4df2daf1badd407 |
|
05-Oct-2010 |
Eric Laurent <elaurent@google.com> |
Fixed AudioFlinger not always pausing tracks If the pause request is received before the AudioTrack buffer was completelly filled and the track ready for mixing, the pause is not executed: the track just underruns and stays in pausing state. The fix consists in considering the track ready for mixing immediately if pausing. Change-Id: Ia6cb4703fee2126e41011a6400ea8eeb3a3e5456
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
44d9848d6656777a18019223e0d35f2fcc67719a |
|
01-Oct-2010 |
Eric Laurent <elaurent@google.com> |
Issue 3032913: improve AudioTrack recovery time This issue showed that when an AudioTrack underruns during a too long period of time and is therefore disabled by audioflinger mixer, it takes an additional delay of up to 3 seconds to recover. This fix adds a simple mechanism to recover immediately when the client application is ready to write data again in the AudioTrack buffer Also throttle warnings on record overflows Change-Id: I8b2c71578dd134b9e60a15ee4d91b70f3799cb3d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
84e9a10fde8a4ae3da4f88d7911c154933aa457f |
|
24-Sep-2010 |
Eric Laurent <elaurent@google.com> |
Fix issue 3007862 Removed a cross deadlock condition between audioflinger and audio policy service mutexes. Audioflinger::createEffect() locks audioflinger mutex and then calls AudioSystem::getOutputForEffect() which ends up in AudioPolicyService::getOutputForEffect() which locks audio policy service mutex. If at the same time, the command thread in audio policy service is processing a command(set volume, set route...), the mutex is locked and the command will call one audioflinger method which in turn will attempt to lock audioflinger mutex. The fix consists in releasing audioflinger mutex before calling getOutputForEffect(). Change-Id: Id44e7feb36e0a295731f6aa97cf32d022edd34d0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
fac4895de4ae63928ff0cf2ccece106eb6d33f72 |
|
22-Sep-2010 |
Eric Laurent <elaurent@google.com> |
Request permission for global audio effects. Applications creating an audio effect on the output mix must have the MODIFY_AUDIO_SETTINGS permission. Change-Id: I57d88533f91ad0d33680107d79abcec28f7263b5
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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 getCallingPid() Change-Id: Id1ff51327263364bf71d3f2668fa5cde4311d84f
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
aeae3de947fa0b1e670c8472b32288962f97b4f5 |
|
02-Sep-2010 |
Eric Laurent <elaurent@google.com> |
Fix problem in AudioEffect::command() status. The *pReplyData argument of the command() function was left unitialized by EffectHandle::command() when command was EFFECT_CMD_ENABLE, EFFECT_CMD_DISABLE and EFFECT_CMD_SET_PARAM_COMMIT. Change-Id: I91a19817ead2a8cfbdd8e2d77ca270c7ce9d5bd4
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
25cbe0ecd6df8be7e40537c5d85c82f105038479 |
|
19-Aug-2010 |
Eric Laurent <elaurent@google.com> |
Fix issue 2929440 Fixed regression introduced by change a54d7d3d7dd691334189aab20d23c65710092869 in audioflinger mixer thread: When the output stream is suspended, the sleep time between two writes must match the actual duration of one output stream buffer otherwise the playback rate is not respected. Change-Id: Ic5bebe890290d1f44aeff9dd3c142d18e26fff2a
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
571d49c1c316f5e07b74ed7b5df6bdec7cbc1a14 |
|
11-Aug-2010 |
Eric Laurent <elaurent@google.com> |
Fix issue 2909189: System property ro.audio.silent no longer mutes system. Fixed regression introduced by commit 2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee: master mute was not working if no effect chains were present on session 0. Change-Id: I66d107e045d159cb94d29c7476fa1e12d92f2ae7
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
8569f0d3bf4c6787707e348a7cf73b9c4199cb32 |
|
30-Jul-2010 |
Eric Laurent <elaurent@google.com> |
Fixed several audio effects problems. - Fixed constant inversions in AudioEffect.java - Do not return error when enabling an already enabled effect - Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method - Remove click when restarting effect during disable sequence - Fixed problem in master mute management when volume control is delegated to effect. Change-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
60e182437228312cc28469a5b0dfde77ac848e1a |
|
29-Jul-2010 |
Eric Laurent <elaurent@google.com> |
Fixed underrun in audioflinger mixer. When all audio tracks have been disabled and the mixer is running idle before the output stream is placed in standby, the mixer sometimes fails to write to the output stream on time to avoid underrun. This is because the sleep period used to wait before the next write to output stream is too close to the actual buffer duration. In fact this sleep time is not critical as if we write too early to the output stream, the kernel driver will wait for free buffers from the audio DSP DMA and we will sleep anyways. The fix consists in dividing the calculated wait period by 2 to increase the margin. Change-Id: I5730887dc2ccce2a511bc858494a6f7da6b392a0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
39e94f8f723d445447fdee0822291e664b631f60 |
|
28-Jul-2010 |
Eric Laurent <elaurent@google.com> |
Allow creation of an audio effect on a session with no audio tracks. This is necessary to allow creating and enabling an effect attached to a particular player session before the playback is started. As a matter of fact, the implementation of the mediaplayer does not create the AudioTrack before playback starts. Change-Id: I1266e8885f9d756acc949303321aaac0fbf83e34
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
f997cabca292d70d078ae828e21c28e6df62995f |
|
19-Jul-2010 |
Eric Laurent <elaurent@google.com> |
Fixed problems in audio effect volume control. Fixed the following problems in audio effect volume control in AudioFlinger: - Make sure that the volumes returned by EffectChain::setVolume_l() are correct even is no change is detected since last call - Do not use isEnabled() to validate volume control but mState >= ACTIVE instead as the volume control must be also active in STOPPING and STOPPED states. Change-Id: Id62da3164fad500ee8a5efd6cd78c77e8fdcb541
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
cab112421da6e8eac19ffddbbe3d76067cffee78 |
|
15-Jul-2010 |
Eric Laurent <elaurent@google.com> |
Several improvements in audio effects volume control. - Fixed crash when deleting an effect chained before an effect having volume control - Changed EFFECT_FLAG_VOLUME_CTRL to implicitely include EFFECT_FLAG_VOLUME_IND (not need to set both in effect descriptor). - Volume control changes from one effect to another if needed according to effect enable state - EFFECT_CMD_SET_VOLUME is only sent when their is an actual change in volume Change-Id: Ieebaf09157e2627366023569d95516646e03e26c
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
5462fc9a38fa8c9dff434cd53fa5fb1782ae3042 |
|
15-Jul-2010 |
Mathias Agopian <mathias@google.com> |
added BinderService<> template to help creating native binder services Change-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
65ab47156e1c7dfcd8cc4266253a5ff30219e7f0 |
|
15-Jul-2010 |
Mathias Agopian <mathias@google.com> |
move native services under services/ moved surfaceflinger, audioflinger, cameraservice all native services should now reside in this location. Change-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|