summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-07-12 09:45:18 -0700
committerGlenn Kasten <gkasten@google.com>2013-07-30 09:24:03 -0700
commitf20e1d8df84c5fbeeace0052d100982ae39bb7a4 (patch)
tree997cd41de1adb829c194f56cf29eb02945666b94
parenteced2daaa6c91a3731eef978ce65c6ec319c5e6a (diff)
downloadframeworks_av-f20e1d8df84c5fbeeace0052d100982ae39bb7a4.zip
frameworks_av-f20e1d8df84c5fbeeace0052d100982ae39bb7a4.tar.gz
frameworks_av-f20e1d8df84c5fbeeace0052d100982ae39bb7a4.tar.bz2
Rename control block server to mServer and add comments
Change-Id: Ieabd91acee92d0e84e66fbd358df5282b856306e
-rw-r--r--include/private/media/AudioTrackShared.h9
-rw-r--r--media/libmedia/AudioTrackShared.cpp6
-rw-r--r--services/audioflinger/Threads.cpp15
-rw-r--r--services/audioflinger/Tracks.cpp4
4 files changed, 19 insertions, 15 deletions
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index b890180..e950b9e 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 aa45a2f..e5f7fcd 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 62e2e1e..2bb6495 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 3e184b4..4f2e372 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);
}