summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IAudioFlinger.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Public API changes for audio offload support.Richard Fitzgerald2013-06-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE: this does _not_ include all private member variables added to classes as part of offload support. Only public/protected functions and stubs functions/variables needed to make the changes buildable. - isOffloadSupported() added to audio policy service A stub implementation is required to build, this always returns false - setParameters() added to IAudioTrack A stub implementation is required to build, this always returns INVALID_OPERATION - CBlk flag for stream end - Change AudioSystem::getRenderPosition() to take an audio_output_t so caller can specify which output to query - Add AudioSystem::isOffloadSupported() This is fully implemented down to the AudioFlinger function AudioPolicyServer::isOffloadSupported() which is just a stub that always returns false. - Add EVENT_STREAM_END to AudioTrack interface. STREAM_END is used to signal when the hardware has actually finished playing all the data it was sent. - Add event type enumeration to media player interface AudioSink callbacks so that the same callback can be used to handle multiple types of event. For offloaded tracks we also have to handle STREAM_END and TEAR_DOWN events - Pass audio_offload_info_t to various functions used for opening outputs, tracks and audio players. This passes additional information about the compressed stream down to the HAL when using offload. For publicly-available APIs this is an optional parameter (for some of the internal and low-level APIs around the HAL interface it is mandatory) - Add getParameters() and setParameters() API to AudioTrack Currently dummy implementations. - Change AudioPlayer contructor so that it takes a set of bitflags defining what options are required. This replaces the original bool which only specified whether to use deep buffering. - Changes to StageFright class definition related to handling tearing-down of an offloaded track when we need to switch back to software decode - Define new StageFright utility functions used for offloaded tracks Currently dummy implementations. - AudioFlinger changes to use extended audio_config_t. Fills in audio_offload_info_t member if this info is passed in when opening an output. - libvideoeditor changes required to add the new event type parameter to AudioSink callback functions - libmediaplayerservice changes required to add the new event type parameter to AudioSink callback functions Change-Id: I3ab41138aa1083d81fe83b886a9b1021ec7320f1 Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Signed-off-by: Eric Laurent <elaurent@google.com>
* Remove unnecessary parameterGlenn Kasten2012-12-181-12/+4
| | | | | | Just get the parameter on server side Change-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15
* Remove last bits of IAudioFlinger::channel_countGlenn Kasten2012-11-301-19/+1
| | | | Change-Id: I9e13678e0aa32a86eb27367a4aff4b32b8aec8cc
* Fix time vs. bytes units bug in getRenderPositionGlenn Kasten2012-11-161-1/+1
| | | | | | | Rename correctLatency since it requires thread to be locked. Use size_t for byte and frame counts. Change-Id: I178fdd18bdb823813b9563927bdff8c0d28ca5a5
* Use size_t for frame countsGlenn Kasten2012-11-151-10/+10
| | | | | | Also fix typo: bufferCount should be frameCount. Change-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5
* Use uint32_t for sample rateGlenn Kasten2012-11-141-1/+1
| | | | Change-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80
* Fix build warningsGlenn Kasten2012-11-141-1/+1
| | | | Change-Id: Ic43bcca166a529a6431711b05a7fa21849b6a38b
* Remove CBLK_FAST from control block flagsGlenn Kasten2012-11-061-3/+9
| | | | | | This is part of a series to clean up the control block. Change-Id: Ic881a3560d9547cb63fcc0cefec87aa3da480e0d
* Line length 100Glenn Kasten2012-11-011-2/+4
| | | | Change-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530
* Implement android.media.AudioManager.getProperty()Glenn Kasten2012-09-251-1/+30
| | | | | Bug: 6635041 Change-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224
* Use audio_channel_mask_t for channel maskGlenn Kasten2012-07-171-1/+1
| | | | Change-Id: I1c1896da48983aa9f1462a4b471f910498816f60
* Add tid parameter to IAudioFlinger::openRecordGlenn Kasten2012-07-121-1/+4
| | | | | | Not yet implemented Change-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4
* Use audio_channel_mask_t more consistentlyGlenn Kasten2012-07-031-10/+15
| | | | | | | | | | | | | | | 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
* Configure policy of mediaserver threadsGlenn Kasten2012-04-221-1/+4
| | | | Change-Id: Ifd825590ba36996064a458f64453a94b84722cb0
* rename audio policy output flagsEric Laurent2012-04-181-2/+2
| | | | Change-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312
* audio policy: load audio hw modules.Eric Laurent2012-04-041-43/+62
| | | | | | | | | | | 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
* IAudioFlinger::createTrack and openRecord flagsGlenn Kasten2012-03-191-9/+6
| | | | | | | | | | | | | | | | | | | | 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
* Whitespace and indentationGlenn Kasten2012-03-131-9/+9
| | | | | | | | | | | | | | 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