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
|
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
|
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
|
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
|
c15d6657a17d7cef91f800f40d11760e2e7340af |
|
30-May-2012 |
Glenn Kasten <gkasten@google.com> |
Add audio watchdog thread Change-Id: I4ed62087bd6554179abb8258d2da606050e762c0
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
|
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
|
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
|
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
|
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
|
399930859a75d806ce0ef124ac22025ae4ef0549 |
|
31-May-2012 |
Glenn Kasten <gkasten@google.com> |
State queue dump Bug: 6591648 Change-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d
/frameworks/av/services/audioflinger/AudioFlinger.cpp
|
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
|
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
|
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
|
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
|
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
|