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

Commit c0f1949f authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "BufferProvider: Clear out mBuffer when changing upstream BufferProvider"

parents 6f9e1364 930bbf99
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ CopyBufferProvider::CopyBufferProvider(size_t inputFrameSize,

CopyBufferProvider::~CopyBufferProvider()
{
    ALOGV("~CopyBufferProvider(%p)", this);
    ALOGV("%s(%p) %zu %p %p",
           __func__, this, mBuffer.frameCount, mTrackBufferProvider, mLocalBufferData);
    if (mBuffer.frameCount != 0) {
        mTrackBufferProvider->releaseBuffer(&mBuffer);
    }
@@ -133,6 +134,16 @@ void CopyBufferProvider::reset()
    mConsumed = 0;
}

void CopyBufferProvider::setBufferProvider(AudioBufferProvider *p) {
    ALOGV("%s(%p): mTrackBufferProvider:%p  mBuffer.frameCount:%zu",
            __func__, p, mTrackBufferProvider, mBuffer.frameCount);
    if (mTrackBufferProvider == p) {
        return;
    }
    mBuffer.frameCount = 0;
    PassthruBufferProvider::setBufferProvider(p);
}

DownmixerBufferProvider::DownmixerBufferProvider(
        audio_channel_mask_t inputChannelMask,
        audio_channel_mask_t outputChannelMask, audio_format_t format,
@@ -528,6 +539,16 @@ void TimestretchBufferProvider::reset()
    mRemaining = 0;
}

void TimestretchBufferProvider::setBufferProvider(AudioBufferProvider *p) {
    ALOGV("%s(%p): mTrackBufferProvider:%p  mBuffer.frameCount:%zu",
            __func__, p, mTrackBufferProvider, mBuffer.frameCount);
    if (mTrackBufferProvider == p) {
        return;
    }
    mBuffer.frameCount = 0;
    PassthruBufferProvider::setBufferProvider(p);
}

status_t TimestretchBufferProvider::setPlaybackRate(const AudioPlaybackRate &playbackRate)
{
    mPlaybackRate = playbackRate;
+2 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ public:

    // Overrides PassthruBufferProvider
    virtual void reset();
    void setBufferProvider(AudioBufferProvider *p) override;

    // this function should be supplied by the derived class.  It converts
    // #frames in the *src pointer to the *dst pointer.  It is public because
@@ -186,6 +187,7 @@ public:

    // Overrides PassthruBufferProvider
    virtual void reset();
    void setBufferProvider(AudioBufferProvider *p) override;

    virtual status_t setPlaybackRate(const AudioPlaybackRate &playbackRate);