From 1e3dfc48fb64d86ce873425cf6c5f6877c27bce1 Mon Sep 17 00:00:00 2001 From: James Zern Date: Sat, 17 Feb 2018 13:30:28 -0800 Subject: [PATCH] Import: extract condition from loop do_copy is a loop invariant, but based on a variable parameter; it would only be extracted if Import was inlined. Change-Id: Id5b4a1a4a83a4f2083444da4934e4c994df65b44 --- src/enc/picture_csp_enc.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/enc/picture_csp_enc.c b/src/enc/picture_csp_enc.c index 415022d5..7316f3cc 100644 --- a/src/enc/picture_csp_enc.c +++ b/src/enc/picture_csp_enc.c @@ -1110,10 +1110,14 @@ static int Import(WebPPicture* const picture, uint32_t* dst = picture->argb; const int do_copy = (ALPHA_OFFSET == 3) && swap_rb; assert(step == 4); - for (y = 0; y < height; ++y) { - if (do_copy) { + if (do_copy) { + for (y = 0; y < height; ++y) { memcpy(dst, rgb, width * 4); - } else { + rgb += rgb_stride; + dst += picture->argb_stride; + } + } else { + for (y = 0; y < height; ++y) { #ifdef WORDS_BIGENDIAN // BGRA or RGBA input order. const uint8_t* a_ptr = rgb + 3; @@ -1125,9 +1129,9 @@ static int Import(WebPPicture* const picture, // RGBA input order. Need to swap R and B. VP8LConvertBGRAToRGBA((const uint32_t*)rgb, width, (uint8_t*)dst); #endif + rgb += rgb_stride; + dst += picture->argb_stride; } - rgb += rgb_stride; - dst += picture->argb_stride; } } else { uint32_t* dst = picture->argb;