diff options
author | Frank Barchard <fbarchard@google.com> | 2016-06-24 16:07:49 -0700 |
---|---|---|
committer | Frank Barchard <fbarchard@google.com> | 2016-06-24 16:07:49 -0700 |
commit | b8ddb5a2a789a3e062283fb509938b4eac5d41cc (patch) | |
tree | 53cab7dc09f7caa9b350de08a863d8810f572017 /source/scale_common.cc | |
parent | 1b3e4aee47ea51245119adf9f2b1c7675576c07b (diff) | |
download | libyuv-b8ddb5a2a789a3e062283fb509938b4eac5d41cc.tar.gz |
rounding for arm filter
R=wangcheng@google.com, harryjin@google.com
BUG=libyuv:607
Review URL: https://codereview.chromium.org/2093913004 .
Diffstat (limited to 'source/scale_common.cc')
-rw-r--r-- | source/scale_common.cc | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/source/scale_common.cc b/source/scale_common.cc index baed70b9..3507aa4d 100644 --- a/source/scale_common.cc +++ b/source/scale_common.cc @@ -417,11 +417,9 @@ void ScaleColsUp2_16_C(uint16* dst_ptr, const uint16* src_ptr, } // (1-f)a + fb can be replaced with a + f(b-a) -#if defined(__arm__) -// arm uses 16 bit math with truncation. -// TODO(fbarchard): add rounding. +#if defined(__arm__) || defined(__aarch64__) #define BLENDER(a, b, f) (uint8)((int)(a) + \ - (((int)((f)) * ((int)(b) - (int)(a))) >> 16)) + ((((int)((f)) * ((int)(b) - (int)(a))) + 0x8000) >> 16)) #else // inteluses 7 bit math with rounding. #define BLENDER(a, b, f) (uint8)((int)(a) + \ @@ -480,7 +478,7 @@ void ScaleFilterCols64_C(uint8* dst_ptr, const uint8* src_ptr, // Same as 8 bit arm blender but return is cast to uint16 #define BLENDER(a, b, f) (uint16)((int)(a) + \ - (((int)((f)) * ((int)(b) - (int)(a))) >> 16)) + ((((int)((f)) * ((int)(b) - (int)(a))) + 0x8000) >> 16)) void ScaleFilterCols_16_C(uint16* dst_ptr, const uint16* src_ptr, int dst_width, int x, int dx) { @@ -818,7 +816,7 @@ void ScaleARGBColsUp2_C(uint8* dst_argb, const uint8* src_argb, } } -// TODO(fbarchard): Replace 0x7f ^ f with 128-f. bug=605. +// TODO(fbarchard): Replace 0x7f ^ f with 128-f. bug=607. // Mimics SSSE3 blender #define BLENDER1(a, b, f) ((a) * (0x7f ^ f) + (b) * f) >> 7 #define BLENDERC(a, b, f, s) (uint32)( \ |