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

Commit 6732b7ce authored by Shunkai Yao's avatar Shunkai Yao Committed by Android (Google) Code Review
Browse files

Merge "Fix Visualizer capture size reset in wraparound" into main

parents fcba00a4 b1ea0df0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -223,8 +223,7 @@ std::vector<uint8_t> VisualizerContext::capture() {
        deltaSamples = kMaxCaptureBufSize;
    }

    int32_t capturePoint;
    //capturePoint = (int32_t)mCaptureIdx - deltaSamples;
    int32_t capturePoint, captureSamples = mCaptureSamples;
    __builtin_sub_overflow((int32_t) mCaptureIdx, deltaSamples, &capturePoint);
    // a negative capturePoint means we wrap the buffer.
    if (capturePoint < 0) {
@@ -232,13 +231,14 @@ std::vector<uint8_t> VisualizerContext::capture() {
        if (size > mCaptureSamples) {
            size = mCaptureSamples;
        }
        // first part of two stages copy, capture to the end of buffer and reset the size/point
        result.insert(result.end(), &mCaptureBuf[kMaxCaptureBufSize + capturePoint],
                        &mCaptureBuf[kMaxCaptureBufSize + capturePoint + size]);
        mCaptureSamples -= size;
        captureSamples -= size;
        capturePoint = 0;
    }
    result.insert(result.end(), &mCaptureBuf[capturePoint],
                    &mCaptureBuf[capturePoint + mCaptureSamples]);
                  &mCaptureBuf[capturePoint + captureSamples]);
    mLastCaptureIdx = mCaptureIdx;
    return result;
}