summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IAudioFlinger.cpp
Commit message (Collapse)AuthorAgeFilesLines
* IAudioFlinger: fix the missing initialization of variable to ensure no info ↵Wei Jia2015-09-281-1/+1
| | | | | | | leak when writing them to Parcel. Bug: 23953967 Change-Id: I3a1d0144ba3832649e322c197ff0f03305ee7829
* IAudioFlinger: always initialize variables to ensure no info leak when ↵Wei Jia2015-09-281-11/+11
| | | | | | | writing them to Parcel. Bug: 23953967 Change-Id: Ibbe841da149038675e9e8daea76c77558bc8564b
* IAudioFlinger: clear config before reading it from parcel.Wei Jia2015-09-281-10/+20
| | | | | | Bug: 23905951 Bug: 23912202 Change-Id: Id13a9d3cae2c09e7381b841e67ddfb188274d74c
* audio flinger: do not call JAVA services until system is readyEric Laurent2015-05-201-1/+13
| | | | | | | | Wait for system ready indication form AudioService before enabling calls to scheduling service or power manager. Bug: 11520969. Change-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf
* AudioRecord keeps track of UIDJean-Michel Trivi2015-05-051-1/+4
| | | | | | Bug 20832981 Change-Id: If5f3c61fae02d86b9d6fdf411711f854fd56c77d
* Fix build.Dianne Hackborn2015-04-291-1/+1
| | | | Change-Id: Ic8ae065dd912cb5ff130e8d78c98fd6bed4e11cc
* Respect the record audio app op - mediaSvet Ganov2015-04-291-4/+9
| | | | Change-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b
* IAudioFlinger: add checks on binder callsEric Laurent2015-04-021-10/+36
| | | | | | | | | | Limit number of ports and patches listed by LIST_AUDIO_PATCHES and LIST_AUDIO_PORTS. Also fix typo causing wrong pointer to be used when writing to Parcel. Bug: 19573085. Change-Id: I41a9c710e45738a4f11990160587856c429a4646
* namespace does not need a closing semicolonGlenn Kasten2015-03-231-1/+1
| | | | Change-Id: Ie8f9d42fc061f6d558f23b98414e04eb3d14b376
* Update calls to IInterface::asBinder()Marco Nelissen2014-11-141-10/+8
| | | | | | to use the new static version. Change-Id: I89a5988a0ac694ffc04d88cf939e8455bf925d4c
* Fix crash from the this == NULL change.Dan Albert2014-10-181-3/+5
| | | | Change-Id: If6cdca1319fffa53846eb40b5f568fc4b161abaa
* AudioSystem: add API to query audio HW sync sourceEric Laurent2014-08-061-1/+18
| | | | | | | | | | | Add a method to query from the audio HAL the HW sync source used for a given audio session. Modify audio policy to select a direct output with HW sync when requested. Bug: 16132368. Change-Id: I03038f9188f2d389f8a5fd76a671854013a4513e
* rename AudioSystem::newAudioSessionId()Eric Laurent2014-07-281-3/+3
| | | | | | | | | Rename AudioSystem::newAudioSessionId() to AudioSystem::newAudioUniqueId() as it can be used also for I/O handles. Bug: 12378680. Change-Id: I611ea3b5eb57a4b0774437f477ee87dc4ccc2cc2
* AudioFlinger: update openInput() and openOutput()Eric Laurent2014-07-281-119/+82
| | | | | | | | | | Add parameters to openInput() and openOutput(): device address, input source. Allow caller to specify a given I/O handle Group parameters in a struct audio_config. Bug: 12378680. Change-Id: I7e9af74c0d996561cc13cbee7d9012d2daf33025
* Move AudioRecord frame count calculations to serverGlenn Kasten2014-07-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Buffer frame count and notification frame count are now calculated by server instead of by client. The server has more information and can do a better job. Also fix a few bugs: - If a fast track was re-created, even with same pipe depth, it would fail. Now it can correctly re-create a fast track provided the pipe depth is same. - Notification frame count for fast tracks was calculated by client as 1/2 of the total frame count, which is a large value due to the pipe. Now the notification frame count is set by server to the HAL frame count. This should reduce latency for fast tracks. - EVENT_OVERRUN were happening frequently when there was sample rate conversion, because the client didn't know about the sample rate conversion, and under-estimated the necessary buffer size. Now since server calculates the buffer sizes, EVENT_OVERRUN is unlikely. - RecordThread::createRecordTrack_l was checking for mono and stereo for fast tracks. This is not necessary, and now we can handle a multi-channel fast track. Bug: 7498763 Change-Id: I0c581618e8db33084d5ff9ed50a592990c9749e8
* Add audio_input_flags_t to IAudioFlinger::openInputGlenn Kasten2014-07-171-2/+6
| | | | | | | For backward compatibility, until flags are correctly calculated, we will assume that the request is for a low latency input stream. Change-Id: I76746834e870df00833dc77cbdaa2edd2ffeec95
* IAudioFlinger::openRecord now suggests notificationFramesGlenn Kasten2014-07-031-0/+8
| | | | Change-Id: I08885cc381d03c522a23289e74f0e1ed46563863
* IAudioFlinger interface extension for patch panelEric Laurent2014-05-271-1/+171
| | | | Change-Id: Iaabe0a7e315d5725e00a74a6ed40339b98f20330
* IAudioFlinger::openRecord returns IMemory(s)Glenn Kasten2014-05-091-4/+30
| | | | | | | | openRecord() now explicitly returns the control block and data buffer as separate IMemory references. If the IMemory for data buffer is 0, this means it immediately follows the control block. Change-Id: Ic098f88f0e037f8fbe30006689e18cacacf09d06
* resolved conflicts for merge of 47c888a9 to masterGlenn Kasten2014-05-021-14/+14
|\ | | | | | | Change-Id: I4ba2fdc6374a93a892bb7651b0d174e495f09bf6
| * When passing a size_t via binder, use 64-bits unconditionallyGlenn Kasten2014-02-131-10/+10
| | | | | | | | | | | | | | | | | | 64-bits is almost always over-kill. But it's easier and cleaner to change the binder code to be accurate, than to rename all the the API parameter types to be 32-bit. Bug: 12381724 Change-Id: Ib8f198d814a2027760ef24e9e3feacee21a973b1
* | Update commentsGlenn Kasten2014-03-261-0/+2
| | | | | | | | Change-Id: I5776313b9b49072cd666d28880f0d07cc73f827b
* | Merge "Use symbol AUDIO_DEVICE_NONE from <system/audio.h>"Glenn Kasten2014-03-261-2/+2
|\ \
| * | Use symbol AUDIO_DEVICE_NONE from <system/audio.h>Glenn Kasten2014-03-251-2/+2
| | | | | | | | | | | | Change-Id: I61f882c5e7c949bf00d3bfc745ebf3b5e1c42a58
* | | Document AudioSystem::newAudioSessionId() failuresGlenn Kasten2014-03-251-1/+1
|/ / | | | | | | Change-Id: Iaa168722f362c36bdfa87fe20dc0a59b43cf1ca3
* | Remove name output parameter from createTrackGlenn Kasten2014-03-141-5/+1
| | | | | | | | | | | | | | It was only used for one log. A better solution will be a per-track unique ID. Change-Id: Ia440e02ae4a5a4019a9a2d08970e1ee93ac4c3a3
* | Rename setStreamOutput to invalidateStreamGlenn Kasten2014-02-281-8/+6
| | | | | | | | | | | | And simplify by removing the unused I/O handle parameter 'output'. Change-Id: Ie9c4df17a7378066312d4ed8790fda7a9125c95e
* | Fix warning due to incorrect log formatGlenn Kasten2014-02-181-1/+1
| | | | | | | | Change-Id: I58ff399ace74965ebf8e5690c20637385f9425ad
* | Track pid for each sessionMarco Nelissen2014-02-111-4/+8
| | | | | | | | | | | | so they can be properly freed. Change-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3
* | resolved conflicts for merge of 566be7c3 to masterNarayan Kamath2014-02-111-3/+3
|\ \ | |/ | | | | Change-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce
| * Make frameworks/av 64-bit compatibleKévin PETIT2014-02-111-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Contains the necessary changes to make frameworks/av build and work on a 64-bit machine. Signed-off-by: Craig Barber <craig.barber@arm.com> Signed-off-by: Kévin PETIT <kevin.petit@arm.com> Signed-off-by: Ashok Bhat <ashok.bhat@arm.com> Signed-off-by: Marcus Oakland <marcus.oakland@arm.com> Change-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43
| * Assign blame for playback wakelocks.Marco Nelissen2013-10-251-1/+4
| | | | | | | | | | | | | | | | | | | | | | Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Cherrypicked from master. b/9464621 Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
* | Merge "Replace control block frameCount_ by explicit in/out parameter"Glenn Kasten2014-01-241-4/+16
|\ \
| * | Replace control block frameCount_ by explicit in/out parameterGlenn Kasten2013-12-201-4/+16
| | | | | | | | | | | | | | | | | | in IAudioFlinger::createTrack and IAudioFlinger::openRecord Change-Id: I09c644c80e92c8e744b1b99055988a2588b2a83d
* | | Merge "Cleanup createTrack error handling"Glenn Kasten2014-01-171-0/+12
|\ \ \
| * | | Cleanup createTrack error handlingGlenn Kasten2014-01-161-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to cleanup done earlier for openRecord in this CL: > Change-Id: I84897dd7d30b370640b54e928f230604b873cb68 Bug: 10888816 Change-Id: I804a47f898e0319a60a9bd58906bbb037e45cc25
* | | | AudioRecord::getInputFramesLost() cleanupGlenn Kasten2014-01-141-4/+7
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed bug that if the binder call failed (for example if the IAudioFlinger binder is dead), then getInputFramesLost was returning garbage. Now it correctly returns zero, which is the error value for this method. The type declarations for getInputFramesLost were inconsistent: a mixture of unsigned int, size_t, and uint32_t. Now it returns uint32_t everywhere, which is what the underlying HAL API returns. Added a FIXME about the side effect behavior. This will need review for multi-client. Change-Id: Ifa2e117a87dbd0c1f2c892a31d1c3dd919bf1a0a
* | | Use AUDIO_SESSION_ALLOCATE instead of 0Glenn Kasten2013-12-201-2/+2
|/ / | | | | | | | | | | | | Also fix a couple of places where we were using AUDIO_SESSION_OUTPUT_MIX, which happens to also be equal to 0, but has a different meaning. Change-Id: I90e39be3b89f5021a96d9e3b8d10929013ca977f
* | Assign blame for playback wakelocks.Marco Nelissen2013-10-251-1/+4
| | | | | | | | | | | | | | Set a work source for the playback wakelock, so that playback is counted against the requesting app instead of the media server. Change-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31
* | resolved conflicts for merge of 9a7d11f0 to masterGlenn Kasten2013-10-071-0/+12
|\ \ | |/ | | | | Change-Id: Ie4d101185a93d37ec280f608813ad62a077a584e
| * Merge "Cleanup openRecord error handling" into klp-devGlenn Kasten2013-10-071-0/+12
| |\
| | * Cleanup openRecord error handlingGlenn Kasten2013-09-241-0/+12
| | | | | | | | | | | | | | | Bug: 10888816 Change-Id: I84897dd7d30b370640b54e928f230604b873cb68
* | | am 8ee02943: am 1c7f35d1: Merge "soundpool: allocate shared memory heap by ↵Eric Laurent2013-09-241-5/+22
|\ \ \ | |/ / | | | | | | | | | | | | | | | client" into klp-dev * commit '8ee02943b61e0a7dd78e5596720261b185a223d5': soundpool: allocate shared memory heap by client
| * | soundpool: allocate shared memory heap by clientEric Laurent2013-09-241-5/+22
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current SoundPool implementation allocates the shared memory heap containing decoded PCM samples in mediaserver process. When mediaserver process crashes, the shared memory heaps allocated by AudioCache cannot be mapped anymore in the new instance of mediaserver. This causes a silent failure to end playback of new sounds because AudioFlinger believes the new AudioTracks are opened in streaming mode and not static mode: it sees a NULL shared memory pointer when the track is created. The fix consists in allocating the memory heap in the client process. Thus the heap is not lost when mediaserver restarts. The global memory usage is the same as this is shared memory. Also added a way to detect that a shared memory is passed when the track is created but cannot be mapped on mediaserver side. Also fix a crash in SoundPool when ALOGV is enabled. Bug: 10894793. Change-Id: Ice6c66ec3b2a409d75dc903a508b6c6fbfb2e8a7
* | Consistent style for comparisons of raw pointers to NULLGlenn Kasten2013-08-061-16/+34
|/ | | | Change-Id: Iec102a5ccb2fe69229887b5432cd1fb66f26f0cf
* IAudioFlinger::openRecord track_flags_t flags is in/outGlenn Kasten2013-08-021-3/+9
| | | | | | This will allow AudioFlinger to tell client it is denying a request. Change-Id: Iff2be3ad6636371bbda9c9899a283c94620c1f06
* Move control block mName to createTrack() outputGlenn Kasten2013-07-301-1/+5
| | | | | | | This is part of a series of CLs to clean up the shared memory control block, by removing any fields that don't have to be there. Change-Id: I6e51003a1293b6800258c31b22cff2eba42162e7
* libmedia: offloaded playback supportRichard Fitzgerald2013-07-251-2/+13
| | | | | | | | | | | | | | | | | | | | | | | | | - start() returns a status so that upper layers can recreate a non offloaded track in case of error. - Added states to handle offloaded tracks specific: - waiting for stream end (drain) notification by audio flinger - allow pause while waiting for stream end notification - getPosition() queries the render position directly from audio HAL. - disable APIs not applicable to offloaded tracks - Modified track restoring behavior for invalidated offloaded tracks: just send the callback and wait for upper layers to create a new track. - Added wait for stream end management in audio track client proxy. Similar to obtainBuffer and should be factored in. Change-Id: I0fc48117946364cb255afd653195498891f622bd Signed-off-by: Eric Laurent <elaurent@google.com>
* Use AudioSystem::setLowRamDevice() to configure memoryGlenn Kasten2013-07-191-0/+16
| | | | | Bug: 9798886 Change-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0
* Explicitly compare raw pointers to NULLGlenn Kasten2013-07-021-18/+20
| | | | Change-Id: Id2c7828a36a6912333465475b21fa87e294c83c7