diff options
| author | Andrew Mahone <andrew.mahone@gmail.com> | 2008-12-10 09:45:49 +0000 |
|---|---|---|
| committer | Andrew Mahone <andrew.mahone@gmail.com> | 2008-12-10 09:45:49 +0000 |
| commit | eb04315b193971af9fd04e54e9fc665e09234ab8 (patch) | |
| tree | 36e29a0d8e9c676351848198cb501daf4b3515f9 | |
| parent | 9356b13a236969636134fa7108ee9741692d3006 (diff) | |
| download | rockbox-eb04315b193971af9fd04e54e9fc665e09234ab8.zip rockbox-eb04315b193971af9fd04e54e9fc665e09234ab8.tar.gz rockbox-eb04315b193971af9fd04e54e9fc665e09234ab8.tar.bz2 rockbox-eb04315b193971af9fd04e54e9fc665e09234ab8.tar.xz | |
small binsize improvement for color scalers
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19380 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/recorder/resize.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/apps/recorder/resize.c b/apps/recorder/resize.c index 30ffa44..bbe2f8f 100644 --- a/apps/recorder/resize.c +++ b/apps/recorder/resize.c @@ -144,14 +144,14 @@ static bool scale_h_area(struct bitmap *bm, struct dim *src, rgbval1.g += rgbval2.g * mul; rgbval1.b += rgbval2.b * mul; out_line[ox].r = (accum ? out_line[ox].r : 0) + - (((uint64_t)rgbval1.r + ctx->round) * - ctx->divmul >> 32); + ((rgbval1.r + ctx->round) * + (uint64_t)ctx->divmul >> 32); out_line[ox].g = (accum ? out_line[ox].g : 0) + - (((uint64_t)rgbval1.g + ctx->round) * - ctx->divmul >> 32); + ((rgbval1.g + ctx->round) * + (uint64_t)ctx->divmul >> 32); out_line[ox].b = (accum ? out_line[ox].b : 0) + - (((uint64_t)rgbval1.b + ctx->round) * - ctx->divmul >> 32); + ((rgbval1.b + ctx->round) * + (uint64_t)ctx->divmul >> 32); rgbval1.r = 0; rgbval1.g = 0; rgbval1.b = 0; @@ -208,9 +208,9 @@ static bool scale_v_area(struct bitmap *bm, bool dither, struct dim *src, for (x = 0; x < 3 *(unsigned int)bm->width; x++) { ((uint32_t*)crow1)[x] += mul * ((uint32_t*)crow2)[x]; - ((uint32_t*)crow1)[x] = (uint64_t)(round + + ((uint32_t*)crow1)[x] = (round + ((uint32_t*)crow1)[x]) * - divmul >> 32; + (uint64_t)divmul >> 32; } pix = row; for (x = 0; x < (unsigned int)bm->width; x++) @@ -289,14 +289,14 @@ static bool scale_h_linear(struct bitmap *bm, struct dim *src, rgbinc.b *= src->width - 1; } out_line[ox].r = (accum ? out_line[ox].r : 0) + - (((uint64_t)rgbval.r + ctx->round) * - ctx->divmul >> 32); + ((rgbval.r + ctx->round) * + (uint64_t)ctx->divmul >> 32); out_line[ox].g = (accum ? out_line[ox].g : 0) + - (((uint64_t)rgbval.g + ctx->round) * - ctx->divmul >> 32); + ((rgbval.g + ctx->round) * + (uint64_t)ctx->divmul >> 32); out_line[ox].b = (accum ? out_line[ox].b : 0) + - (((uint64_t)rgbval.b + ctx->round) * - ctx->divmul >> 32); + ((rgbval.b + ctx->round) * + (uint64_t)ctx->divmul >> 32); rgbval.r += rgbinc.r; rgbval.g += rgbinc.g; rgbval.b += rgbinc.b; @@ -349,12 +349,12 @@ static bool scale_v_linear(struct bitmap *bm, bool dither, struct dim *src, pix = row; for (x = 0; x < (uint32_t)bm->width; x++) { - p.r = (uint64_t)(crow1[x].r * (bm->height - 1 - iye) + - crow2[x].r * iye + round) * divmul >> 32; - p.g = (uint64_t)(crow1[x].g * (bm->height - 1 - iye) + - crow2[x].g * iye + round) * divmul >> 32; - p.b = (uint64_t)(crow1[x].b * (bm->height - 1 - iye) + - crow2[x].b * iye + round) * divmul >> 32; + p.r = (crow1[x].r * (bm->height - 1 - iye) + + crow2[x].r * iye + round) * (uint64_t)divmul >> 32; + p.g = (crow1[x].g * (bm->height - 1 - iye) + + crow2[x].g * iye + round) * (uint64_t)divmul >> 32; + p.b = (crow1[x].b * (bm->height - 1 - iye) + + crow2[x].b * iye + round) * (uint64_t)divmul >> 32; if (dither) delta = dither_mat(x & 0xf, oy & 0xf); p.r = PACKRED(p.r,delta); |