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

Commit 58c4cf45 authored by hkuang's avatar hkuang Committed by Hangyu Kuang
Browse files

Optimize the YUV buffer copy a little bit to skip unnecessary operation.

Bug: 17326758

Change-Id: I2505751cb40a53242ceeb3be8f362c3754c2ee3f
parent f2a74aad
Loading
Loading
Loading
Loading
+15 −18
Original line number Diff line number Diff line
@@ -189,28 +189,25 @@ void SoftVideoDecoderOMXComponent::copyYV12FrameToOutputBuffer(
    size_t dstYStride = mIsAdaptive ? mAdaptiveMaxWidth : mWidth;
    size_t dstUVStride = dstYStride / 2;
    size_t dstHeight = mIsAdaptive ? mAdaptiveMaxHeight : mHeight;
    uint8_t *dstStart = dst;

    for (size_t i = 0; i < dstHeight; ++i) {
        if (i < mHeight) {
    for (size_t i = 0; i < mHeight; ++i) {
         memcpy(dst, srcY, mWidth);
         srcY += srcYStride;
        }
         dst += dstYStride;
    }

    for (size_t i = 0; i < dstHeight / 2; ++i) {
        if (i < mHeight / 2) {
    dst = dstStart + dstYStride * dstHeight;
    for (size_t i = 0; i < mHeight / 2; ++i) {
         memcpy(dst, srcU, mWidth / 2);
         srcU += srcUStride;
        }
         dst += dstUVStride;
    }

    for (size_t i = 0; i < dstHeight / 2; ++i) {
        if (i < mHeight / 2) {
    dst = dstStart + (5 * dstYStride * dstHeight) / 4;
    for (size_t i = 0; i < mHeight / 2; ++i) {
         memcpy(dst, srcV, mWidth / 2);
         srcV += srcVStride;
        }
         dst += dstUVStride;
    }
}