diff options
Diffstat (limited to 'media/libmedia/AudioRecord.cpp')
-rw-r--r-- | media/libmedia/AudioRecord.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index e5062ab..1d8e15b 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -80,7 +80,8 @@ status_t AudioRecord::getMinFrameCount( // --------------------------------------------------------------------------- AudioRecord::AudioRecord() - : mStatus(NO_INIT), mSessionId(0) + : mStatus(NO_INIT), mSessionId(0), + mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT) { } @@ -95,7 +96,8 @@ AudioRecord::AudioRecord( void* user, int notificationFrames, int sessionId) - : mStatus(NO_INIT), mSessionId(0) + : mStatus(NO_INIT), mSessionId(0), + mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(ANDROID_TGROUP_DEFAULT) { mStatus = set(inputSource, sampleRate, format, channelMask, frameCount, flags, cbf, user, notificationFrames, sessionId); @@ -132,7 +134,7 @@ status_t AudioRecord::set( int sessionId) { - LOGV("set(): sampleRate %d, channelMask %d, frameCount %d",sampleRate, channelMask, frameCount); + ALOGV("set(): sampleRate %d, channelMask %d, frameCount %d",sampleRate, channelMask, frameCount); AutoMutex lock(mLock); @@ -168,7 +170,7 @@ status_t AudioRecord::set( } else { mSessionId = sessionId; } - LOGV("set(): mSessionId %d", mSessionId); + ALOGV("set(): mSessionId %d", mSessionId); audio_io_handle_t input = AudioSystem::getInput(inputSource, sampleRate, @@ -187,7 +189,7 @@ status_t AudioRecord::set( if (status != NO_ERROR) { return status; } - LOGV("AudioRecord::set() minFrameCount = %d", minFrameCount); + ALOGV("AudioRecord::set() minFrameCount = %d", minFrameCount); if (frameCount == 0) { frameCount = minFrameCount; @@ -287,7 +289,7 @@ status_t AudioRecord::start() status_t ret = NO_ERROR; sp<ClientRecordThread> t = mClientRecordThread; - LOGV("start"); + ALOGV("start"); if (t != 0) { if (t->exitPending()) { @@ -326,9 +328,11 @@ status_t AudioRecord::start() cblk->bufferTimeoutMs = MAX_RUN_TIMEOUT_MS; cblk->waitTimeMs = 0; if (t != 0) { - t->run("ClientRecordThread", ANDROID_PRIORITY_AUDIO); + t->run("ClientRecordThread", ANDROID_PRIORITY_AUDIO); } else { - setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_AUDIO); + mPreviousPriority = getpriority(PRIO_PROCESS, 0); + mPreviousSchedulingGroup = androidGetThreadSchedulingGroup(0); + androidSetThreadPriority(0, ANDROID_PRIORITY_AUDIO); } } else { mActive = 0; @@ -346,7 +350,7 @@ status_t AudioRecord::stop() { sp<ClientRecordThread> t = mClientRecordThread; - LOGV("stop"); + ALOGV("stop"); if (t != 0) { t->mLock.lock(); @@ -363,7 +367,8 @@ status_t AudioRecord::stop() if (t != 0) { t->requestExit(); } else { - setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_NORMAL); + setpriority(PRIO_PROCESS, 0, mPreviousPriority); + androidSetThreadSchedulingGroup(0, mPreviousSchedulingGroup); } } @@ -739,7 +744,7 @@ bool AudioRecord::processAudioBuffer(const sp<ClientRecordThread>& thread) // Manage overrun callback if (mActive && (cblk->framesAvailable() == 0)) { - LOGV("Overrun user: %x, server: %x, flags %04x", cblk->user, cblk->server, cblk->flags); + ALOGV("Overrun user: %x, server: %x, flags %04x", cblk->user, cblk->server, cblk->flags); if (!(android_atomic_or(CBLK_UNDERRUN_ON, &cblk->flags) & CBLK_UNDERRUN_MSK)) { mCbf(EVENT_OVERRUN, mUserData, 0); } @@ -798,7 +803,7 @@ status_t AudioRecord::restoreRecord_l(audio_track_cblk_t*& cblk) result = status_t(STOPPED); } } - LOGV("restoreRecord_l() status %d mActive %d cblk %p, old cblk %p flags %08x old flags %08x", + ALOGV("restoreRecord_l() status %d mActive %d cblk %p, old cblk %p flags %08x old flags %08x", result, mActive, mCblk, cblk, mCblk->flags, cblk->flags); if (result == NO_ERROR) { |