From 8a95803738bd178876363406309ff2ae1570c8fe Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Thu, 13 Sep 2012 11:07:33 -0700 Subject: Fix bugs in grain where values could go out of bounds. Change-Id: Ib2cc3177424cf24bc81b75786dfd9be30fea5378 --- .../ImageProcessing/src/com/android/rs/image/grain.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'tests/RenderScriptTests/ImageProcessing') diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs index 7d9d3acf7875..783bc4a29cc0 100644 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs +++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/grain.rs @@ -43,9 +43,9 @@ int32_t gHeight; rs_allocation gBlendSource; void blend9(uchar *out, uint32_t x, uint32_t y) { - uint32_t x1 = min((int32_t)x+1, (int32_t)gWidth); + uint32_t x1 = min((int32_t)x+1, (int32_t)(gWidth -1)); uint32_t x2 = max((int32_t)x-1, (int32_t)0); - uint32_t y1 = min((int32_t)y+1, (int32_t)gHeight); + uint32_t y1 = min((int32_t)y+1, (int32_t)(gHeight -1)); uint32_t y2 = max((int32_t)y-1, (int32_t)0); uint p00 = 56 * ((uchar *)rsGetElementAt(gBlendSource, x1, y1))[0]; @@ -69,7 +69,8 @@ void blend9(uchar *out, uint32_t x, uint32_t y) { p20 += p22; p20 += p02; - *out = (uchar)(p20 >> 10); + p20 = min(p20 >> 10, (uint)255); + *out = (uchar)p20; } float gNoiseStrength; -- cgit v1.2.3-59-g8ed1b