From f20e1d8df84c5fbeeace0052d100982ae39bb7a4 Mon Sep 17 00:00:00 2001 From: Glenn Kasten Date: Fri, 12 Jul 2013 09:45:18 -0700 Subject: [PATCH] Rename control block server to mServer and add comments Change-Id: Ieabd91acee92d0e84e66fbd358df5282b856306e --- include/private/media/AudioTrackShared.h | 9 ++++++--- media/libmedia/AudioTrackShared.cpp | 6 +++--- services/audioflinger/Threads.cpp | 15 ++++++++------- services/audioflinger/Tracks.cpp | 4 ++-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h index b8901801ca..e950b9e5ef 100644 --- a/include/private/media/AudioTrackShared.h +++ b/include/private/media/AudioTrackShared.h @@ -89,8 +89,11 @@ struct audio_track_cblk_t // The data members are grouped so that members accessed frequently and in the same context // are in the same line of data cache. - volatile uint32_t server; // updated asynchronously by server, - // "for entertainment purposes only" + uint32_t mServer; // Number of filled frames consumed by server (mIsOut), + // or filled frames provided by server (!mIsOut). + // It is updated asynchronously by server without a barrier. + // The value should be used "for entertainment purposes only", + // which means don't make important decisions based on it. size_t frameCount_; // used during creation to pass actual track buffer size // from AudioFlinger to client, and not referenced again @@ -235,7 +238,7 @@ public: void interrupt(); size_t getPosition() { - return mEpoch + mCblk->server; + return mEpoch + mCblk->mServer; } void setEpoch(size_t epoch) { diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp index aa45a2fdbe..e5f7fcd12d 100644 --- a/media/libmedia/AudioTrackShared.cpp +++ b/media/libmedia/AudioTrackShared.cpp @@ -26,7 +26,7 @@ extern "C" { namespace android { audio_track_cblk_t::audio_track_cblk_t() - : server(0), frameCount_(0), mFutex(0), mMinimum(0), + : mServer(0), frameCount_(0), mFutex(0), mMinimum(0), mVolumeLR(0x10001000), mSampleRate(0), mSendLevel(0), mName(0), flags(0) { memset(&u, 0, sizeof(u)); @@ -594,7 +594,7 @@ void ServerProxy::releaseBuffer(Buffer* buffer) android_atomic_release_store(stepCount + rear, &cblk->u.mStreaming.mRear); } - mCblk->server += stepCount; + mCblk->mServer += stepCount; size_t half = mFrameCount / 2; if (half == 0) { @@ -805,7 +805,7 @@ void StaticAudioTrackServerProxy::releaseBuffer(Buffer* buffer) } mPosition = newPosition; - cblk->server += stepCount; + cblk->mServer += stepCount; cblk->u.mStatic.mBufferPosition = newPosition; if (setFlags != 0) { (void) android_atomic_or(setFlags, &cblk->flags); diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 62e2e1e4ba..2bb6495212 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -2903,7 +2903,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac if ((framesReady >= minFrames) && track->isReady() && !track->isPaused() && !track->isTerminated()) { - ALOGVV("track %d s=%08x [OK] on thread %p", name, cblk->server, this); + ALOGVV("track %d s=%08x [OK] on thread %p", name, cblk->mServer, this); mixedTracks++; @@ -2932,7 +2932,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac param = AudioMixer::RAMP_VOLUME; } mAudioMixer->setParameter(name, AudioMixer::RESAMPLE, AudioMixer::RESET, NULL); - } else if (cblk->server != 0) { + // FIXME should not make a decision based on mServer + } else if (cblk->mServer != 0) { // If the track is stopped before the first frame was mixed, // do not apply ramp param = AudioMixer::RAMP_VOLUME; @@ -3069,7 +3070,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac chain->clearInputBuffer(); } - ALOGVV("track %d s=%08x [NOT READY] on thread %p", name, cblk->server, this); + ALOGVV("track %d s=%08x [NOT READY] on thread %p", name, cblk->mServer, this); if ((track->sharedBuffer() != 0) || track->isTerminated() || track->isStopped() || track->isPaused()) { // We have consumed all the buffers of this track. @@ -3483,7 +3484,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep if ((track->framesReady() >= minFrames) && track->isReady() && !track->isPaused() && !track->isTerminated()) { - ALOGVV("track %d u=%08x, s=%08x [OK]", track->name(), cblk->user, cblk->server); + ALOGVV("track %d s=%08x [OK]", track->name(), cblk->mServer); if (track->mFillingUpStatus == Track::FS_FILLED) { track->mFillingUpStatus = Track::FS_ACTIVE; @@ -3508,7 +3509,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep mEffectChains[0]->clearInputBuffer(); } - ALOGVV("track %d u=%08x, s=%08x [NOT READY]", track->name(), cblk->user, cblk->server); + ALOGVV("track %d s=%08x [NOT READY]", track->name(), cblk->mServer); if ((track->sharedBuffer() != 0) || track->isTerminated() || track->isStopped() || track->isPaused()) { // We have consumed all the buffers of this track. @@ -3847,7 +3848,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr tracksToRemove->add(track); } else if (track->framesReady() && track->isReady() && !track->isPaused() && !track->isTerminated()) { - ALOGVV("OffloadThread: track %d s=%08x [OK]", track->name(), cblk->server); + ALOGVV("OffloadThread: track %d s=%08x [OK]", track->name(), cblk->mServer); if (track->mFillingUpStatus == Track::FS_FILLED) { track->mFillingUpStatus = Track::FS_ACTIVE; mLeftVolFloat = mRightVolFloat = 0; @@ -3875,7 +3876,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr mixerStatus = MIXER_TRACKS_READY; } } else { - ALOGVV("OffloadThread: track %d s=%08x [NOT READY]", track->name(), cblk->server); + ALOGVV("OffloadThread: track %d s=%08x [NOT READY]", track->name(), cblk->mServer); if (track->isStopping_1()) { // Hardware buffer can hold a large amount of audio so we must // wait for all current track's data to drain before we say diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp index 3e184b453f..4f2e3724a7 100644 --- a/services/audioflinger/Tracks.cpp +++ b/services/audioflinger/Tracks.cpp @@ -468,7 +468,7 @@ void AudioFlinger::PlaybackThread::Track::dump(char* buffer, size_t size) mAudioTrackServerProxy->getSampleRate(), 20.0 * log10((vlr & 0xFFFF) / 4096.0), 20.0 * log10((vlr >> 16) / 4096.0), - mCblk->server, + mCblk->mServer, (int)mMainBuffer, (int)mAuxBuffer, mCblk->flags, @@ -1739,7 +1739,7 @@ void AudioFlinger::RecordThread::RecordTrack::dump(char* buffer, size_t size) mChannelMask, mSessionId, mState, - mCblk->server, + mCblk->mServer, mFrameCount); } -- 2.11.0