summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioFlinger.h
Commit message (Collapse)AuthorAgeFilesLines
* Squashed commit of A/V changes from CodeAuroraKrishnankutty Kolathappilly2013-06-181-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Brings us current with AU_LINUX_ANDROID_JB_2.5.04.02.02.040.367 Camera: Fix deadlock due to mLock in pcb and takepicture In non-zsl case of takepicture, we do streamoff for preview stream which is waiting on preview callback thread to exit. By that time the lock has already been acquired by takePicture. So preivew callback will not exit until it acquires lock and takePicture cannot continue until PCB call back is returned. Fix: Avoid the mLock at services when both Preview cb & Compressed cb are enabled. Change-Id: I6c264928bf1540c7b51f1add65f9c3e968506e15 CRs-fixed: 479419 audioflinger: Fix the LPA-AudioEffects crash issue - Issue:crash is observed during LPA playback on enabling effects followed by plug-out->plug-in of wired headset - Rootcause: while deleteing the effectchain in deleteEffect EffctChain is being unlocked after clearing the chain which leads to accessing the lock which might already deleted. - Fix: first unlock the effectChain and then call clear CRs-Fixed: 491774 Change-Id: I518ff086c5ad71486cd29142563145137ebc15b6 libstagefright: Fix for crash in sound recorder during device switch -Crash seen in sound recorder during frequent insertion and removal of wired headset -During device switch some time Codec's input buffers are too small to accomodate buffer read from source. Omx codec doesn't read the fix size buffer from source, during device switch scenario sometime buffer read from source exceeds input buffer size so it goes in error state which leads to crash. -Increasing the input buffer size fix this issue Change-Id: Id15378670880d0c3c0bd4408841b28be963549a0 CRs-Fixed: 488449 libstagefright: Fix for FPS drop issue during A-V playback. Issues: -The AAC decoder was not updating the timestamp when EOS is reached. -Logic to smoothen the real time update in AudioPlayer uses system time. This introduces corrupt timestamp during EOS. Fix: -Update the timestamp in AAC decoder when EOS is reached. -Extrapolate realtime using system time in AudioPlayer when EOS is reached. Cap the value to realtime if extrapolated time becomes greater than realtime. CRs-Fixed: 384183 Change-Id: Ice54501436431d2527fcd3d710d65d9732fcffdd libstagefright: Reset buffer size value with SurfaceTexture - OMXCodec explicitly sets the decoder output buffer size using the native window perform API. (to accomodate extra-data) - This size is reset only when the SurfaceTexture is destroyed. - Unless reset, this size will be assumed for all output buffers if the SurfaceTexture is re-used. CRs-Fixed: 337660, 432309 Change-Id: I28aed12ad02adeac61caffbb00e3082640a5f6d4 audio: Add support for tunnel mode recording - Add support for tunnel mode recording. Change-Id: I95cdfff729affd784141487521c9f2f714221d11 audio: Add support for non-pcm VOIP vocoders - Add support for non-pcm VOIP vocoders - non-pcm vocoders use AUDIO_SOURCE_VOICE_COMMUNICATION as inputSource. Add check to verify inputSource and then configure framecount accordingly Change-Id: Ia38da4f6ba0ee40c794d3c97325327cdb7dcb32a CRs-Fixed: 467850 frameworks/av: Add metadata mode changes to LPAPlayer -Seek to EOS was causing playback to hang for 3 seconds before switching to the next clip. -This is because the lpa driver works on period size. Partial buffers are not handled. -Add support for metadata mode changes to LPAPlayer to support partial frames. CRs-Fixed: 458904 Change-Id: I8673756b54ae7bca18855d326c85ae1064652514 libstagefright: Add support for WMA in ACodec - WMA support is not there in ACodec - In the case of wma format, since not getting the complete information of wma version so instead of allocating the component in onAllocateComponent function it will create in onConfigureCompoenent function. bitspersample is find as "bsps" from AMessage while configuring the WMA10PRO and WMALOSSLESS format CRs-Fixed: 453951 Change-Id: I98baa701dbf8a5c012f4be5e83831c0be2111dcc libstagefright: Flush the pending buffers when EOS is received For the use case where the first frame in the buffer is EOS, decode the aac config frame buffer to update the sample rate and channel mode and flush out the buffer. Change-Id: I0354802cdbf61ac1ba0fecbbdf616705806b0f4a CRs-Fixed: 459334 audio: Fix The Linux Foundation copyright - Fix copyright format based on The Linux Foundation copyright template Change-Id: I100a5c86302d1a1a3d79543d95e242734daae746 media, audioflinger: check for divide by zero possibilities and err When output stream is not available to audioflinger due to any reason , sampleRate and frameCount have zero values when trying to create new Audiotrack. This might result in divide by 0 situation. Change-Id: Ic13cb51facb8497e68ab596abb027b44f496b907 CRs-Fixed: 478480 framewroks/av:Fix ANR at the end of video recording - While doing video recording, when the recording ends ANR observed while doing stress test for many hours - When the recording is stopped, audio HAL receives error from driver and audio HAL propagates this error to AudioFlinger. But AudioFlinger is not sending error status to audio source to stop recording. Because of this audiorecord thread keeps on waiting for buffers which is resulting in ANR. - To avoid indefinite wait, a timeout of 1 sec is set for buffer in audioSource and after timeout, -ETIMEDOUT is returned to recorder thread. CRs-Fixed: 479968 Change-Id: I91aba6922086e711992d9d991dea9c35d33eaee9 audioflinger: Integrate SRS TruMedia Change-Id: If61ae91556120ddd5f5ebcc6dbbfe6583c7df67d audioflinger: Fix apply SRS effects if tones diabled in tunnel mode For the use case of SRS post processing in Tunnel mode, the API's of SRS are called only from write. With the huge buffering for tunnel mode, once EOS is received there would not be further write. With system tone enabled, the SRS API's are called during the check for Parameters change through normal mixer thread. With system tones disabled, SRS will not be applied after EOS as no write and mixer thread would not be active. Fix the issue by adding the Effects Thread for SRS in Tunnel mode. Fix the compilation issue with ALOGV messages enabled Change-Id: Ic7e62894840f786119dfe8ae471c5d24812917d7 audioflinger: Enhance LPA-effect logic to handle rapid config. -Issue:Rapid Config events cause pops/glitches, raw data playback. -Rootcause1:Raw data leakage to DSP: applyEffectsOn() applies effects chunk by chunk in a loop, if effects change during this time the loop exits and this results in creation of a buffer in which part of it is effects processed and rest raw, this causes raw data to leak to DSP. -RootCause2:Effectsthread directly works on the DSP buffers, while DSP is rendering from there, so that effect application is instantaneous and for this it gives the DSP buffers as output to effects chain, this means that all the effects in the chain update the DSP buffers one after the other, this can create unpredictable rendering patterns. RootCause1 and 2 combined seem to fragment memory with parts of it with effects and parts with raw data etc. -Fix1:Dont update DSP mem unless the effects are applied completely on a buffer. -Fix2:Effectschain will work on a temp scrath buffer instead of DSP mem and when effects are applied completely on this scrath buffer, memcpy this to DSP mem with this DSP mem is updated in one shot. -Remove repetetive logs which clutter the logcat if msgs are enabled in audioflinger. Change-Id: I9051e7b8531aa5c8cb3dcfafe0be3136a2cf0f9d CRs-Fixed: 463880 frameworks/av: Update framecount and buffersize values -framecount should be calculated based on mMaxBufferSize returned from HAL -update the buffersize with the value returned from HAL CRs-Fixed: 482744 Change-Id: I90dd9c3ebbbc8a9f1f2f92c5347ae9cb01719e13 audioflinger: Fix the LPA-AudioEffects dead lock issue. - Issue:Deadlock occurs when the LPA clips are subjected to rapid next from BT device and simultaneously on/off the audio effects. - Rootcause:some times flinger thread processing LPAPlayer/directtrack next deadlocks with the thread working on effect configuration as both of them contend for the audioflinger::mlock and effectmodule::mlock. - Fix1:AudioFlinger::deleteEffectSession() not to acquire audioflinger:mLock instead take the mLPAEffectChain.mlock. - Fix2:ThreadBase::effectConfigChanged() not to acquire audioflinger::mlock. Change-Id: I056c8297802f81644fa1371836db42bdbd3825fd CRs-Fixed: 477511 libstagefright: Add support for High Frame Rate Encoding - Based on kkeyhfr key value from meta data, add support in OMXCodec and MPEG4Writer for HFR mode - Assume normal mode recording if kKeyHfr is absent - Increase bit rate for high frame rate (HFR) recording feature to reflect the corresponding increase in frame rate Change-Id: I0a69f8d9322a768677781d08dd910dc5772c5292 libstagefright: Support some userdefine properties - support property to disable audio - support property to change recorder profile mode - support b frame encoding Change-Id: I175decec83f6027cbd7988caf680f7fec2836f83 CRs-Fixed: 443327 libstagefright: Add support for H/W AAC decoder - Currently, only software AAC decoding is supported. - Add support for H/W AAC decoding by including it in the list of available decoders and use it for decoding only if the property 'media.aaccodectype' is set to 0. Change-Id: I4bb9df1bd10bd8ee91e63dadd6c473fc4e29813a CRs-Fixed: 449145 libstagefright: Move checks for creating new extractor to ExtendedExtractor - Move all the checks and creation of the extended extractor into ExtendedExtractor. - Restrict creation of new extractor to the following conditions o default extractor is NULL o default extractor says the content is video only or has an unrecognized audio stream o the audio stream is a amr-wb (plus). - This change is being added to avoid unnecessary creation of two extractors thereby improving the startup latency. CRs-Fixed: 462087 Change-Id: Ia87eca73c4f81d37697fa85fd4f7c8cc8d406104 [StageFright] Enable 4 channel support This patches enables 4 channel WAV audio support and fixes invalid data size in WAV header field if it exceeds the actual source size. This patch is needed to support WebAudio in WebKit as some of the chrome demos use 4 channel WAV audio and bogus header information. Change-Id: I307026107ab4e4342b1c0d7bb64761a416fb2c65 audioflinger: Fix crash on LPA shutdown * Decrement the refcount after unlocking the mutex Change-Id: Ic3210700e0aaf5e8df78f85f501621a455058e24 libstagefright: Accept vendor specific NV12 colorformat from component - Accept OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m color format which is NV12 + 32 aligned stride and slice. - This is different from vanilla NV12 which is 16 aligned. Change-Id: I6de2ec3a78215dbcc28a6006b746e3e0afe69c3c libstagefright: various fixes for avc_utils - skip seq_scaling_matrix_present_flag assertion if checking for interlaced property. - correct interlace check to outside of if-block Change-Id: Ia5854110feb1c56ddc86b312d2ba2dbb73d37804 CRs-Fixed: 445527, 445692 libstagefright: print stats at end of playback - prints statistics before reset at the end of playback onto logcat - print statistics after each pause and seek Change-Id: I68edcc3153a04209e7382e4d3fba0bf734f3e33f CRs-Fixed: 457926, 447109 frameworks/base : Fix to play a specific Mp4 clip due to SYNCH_LOST_ERROR. -Unable to play a Specific Mp4 clip. -Mp3 playback is stopped if the Decoder errors out with SYNCH_LOST_ERROR. -Ignore the frame with SYNCH_LOST_ERROR and play silence instead. Change-Id: I6b94a83cf89e8bc6792d8ee3804042d629aa505b Add checks before removing an active buffer in OMXNodeInstance With this change, OMXNodeInstance will remove a buffer from it's active list only if OMX_FreeBuffer returns successfully. Change-Id: I685b39ac7ba762a2fc1b64d7f6c1efd391513598 libstagefright: Add interlaced video support - Adds call to set output buffer size on the native window Change-Id: If4a67b3f877bef557c46bb67b29d1e7051553335 audio: fix for AMRWB param overwritten issue - Overwrite AMRWB params with default value only when setParameters is not invoked CRs-Fixed: 456459 Change-Id: I3fa6b56101ca408ed5b5b82707c6dc75a9d9f17b audio: fix encoder parameters for AMRWB format - AMRWB encoder only accepts SampleRate 16k and channel count 1. Always overwrite AMRWB SampleRate and channel count to default values. - AMRWB encoder accepts BitRate from 6.6k to 23.85k, only overwrite AMRWB BitRate to default(23.85k)if setParameters() is not invoked Change-Id: I75a96b54ef04bc59dab9074ec112071e62fd51aa CRs-Fixed: 460931 stagefright: Add QCOM_BSP ifdefs for interlaced video handling Change-Id: I856ae4a97f1bf13ab18d386b3486e742a4804b2a Camera : Changes to support camcorder profiles. Change-Id: I9c4bf14f273839fd36d5f52db0f215873e8291a0 av: Ifdef all the things! Change-Id: If9dd6c6442e9d2ac9e55e48369f2da85f5f951f7 Camera: Add profiles for camcorder. Change-Id: Icdaf1fae0018de1fb04f41125cfbe34a91b5eda7 libvideoeditor: use vWidth and vHeight for buffer allocation - video editor detects crop information from decoder, crop width and height will override metadata width and height. - decoder is capable of sending crop information where crop width and height are smaller than actual resolution. - use actual metadata width and height for calculating buffer size. Change-Id: Id1d77c316e3892e6d51a00418052f256629f495f CRs-Fixed: 452511 Add ifdefs around enhanced media types Change-Id: I64b8853660ac4fe90ddb218b237f63b635cdb47b
* qcom-fm: audio: add support for FM featureMingming Yin2013-03-061-1/+9
| | | | | | | | | | Change-Id: Idd5c7a0364710d54809ef5d4c7b2404b22dc4cf6 Conflicts: include/media/IAudioFlinger.h media/libmediaplayerservice/StagefrightRecorder.cpp media/libstagefright/Android.mk
* audioflinger: Fix to set correct volume in Tunnel playbackAmal Paul2013-02-191-0/+1
| | | | | | | | | | | | - After a pause and resume, tunnel playback volume is always set to maximum irrespective of the volume value before pause. - The cause for this is, the stream volume is not used to set the volume in directaudiotrack. - Fix is to use the stream volume to set volume during tunnel playback. Change-Id: I59cda146ed88bd5c4186aeb9ae5d165f4a27493f CRs-fixed: 452285
* frameworks/av : Playing AAC and MP3 clips using LPA.Kalyani polepeddy2013-01-211-0/+1
| | | | | | | | -AAC and MP3 clips are not playing. -AAC and MP3 are not using LPA path. -Enable LPA decoder path and implement LPAPlayer class. Change-Id: I76438319fc72c4898fad5910f8de874f89287687
* Squashed commit of audio changes from CodeAuroravivek mehta2012-12-231-9/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libstagefright: Add QC specific media format - Add QC specific media extensions - Add QC specific media definitions Change-Id: I7dca90be3b977701d9537f5e017117790a030f1f audio: Compile AudioParameter as shared library - AudioParameter as shared lib is needed by BT support in WFD source. Change-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032 libstagefright: Send flush on both i/p and o/p ports together - ANR occurs in music due to race condition in OMX component if flush is issued separately for i/p and o/p ports as DSP only handles simultaneous flush on i/p and o/p ports. Change-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3 libstagefright: Enable extended A\V format - Add new files to support extended A\V format Change-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4 libstagefright: Framework to plug-in propritory parser - Extend the current framework to plug-in propritory parser Change-Id: Ia586a3048420ddf1515261f20035589447263b7b audio: add support for QCOM audio formats - Add support for EVRC, QCELP, and WMA formats. Change-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c frameworks/av: Support Tunnel Playback - Implement DirectTrack and DirectTrackClient - DirectTrack exposes API to client so it can create a direct output. - DirectTrackClient allows notifications to be sent to the client from DirectTrack - DirectTrack is being used for Tunnel Audio Change-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a frameworks/av: Support LPA Playback Add support to enable Playback in LPA mode Change-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3 audio: Send correct channel mask in voice call recording. -Using popCount function to get channel count gives incorrect value on voice call recording. -Only STEREO and MONO bits to be considered to count channels on input Change-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe libstagefright: Thumbnail mode initial commit - use sync frame decoding mode when kClientNeedsFrameBuffer is set for hardware decoders - hardware decoder will only expect I frames, OMXCodec will set EOS on first ETB to stop more frames from being pulled - skip EOS check on FTB so that the first frame will be handled Change-Id: I0e8974e088fdcc468e27764861c128cfe291499f audio: Add support for QCOM's VOIP solution Change-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93 audio: define QCOM audio parameters - Define QCOM audio paramters for FM, VOIP, fluence, SSR, and A2DP Change-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7 Add ifdefs for QCOM enhanced features Change-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c
* bug 7253033 clean up before closing an outputJean-Michel Trivi2012-09-301-0/+5
| | | | | | | | | | An output can only be closed if there is no lock contention that prevents ThreadBase::exit() from being blocked. If an output device is waiting for an operation to complete (here a write in the remote_submix module, because the pipe is full), signal the module that it's entering the "exiting" state. Change-Id: I8248add60da543e90c25a4c809866cdb26255651
* Implement android.media.AudioManager.getProperty()Glenn Kasten2012-09-251-1/+6
| | | | | Bug: 6635041 Change-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224
* audioflinger: send priority request from a threadEric Laurent2012-09-131-6/+56
| | | | | | | | | | | | | | | | | | | When creating a fast AudioTrack, a request is sent to SchedulingPolicyService to elevate the requesting thread priority. This generates a binder call into system_server process and to a JAVA service via JNI. If the thread from which the track was created is in the system_server process and does not have the "can call java" attribute, a crash occurs because the binder optimization reuses the same thread to process the returning binder call and no JNI env is present. The fix consists in sending the priority change request from the AudioFlinger mixer thread, not from the binder thread. This also reverts the workaround in commit 73431968 Bug 7126707. Change-Id: I3347adf71ffbb56ed8436506d4357eab693078a3
* Communicate audio session ID to downmixerJean-Michel Trivi2012-09-101-3/+3
| | | | | | | | The audio downmixer effect might need the audio session Id, pass it from the track creation in AudioFlinger to the downmix effect creation in AudioMixer. Change-Id: I5e29540542ae89cf4a0cdb537b3e67f04442a20a
* audioflinger: changes for new audio devices enumsEric Laurent2012-09-071-6/+9
| | | | | | | | | | | | | | The ThreadBase class now has a separate member for input and output devices (mInDevice, mOutDevice). Only query get_supported_devices() from audio HAL if the function is exposed and if the audio policy manager did not specify the audio module to open. Also fixed bug in AEC preprocessing that would reset to default output device when an input device was given. Change-Id: I19d4d06aeb920b068e3ef31e6e6be6345ce5d67a
* AudioFlinger: send audio source to audio effectsEric Laurent2012-08-311-0/+3
| | | | | | | | Added support for EFFECT_CMD_SET_AUDIO_SOURCE audio effect command to inform preprocessings of current audio source selection for capture. Change-Id: Ib2418a9aa8114e8457fe828ecd43b230ed86cdd6
* Update audio commentsGlenn Kasten2012-08-301-4/+7
| | | | Change-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816
* Move libnbaio out of AudioFlingerGlenn Kasten2012-08-301-3/+3
| | | | | | | | | | libnbaio is now a separate shared library from AudioFlinger, rather than a static library used only by AudioFlinger. AudioBufferProvider interface is now also independent of AudioFlinger, moved to include/media/ Change-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b
* const methodsGlenn Kasten2012-08-131-11/+11
| | | | Change-Id: I92e32ee16274c032c9d0ce910676be2a7fa52471
* AudioFlinger: Better handling for master volume/muteJohn Grossman2012-08-081-73/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry picked from commit 93d906837e0e89aa1d9c913ab2b531b809f9bb9e) > AudioFlinger: Better handling for master volume/mute > > Changes to address bug 6842827. > > When a HAL is loaded, cache whether or not the HAL supports > set_master_volume/mute in the AudioHwDevice structure. Store an > AudioHwDevice in AudioStream(In|Out) structures instead of just an > audio_he_device_t. This give threads (PlaybackThreads in > particular) access to the cached capabilities. > > When setting master volume/mute, change the system to always set the > setting on all HAL which support it and also to set the setting on all > PlaybackThreads. Change PlaybackThreads to apply the setting at the > in SW mix stage of the pipeline if its assigned HAL does not support > the setting, or to ignore the setting of the assigned HAL does support > it. > > Change-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4 > Signed-off-by: John Grossman <johngro@google.com> Change-Id: Icb6bc13764e100a2003eb1dee2231132ab287d98 Signed-off-by: John Grossman <johngro@google.com>
* Change audio flinger to user HAL master mute if availableJohn Grossman2012-08-081-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | (cherry picked from commit 91de9b56282d126ffb36344266af5fee3cefcfdd) > Change audio flinger to user HAL master mute if available > > Hand merge from ics-aah > > > Change audio flinger to user HAL master mute if available: DO NOT MERGE > > > > Replicate the pattern used for HAL master volume support to make use > > of master mute support if the HAL supports it. This is part of the > > change needed to address bug 6828363. Because of the divergences > > between ICS and master, this change will need to be merged by hand. > > > > Signed-off-by: John Grossman <johngro@google.com> > > Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685 > > Change-Id: I32280582905c969aaec2bb166ec5c61df82d737a > Signed-off-by: John Grossman <johngro@google.com> Change-Id: I5cd709187221d307fe25c5117ccaadca5f6b197b Signed-off-by: John Grossman <johngro@google.com>
* Start adding support for multiple record tracksGlenn Kasten2012-08-011-2/+18
| | | | | | | | Replace single mTrack by vector mTracks. Destroy record tracks similarly to playback tracks. Dump all record tracks, in addition to the active record track. Change-Id: I503f10b51928b6b92698fe1c51a9ddd3215df1f4
* Clean up start() parametersGlenn Kasten2012-07-271-5/+4
| | | | | | | | Document where int is used instead of AudioSystem::sync_event_t (probably because of a header file dependency). TrackBase::start() and RecordTrack::start() don't need default parameters. Change-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8
* Extract methods to enter standby and standby modeGlenn Kasten2012-07-271-0/+6
| | | | | | Also move initial standby from to threadLoop to avoid a race condition. Change-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3
* Use valueAt instead of editValueAt when possibleGlenn Kasten2012-07-251-1/+1
| | | | Change-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e
* effect_descriptor_t const correctnessGlenn Kasten2012-07-251-2/+2
| | | | Change-Id: Iad008f20d35a18acf500f773900164552fd0c19e
* Fix races in AudioRecord stop()Glenn Kasten2012-07-251-1/+5
| | | | Change-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c
* Internal dump methods return void not status_tGlenn Kasten2012-07-201-13/+13
| | | | | | Only the IAudioFlinger::dump() needs to return a status_t. Change-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0
* Use audio_devices_t more placesGlenn Kasten2012-07-191-9/+9
| | | | Change-Id: Id0ace02ca6f480a6c46e11880acf6cdc66d83184
* Don't call virtual methods in destructorGlenn Kasten2012-07-161-2/+8
| | | | | | The result of calling virtual methods from a destructor is undefined. Change-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c
* Use atomic ops for thread suspend countGlenn Kasten2012-07-131-4/+21
| | | | | | | There was a theoretical but unlikely race if two binder threads executed suspend() or restore() concurrently. Also added comments. Change-Id: I0908acc810b83bdd66455b27ca3429de1662a2cd
* Add tid parameter to IAudioFlinger::openRecordGlenn Kasten2012-07-121-0/+3
| | | | | | Not yet implemented Change-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4
* Remove dead codeGlenn Kasten2012-07-111-3/+0
| | | | Change-Id: If22a6c4e572b0734eba0c5a7ce29a2c61c581e5d
* Record overflow cleanupGlenn Kasten2012-07-101-3/+4
| | | | | | Add comments and rename one method for clarity Change-Id: I04a9147e46e88a072256c0211b112d52202419e2
* Use audio_channel_mask_t more placesGlenn Kasten2012-07-101-12/+13
| | | | | | | | | | Use it in AudioSystem::getOutput(), AudioSystem::getInput(), IAudioPolicyService::getOutput(), IAudioPolicyService::getInput(), and various other places in AudioFlinger. Not done: AudioTrack and OutputDescriptor. Change-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172
* Add comments on use of volatile for track countGlenn Kasten2012-07-101-4/+7
| | | | | | and add acquire load at the read Change-Id: Ib41a58f5b1f6af87a8bd63d3f77d2ec0e48cb479
* Remove 'volatile' from mMute and add commentsGlenn Kasten2012-07-101-2/+6
| | | | Change-Id: I386ba27b2305a397aba70331c6bf0d35ea727cf6
* Whitespace and indentationGlenn Kasten2012-07-101-3/+2
| | | | Change-Id: I424052b4ff9218147a5cfc8e6dcd67fe8105d229
* AudioFlinger::getBuffer() always returns non-NULLGlenn Kasten2012-07-091-0/+7
| | | | Change-Id: I543d3db507597cacbfdad5d9ea71732137fe54fb
* Only write to mDevice onceGlenn Kasten2012-07-091-5/+21
| | | | | | | This fixes a bug where readers might see intermediate values. Also add comments about how mStandby and mDevice are used. Change-Id: Idc84e56c21381a45137a2ca5ff9c57d437201869
* Remove debug code HAVE_REQUEST_PRIORITY and SOAKERGlenn Kasten2012-07-031-3/+0
| | | | Change-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a
* audioflinger: fix effect disconnect deadlockEric Laurent2012-07-031-6/+14
| | | | | | | | | | | | | | | | Fix possible deadlock when several EffectHandles on the same EffectModule are destroyed simultaneously: A wp on an EffectHandle should not be promoted to a local sp with ThreadBase mutex held as the EffectHandle destructor can be called when the sp gets out of scope which will call ThreadBase::disconnectEffect() and try to acquire the mutex. Use raw pointers instead of weak pointers for the list of handles on an EffectModule. Bug 6679606. Change-Id: Ice8b602fb03a7d363c44ce3dced8a53540d96270
* Use audio_channel_mask_t more consistentlyGlenn Kasten2012-07-031-3/+4
| | | | | | | | | | | | | | | In IAudioFlinger::createTrack() and IAudioFlinger::openRecord(), declare input parameter to use correct type audio_channel_mask_t. In IAudioFlinger::getInputBufferSize(), input parameter is now channel mask instead of channel count. Remove unused IAudioFlinger::channelCount(audio_io_handle_t). In AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(), input parameter is channel mask instead of channel count. Change-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965
* Remove longStandbyExitGlenn Kasten2012-07-031-1/+0
| | | | | | It was never set (the assignment was within an "if" that was never true). Change-Id: I01cc68e9df6b190eece621b2aa9858b4361880ce
* Fix uninitialized field EffectModule::mPinnedGlenn Kasten2012-07-031-2/+2
| | | | | | | Also mark EffectModule::mId and EffectModule::mSessionId const, and document the initialization of other fields in EffectModule. Change-Id: Ic1ca008e75e9b5924743ffc35bef80057f3a0669
* am 651f9e7c: am 717e1286: audioflinger: fix auxiliary effect attachmentEric Laurent2012-07-011-0/+4
|\ | | | | | | | | * commit '651f9e7c972b58a49066081187161268bcf9237a': audioflinger: fix auxiliary effect attachment
| * audioflinger: fix auxiliary effect attachmentEric Laurent2012-06-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | audioflinger: fix setStreamOutput()Eric Laurent2012-06-201-1/+2
|/ | | | | | | | | | | | AudioFlinger::setStreamOutput() should also work for direct outputs. Also ignore the destination output specified to match the expected behavior which is to invalidate all tracks using the specified stream type so that they can be re created on the correct ouput thread. Do not send STREAM_CONFIG_CHANGED event wich is ignored by AudioSystem anyway since the stream to output cache has been removed. Change-Id: I13d9d47922923b630dd755717875424c16be4637
* Add audio watchdog threadGlenn Kasten2012-06-111-0/+3
| | | | Change-Id: I4ed62087bd6554179abb8258d2da606050e762c0
* Reduce underruns in screen off, esp. with EQGlenn Kasten2012-06-081-0/+1
| | | | | | | | | | | | 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
* Take latency and current time into account for visualizationMarco Nelissen2012-06-071-0/+2
| | | | | | | | | | 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
* audioflinger: various fixes on direct outputEric Laurent2012-06-051-9/+0
| | | | | | | | | | | | 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
* State queue dumpGlenn Kasten2012-06-041-0/+4
| | | | | Bug: 6591648 Change-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d
* Fix fast track leak if out of normal track namesGlenn Kasten2012-05-311-1/+2
| | | | | Bug: 6580402 Change-Id: I3ac7f012062c35833147f47ba822eb4bf532a824
* audioflinger: fix effect problem during underrunEric Laurent2012-05-301-0/+4
| | | | | | | | | | | 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