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

Commit ce80b0ca authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Resize internal PES buffers dynamically instead of relying on a fixed maximum size."

parents 00fa3a72 56e84ba1
Loading
Loading
Loading
Loading
+12 −1
Original line number Original line Diff line number Diff line
@@ -369,7 +369,18 @@ void ATSParser::Stream::parse(
    size_t payloadSizeBits = br->numBitsLeft();
    size_t payloadSizeBits = br->numBitsLeft();
    CHECK_EQ(payloadSizeBits % 8, 0u);
    CHECK_EQ(payloadSizeBits % 8, 0u);


    CHECK_LE(mBuffer->size() + payloadSizeBits / 8, mBuffer->capacity());
    size_t neededSize = mBuffer->size() + payloadSizeBits / 8;
    if (mBuffer->capacity() < neededSize) {
        // Increment in multiples of 64K.
        neededSize = (neededSize + 65535) & ~65535;

        LOGI("resizing buffer to %d bytes", neededSize);

        sp<ABuffer> newBuffer = new ABuffer(neededSize);
        memcpy(newBuffer->data(), mBuffer->data(), mBuffer->size());
        newBuffer->setRange(0, mBuffer->size());
        mBuffer = newBuffer;
    }


    memcpy(mBuffer->data() + mBuffer->size(), br->data(), payloadSizeBits / 8);
    memcpy(mBuffer->data() + mBuffer->size(), br->data(), payloadSizeBits / 8);
    mBuffer->setRange(0, mBuffer->size() + payloadSizeBits / 8);
    mBuffer->setRange(0, mBuffer->size() + payloadSizeBits / 8);