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

Commit 7ab41c9f authored by Eric Laurent's avatar Eric Laurent
Browse files

resolved conflicts for merge of 1a4b9939 to master

Change-Id: I0c910d391a38a916d8431f7d1f5b82e39e1a66c2
parents b8a80526 fe0698f9
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2118,7 +2118,15 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track
            if (t->sampleRate() == (int)mSampleRate) {
                minFrames = mFrameCount;
            } else {
                minFrames = (mFrameCount * t->sampleRate()) / mSampleRate + 1;
                // +1 for rounding and +1 for additional sample needed for interpolation
                minFrames = (mFrameCount * t->sampleRate()) / mSampleRate + 1 + 1;
                // add frames already consumed but not yet released by the resampler
                // because cblk->framesReady() will  include these frames
                minFrames += mAudioMixer->getUnreleasedFrames(track->name());
                // the minimum track buffer size is normally twice the number of frames necessary
                // to fill one buffer and the resampler should not leave more than one buffer worth
                // of unreleased frames after each pass, but just in case...
                LOG_ASSERT(minFrames <= cblk->frameCount);
            }
        }
        if ((cblk->framesReady() >= minFrames) && track->isReady() &&
+17 −0
Original line number Diff line number Diff line
@@ -329,6 +329,23 @@ void AudioMixer::track_t::adjustVolumeRamp(bool aux)
    }
}

size_t AudioMixer::track_t::getUnreleasedFrames()
{
    if (resampler != NULL) {
        return resampler->getUnreleasedFrames();
    }
    return 0;
}

size_t AudioMixer::getUnreleasedFrames(int name)
{
    name -= TRACK0;
    if (uint32_t(name) < MAX_NUM_TRACKS) {
        track_t& track(mState.tracks[name]);
        return track.getUnreleasedFrames();
    }
    return 0;
}

void AudioMixer::setBufferProvider(AudioBufferProvider* buffer)
{
+3 −0
Original line number Diff line number Diff line
@@ -88,6 +88,8 @@ public:

    uint32_t    trackNames() const { return mTrackNames; }

    size_t      getUnreleasedFrames(int name);

private:

    enum {
@@ -159,6 +161,7 @@ private:
        bool        doesResample() const;
        void        resetResampler();
        void        adjustVolumeRamp(bool aux);
        size_t      getUnreleasedFrames();
    };

    // pad to 32-bytes to fill cache line
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public:
            AudioBufferProvider* provider) = 0;

    virtual void reset();
    virtual size_t getUnreleasedFrames() { return mInputIndex; }

protected:
    // number of bits for phase fraction - 30 bits allows nearly 2x downsampling