summaryrefslogtreecommitdiffstats
path: root/services/audioflinger
Commit message (Collapse)AuthorAgeFilesLines
* RecordThread::createRecordTrack_l use flags for fast tracksGlenn Kasten2013-08-022-0/+59
| | | | | | | Look at client's request for a fast track in the flags parameter, and check whether the request can be satisfied. Change-Id: I65ddaeb1b85670fe9066076f638bfed0cda01c0d
* RecordTrack::createRecordTrack_l flags are in/outGlenn Kasten2013-08-023-3/+3
| | | | | | | | The flags are currently unused, but will be used for requesting a fast track. Making flags in/out will allow reporting back up to client that the request is denied. Change-Id: Ifbee57da3632ce130551065a426577fb97b1a68d
* IAudioFlinger::openRecord track_flags_t flags is in/outGlenn Kasten2013-08-022-3/+3
| | | | | | This will allow AudioFlinger to tell client it is denying a request. Change-Id: Iff2be3ad6636371bbda9c9899a283c94620c1f06
* Merge "Report underruns for fast tracks also"Glenn Kasten2013-08-023-16/+8
|\
| * Report underruns for fast tracks alsoGlenn Kasten2013-07-313-16/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a regression that was introduced earlier by commit 9f80dd223d83d9bb9077fb6baee056cee4eaf7e5 called "New control block for AudioTrack and AudioRecord". That commit broke underrun reporting for fast tracks. Also remove Track::mUnderrunCount, which counted the number of underrun events, and was only used by dumpsys media.audio_flinger. Now dumpsys media.audio_flinger reports the number of underrun frames, Isolated underrun-related control block accesses via the proxy, so that the server is not directly poking around in the control block. The new proxy APIs are AudioTrackServerProxy::getUnderrunFrames() and AudioTrackServerProxy::tallyUnderrunFrames(). getUnderrunFrames() returns a rolling counter for streaming tracks, or zero for static buffer tracks which never underrun, but do a kind of 'pause' at end of buffer. tallyUnderrunFrames() increments the counter by a specified number of frames. Change-Id: Ib31fd73eb17cbb23888ce3af8ff29f471f5bd5a2
* | am 6d4d8790: am b687ff9f: Merge "Fix mismatched delete/new couple"Glenn Kasten2013-08-011-2/+2
|\ \ | |/ |/| | | | | * commit '6d4d879037a495f9a4276a6996d1845594ce9090': Fix mismatched delete/new couple
| * Fix mismatched delete/new coupleAndrei V. FOMITCHEV2013-07-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | In RecordThread::readInputParameters(), mRsmpInBuffer is allocated with new[] and should be freed with delete[] instead of delete. This error has been found by valgrind. Change-Id: I2f947abb658a21a7d1e61eebb99270cb37d2d147 Signed-off-by: Andrei V. FOMITCHEV <andreix.fomitchev@intel.com> Signed-off-by: David Wagner <david.wagner@intel.com> Signed-off-by: Jack Ren <jack.ren@intel.com> Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
* | Merge "Add resampler comments and fix a typo"Glenn Kasten2013-07-304-4/+16
|\ \
| * | Add resampler comments and fix a typoGlenn Kasten2013-07-304-4/+16
| | | | | | | | | | | | Change-Id: Ie071673875f663de4212eed4a4dff89d51a5a915
* | | Move control block mName to createTrack() outputGlenn Kasten2013-07-304-2/+6
| | | | | | | | | | | | | | | | | | | | | 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
* | | Rename control block flags to mFlagsGlenn Kasten2013-07-302-11/+11
| | | | | | | | | | | | Change-Id: I7b6d31e24531954ab1ecdf3ed56c19433700bd89
* | | Merge "AudioRecord and HAL input stream must be 16-bit PCM only"Glenn Kasten2013-07-302-7/+17
|\ \ \
| * | | AudioRecord and HAL input stream must be 16-bit PCM onlyGlenn Kasten2013-07-242-7/+17
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently there are 16-bit PCM assumptions in several places for capture: - resampler API - mRsmpInBuffer and mRsmpOutBuffer - RecordThread::threadLoop upmix, downmix, and resampling - possibly other places Until those assumptions are removed, this CL enforces 16-bit PCM in both client and server at all places where a format is checked. Change-Id: I08b0570bff626ad0d341804825a72c14e61b4233
* | | Rename control block server to mServer and add commentsGlenn Kasten2013-07-302-9/+10
| | | | | | | | | | | | Change-Id: Ieabd91acee92d0e84e66fbd358df5282b856306e
* | | Merge "Fix theoretical race using TrackBase::sampleRate()"Glenn Kasten2013-07-302-5/+8
|\ \ \
| * | | Fix theoretical race using TrackBase::sampleRate()Glenn Kasten2013-06-262-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In two places we assumed that TrackBase::sampleRate() would return the same value when it is called twice in the same function. This is not guaranteed; sampleRate() reads from the control block so the return value could change. To fix this, only call sampleRate() once and cache the return value to get a consistent value. This was only a theoretical race. In MixerThread::prepareTracks_l() it would have no bad effect. In TimedTrack::getNextBuffer() it could cause a real problem, but we don't currently support dynamic sample rate ratios for timed tracks. Change-Id: I8e5c33f0121fc058d1e70c2ab5e9135397d3e0b7
* | | | Remove CC_LIKELY and CC_UNLIKELY where not neededGlenn Kasten2013-07-293-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | Only keep them in performance-sensitive code Change-Id: Ib257ddd7bc39ce9896997ffae008c524ac743d01
* | | | Rename RecordThread::mInputBytes to the more generic mBufferSizeGlenn Kasten2013-07-292-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | This prepares for using it in PlaybackThreads later Change-Id: Id90a92aa6372e4b69914b0008cef07296ca5d6a3
* | | | Move members from ThreadBase to PlaybackThreadGlenn Kasten2013-07-292-12/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Move mNormalFrameCount and frameCountHAL(), since they're not used by record threads. Also comment which fields are updated by readParameters(). Change-Id: I5fc0a8a89cc637976f22d49271a5a3e136dab4e1
* | | | Merge "Use standard name and type for channel mask"Glenn Kasten2013-07-291-3/+3
|\ \ \ \
| * | | | Use standard name and type for channel maskGlenn Kasten2013-07-241-3/+3
| | |/ / | |/| | | | | | | | | | | | | | | | | | Former name 'channels' was ambiguous with respect to channel count. Change-Id: I716f792d95a7e0c787d27514ad6e93dbcef8a415
* | | | Merge "Simplify getParameters()"Glenn Kasten2013-07-291-12/+6
|\ \ \ \
| * | | | Simplify getParameters()Glenn Kasten2013-07-251-12/+6
| |/ / / | | | | | | | | | | | | Change-Id: Iedfeca3cd477d023c350d6d4e6eed874ee467a32
* | | | Treat mChannelCount as uint32_t consistentlyGlenn Kasten2013-07-293-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | mChannelCount was 8-, 16-, or 32-bits Change-Id: I2cc2fedf3e33144e5c8bbd9894763282d9217f63
* | | | Merge "Move local variable declarations to point of first use"Glenn Kasten2013-07-292-3/+2
|\ \ \ \
| * | | | Move local variable declarations to point of first useGlenn Kasten2013-07-252-3/+2
| |/ / / | | | | | | | | | | | | Change-Id: Ideb83dea2c3002651c34fa646753cba598e29e93
* | | | Merge "Declare methods in binder opcode order"Glenn Kasten2013-07-292-5/+6
|\ \ \ \
| * | | | Declare methods in binder opcode orderGlenn Kasten2013-07-292-5/+6
| | | | | | | | | | | | | | | | | | | | Change-Id: I5f624b7a51ffe1a17a67c056cf984f74e4c56eac
* | | | | Merge "Remove obsolete mBufferEnd"Glenn Kasten2013-07-292-7/+3
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | Remove obsolete mBufferEndGlenn Kasten2013-07-292-7/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: I507c6109d66000bb30933ca23b912a1316f55e5e
* | | | | Merge "Move delete AudioMixer closer to point of re-allocation"Glenn Kasten2013-07-291-3/+1
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | Move delete AudioMixer closer to point of re-allocationGlenn Kasten2013-07-251-3/+1
| |/ / / | | | | | | | | | | | | | | | | | | | | No need to delete AudioMixer before readOutputParameters Change-Id: Icafa785c9021bbe8d985e4f9527f8fc8c5e62622
* | | | Remove obsolete TrackBase::step(), mStepCount, mStepServerFailedGlenn Kasten2013-07-292-15/+6
| | | | | | | | | | | | | | | | Change-Id: I6347096f066b8b19451c6472db7b0671f0cf7702
* | | | Merge "Simplify RecordTrack::stop()"Glenn Kasten2013-07-293-8/+4
|\ \ \ \
| * | | | Simplify RecordTrack::stop()Glenn Kasten2013-07-253-8/+4
| | | | | | | | | | | | | | | | | | | | Change-Id: Ib959c1e9dc9544d12277ce11bea445118b2e0521
* | | | | Merge "CBLK_OVERRUN, not CBLK_UNDERRUN, is for record threads"Glenn Kasten2013-07-271-3/+0
|\ \ \ \ \ | |/ / / /
| * | | | CBLK_OVERRUN, not CBLK_UNDERRUN, is for record threadsGlenn Kasten2013-07-251-3/+0
| | | | | | | | | | | | | | | | | | | | Change-Id: I8948f76ef4717a423c37cd6ea7db4381636af612
* | | | | Merge "Remove obsolete TrackBase::reset()"Glenn Kasten2013-07-262-8/+0
|\ \ \ \ \ | |/ / / /
| * | | | Remove obsolete TrackBase::reset()Glenn Kasten2013-07-252-8/+0
| |/ / / | | | | | | | | | | | | Change-Id: I38100b7e28a12d7af8cb40ae3f4d9cb4a0ebe701
* | | | Merge "HAL stream format for mixer output threads must be stereo 16-bit PCM"Glenn Kasten2013-07-262-3/+20
|\ \ \ \
| * | | | HAL stream format for mixer output threads must be stereo 16-bit PCMGlenn Kasten2013-07-252-3/+20
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Direct and tunnel output threads can support various HAL stream formats, included encoded. But currently there are stereo 16-bit PCM assumptions in several places for mixer and duplicating output threads: - mMixBuffer and mixBuffer() - AudioMixer including resampler - FastMixer's mixBuffer - effects - NBAIO_Format - anywhere FCC_2 is used - possibly other places Until those assumptions are removed, this CL enforces stereo 16-bit PCM in mixer and duplicating threads at the place where the HAL format is read. It was already being checked in checkForNewParameters_l(), but not in readOutputParameters(). Change-Id: Ibe344cc922743da234299097aa1bb1f54795cc9b
* | | | AudioFlinger: offload playback, non-blocking writeEric Laurent2013-07-2511-321/+1153
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Added specialized playback thread class for offload playback, derived from directoutput thread. This thread type handles specific state transitions for offloaded tracks and offloading commands (pause/resume/drain/flush..) to audio HAL. As opposed to other threads, does not go to standby if the track is paused. - Added support for asynchronous write and drain operations at audio HAL. Use a thread to handle async callback events from HAL: this avoids locking playback thread mutex when executing the callback and cause deadlocks when calling audio HAL functions with the playback thread mutex locked. - Better accouting for track activity: call start/stop and release Output methods in audio policy manager when tracks are actually added and removed from the active tracks list. Added a command thread in audio policy service to handle stop/release commands asynchronously and avoid deadlocks with playback thread. - Track terminated status is not a state anymore. This condition is othogonal to state to permitted state transitions while terminated. Change-Id: Id157f4b3277620568d8eace7535d9186602564de
* | | Merge "Use AudioSystem::setLowRamDevice() to configure memory"Glenn Kasten2013-07-225-18/+80
|\ \ \
| * | | Use AudioSystem::setLowRamDevice() to configure memoryGlenn Kasten2013-07-195-18/+80
| | | | | | | | | | | | | | | | | | | | Bug: 9798886 Change-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0
* | | | Merge "Revert "Fix Audioflinger crash when TeeSink is enabled""Glenn Kasten2013-07-221-3/+2
|\ \ \ \ | |/ / /
| * | | Revert "Fix Audioflinger crash when TeeSink is enabled"Glenn Kasten2013-07-191-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 84e391686d7eced293913d1d7993721224ee0ba1. Bug: 8834855 Change-Id: I8211ef5ea5d87d97ada115723df31c8057f38ca8
* | | | Merge "Fix compile warning"Glenn Kasten2013-07-221-1/+1
|\ \ \ \ | |/ / / |/| | |
| * | | Fix compile warningGlenn Kasten2013-07-191-1/+1
| | | | | | | | | | | | | | | | Change-Id: I80de4a013dc65eb7c532561438fd10e005354c03
* | | | Make AudioFlinger::instantiate() more resilient when called from separate moduleGlenn Kasten2013-07-1913-21/+69
|/ / / | | | | | | | | | | | | Bug: 8834855 Change-Id: I4cd842cdfb09d2aaaaab9df9ac3bec6179709bd3
* | | Fix theoretical memory leak in mConfigEventsGlenn Kasten2013-07-172-0/+7
| | | | | | | | | | | | Change-Id: I137f70676c8919661e716c33e0dd9c25c2b6285c