Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f20e1d8d authored by Glenn Kasten's avatar Glenn Kasten
Browse files

Rename control block server to mServer and add comments

Change-Id: Ieabd91acee92d0e84e66fbd358df5282b856306e
parent eced2daa
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -89,8 +89,11 @@ struct audio_track_cblk_t
    // The data members are grouped so that members accessed frequently and in the same context
    // The data members are grouped so that members accessed frequently and in the same context
    // are in the same line of data cache.
    // are in the same line of data cache.


    volatile    uint32_t    server;     // updated asynchronously by server,
                uint32_t    mServer;    // Number of filled frames consumed by server (mIsOut),
                                        // "for entertainment purposes only"
                                        // 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
                size_t      frameCount_;    // used during creation to pass actual track buffer size
                                            // from AudioFlinger to client, and not referenced again
                                            // from AudioFlinger to client, and not referenced again
@@ -235,7 +238,7 @@ public:
    void        interrupt();
    void        interrupt();


    size_t      getPosition() {
    size_t      getPosition() {
        return mEpoch + mCblk->server;
        return mEpoch + mCblk->mServer;
    }
    }


    void        setEpoch(size_t epoch) {
    void        setEpoch(size_t epoch) {
+3 −3
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@ extern "C" {
namespace android {
namespace android {


audio_track_cblk_t::audio_track_cblk_t()
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)
    mVolumeLR(0x10001000), mSampleRate(0), mSendLevel(0), mName(0), flags(0)
{
{
    memset(&u, 0, sizeof(u));
    memset(&u, 0, sizeof(u));
@@ -594,7 +594,7 @@ void ServerProxy::releaseBuffer(Buffer* buffer)
        android_atomic_release_store(stepCount + rear, &cblk->u.mStreaming.mRear);
        android_atomic_release_store(stepCount + rear, &cblk->u.mStreaming.mRear);
    }
    }


    mCblk->server += stepCount;
    mCblk->mServer += stepCount;


    size_t half = mFrameCount / 2;
    size_t half = mFrameCount / 2;
    if (half == 0) {
    if (half == 0) {
@@ -805,7 +805,7 @@ void StaticAudioTrackServerProxy::releaseBuffer(Buffer* buffer)
    }
    }
    mPosition = newPosition;
    mPosition = newPosition;


    cblk->server += stepCount;
    cblk->mServer += stepCount;
    cblk->u.mStatic.mBufferPosition = newPosition;
    cblk->u.mStatic.mBufferPosition = newPosition;
    if (setFlags != 0) {
    if (setFlags != 0) {
        (void) android_atomic_or(setFlags, &cblk->flags);
        (void) android_atomic_or(setFlags, &cblk->flags);
+8 −7
Original line number Original line Diff line number Diff line
@@ -2903,7 +2903,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
        if ((framesReady >= minFrames) && track->isReady() &&
        if ((framesReady >= minFrames) && track->isReady() &&
                !track->isPaused() && !track->isTerminated())
                !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++;
            mixedTracks++;


@@ -2932,7 +2932,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
                    param = AudioMixer::RAMP_VOLUME;
                    param = AudioMixer::RAMP_VOLUME;
                }
                }
                mAudioMixer->setParameter(name, AudioMixer::RESAMPLE, AudioMixer::RESET, NULL);
                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,
                // If the track is stopped before the first frame was mixed,
                // do not apply ramp
                // do not apply ramp
                param = AudioMixer::RAMP_VOLUME;
                param = AudioMixer::RAMP_VOLUME;
@@ -3069,7 +3070,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
                chain->clearInputBuffer();
                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() ||
            if ((track->sharedBuffer() != 0) || track->isTerminated() ||
                    track->isStopped() || track->isPaused()) {
                    track->isStopped() || track->isPaused()) {
                // We have consumed all the buffers of this track.
                // 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() &&
        if ((track->framesReady() >= minFrames) && track->isReady() &&
                !track->isPaused() && !track->isTerminated())
                !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) {
            if (track->mFillingUpStatus == Track::FS_FILLED) {
                track->mFillingUpStatus = Track::FS_ACTIVE;
                track->mFillingUpStatus = Track::FS_ACTIVE;
@@ -3508,7 +3509,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
                mEffectChains[0]->clearInputBuffer();
                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() ||
            if ((track->sharedBuffer() != 0) || track->isTerminated() ||
                    track->isStopped() || track->isPaused()) {
                    track->isStopped() || track->isPaused()) {
                // We have consumed all the buffers of this track.
                // We have consumed all the buffers of this track.
@@ -3847,7 +3848,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
            tracksToRemove->add(track);
            tracksToRemove->add(track);
        } else if (track->framesReady() && track->isReady() &&
        } else if (track->framesReady() && track->isReady() &&
                !track->isPaused() && !track->isTerminated()) {
                !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) {
            if (track->mFillingUpStatus == Track::FS_FILLED) {
                track->mFillingUpStatus = Track::FS_ACTIVE;
                track->mFillingUpStatus = Track::FS_ACTIVE;
                mLeftVolFloat = mRightVolFloat = 0;
                mLeftVolFloat = mRightVolFloat = 0;
@@ -3875,7 +3876,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
                mixerStatus = MIXER_TRACKS_READY;
                mixerStatus = MIXER_TRACKS_READY;
            }
            }
        } else {
        } 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()) {
            if (track->isStopping_1()) {
                // Hardware buffer can hold a large amount of audio so we must
                // Hardware buffer can hold a large amount of audio so we must
                // wait for all current track's data to drain before we say
                // wait for all current track's data to drain before we say
+2 −2
Original line number Original line Diff line number Diff line
@@ -468,7 +468,7 @@ void AudioFlinger::PlaybackThread::Track::dump(char* buffer, size_t size)
            mAudioTrackServerProxy->getSampleRate(),
            mAudioTrackServerProxy->getSampleRate(),
            20.0 * log10((vlr & 0xFFFF) / 4096.0),
            20.0 * log10((vlr & 0xFFFF) / 4096.0),
            20.0 * log10((vlr >> 16) / 4096.0),
            20.0 * log10((vlr >> 16) / 4096.0),
            mCblk->server,
            mCblk->mServer,
            (int)mMainBuffer,
            (int)mMainBuffer,
            (int)mAuxBuffer,
            (int)mAuxBuffer,
            mCblk->flags,
            mCblk->flags,
@@ -1739,7 +1739,7 @@ void AudioFlinger::RecordThread::RecordTrack::dump(char* buffer, size_t size)
            mChannelMask,
            mChannelMask,
            mSessionId,
            mSessionId,
            mState,
            mState,
            mCblk->server,
            mCblk->mServer,
            mFrameCount);
            mFrameCount);
}
}