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

Bug: 17326758

Change-Id: I2505751cb40a53242ceeb3be8f362c3754c2ee3f
diff --git a/media/libstagefright/omx/SoftVideoDecoderOMXComponent.cpp b/media/libstagefright/omx/SoftVideoDecoderOMXComponent.cpp
index e533fdd..37535ce 100644
--- a/media/libstagefright/omx/SoftVideoDecoderOMXComponent.cpp
+++ b/media/libstagefright/omx/SoftVideoDecoderOMXComponent.cpp
@@ -189,29 +189,26 @@
     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) {
-            memcpy(dst, srcY, mWidth);
-            srcY += srcYStride;
-        }
-        dst += dstYStride;
+    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) {
-            memcpy(dst, srcU, mWidth / 2);
-            srcU += srcUStride;
-        }
-        dst += dstUVStride;
+    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) {
-            memcpy(dst, srcV, mWidth / 2);
-            srcV += srcVStride;
-        }
-        dst += dstUVStride;
+    dst = dstStart + (5 * dstYStride * dstHeight) / 4;
+    for (size_t i = 0; i < mHeight / 2; ++i) {
+         memcpy(dst, srcV, mWidth / 2);
+         srcV += srcVStride;
+         dst += dstUVStride;
     }
 }