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

Commit 37ea1d0d authored by Andy Hung's avatar Andy Hung Committed by Android Git Automerger
Browse files

am e857d28d: Merge "TimestretchBufferProvider: getNextBuffer should follow API" into mnc-dev

* commit 'e857d28d':
  TimestretchBufferProvider: getNextBuffer should follow API
parents 32a5c4fb e857d28d
Loading
Loading
Loading
Loading
+26 −23
Original line number Diff line number Diff line
@@ -386,6 +386,8 @@ status_t TimestretchBufferProvider::getNextBuffer(

    // need to fetch more data
    const size_t outputDesired = pBuffer->frameCount - mRemaining;
    size_t dstAvailable;
    do {
        mBuffer.frameCount = mPlaybackRate.mSpeed == AUDIO_TIMESTRETCH_SPEED_NORMAL
                ? outputDesired : outputDesired * mPlaybackRate.mSpeed + 1;

@@ -393,7 +395,7 @@ status_t TimestretchBufferProvider::getNextBuffer(

        ALOG_ASSERT(res == OK || mBuffer.frameCount == 0);
        if (res != OK || mBuffer.frameCount == 0) { // not needed by API spec, but to be safe.
        ALOGD("buffer error");
            ALOGV("upstream provider cannot provide data");
            if (mRemaining == 0) {
                pBuffer->raw = NULL;
                pBuffer->frameCount = 0;
@@ -406,7 +408,7 @@ status_t TimestretchBufferProvider::getNextBuffer(
        }

        // time-stretch the data
    size_t dstAvailable = min(mLocalBufferFrameCount - mRemaining, outputDesired);
        dstAvailable = min(mLocalBufferFrameCount - mRemaining, outputDesired);
        size_t srcAvailable = mBuffer.frameCount;
        processFrames((uint8_t*)mLocalBufferData + mRemaining * mFrameSize, &dstAvailable,
                mBuffer.raw, &srcAvailable);
@@ -414,6 +416,7 @@ status_t TimestretchBufferProvider::getNextBuffer(
        // release all data consumed
        mBuffer.frameCount = srcAvailable;
        mTrackBufferProvider->releaseBuffer(&mBuffer);
    } while (dstAvailable == 0); // try until we get output data or upstream provider fails.

    // update buffer vars with the actual data processed and return with buffer
    mRemaining += dstAvailable;