From 1ffb04b43e9aa0da31f50be6c9595821252e3e2b Mon Sep 17 00:00:00 2001 From: "fbarchard@google.com" Date: Fri, 24 Apr 2015 22:32:12 +0000 Subject: [PATCH] Allow ScaleRowDown any functions to accept non-power of 2 for destination SIMD multiple. BUG=none TESTED=local unittests pass R=bcornell@google.com Review URL: https://webrtc-codereview.appspot.com/45129004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@1379 16f28f9a-4ce2-e073-06de-1de4eb20be90 --- source/scale_any.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/scale_any.cc b/source/scale_any.cc index a306072a6..5354afed2 100644 --- a/source/scale_any.cc +++ b/source/scale_any.cc @@ -46,12 +46,13 @@ CANY(ScaleARGBFilterCols_Any_NEON, ScaleARGBFilterCols_NEON, #define SDANY(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK) \ void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, \ uint8* dst_ptr, int dst_width) { \ - int n = dst_width & ~MASK; \ + int r = (int)((unsigned int)dst_width % (MASK + 1)); \ + int n = dst_width - r; \ if (n > 0) { \ SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n); \ } \ SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride, \ - dst_ptr + n * BPP, dst_width & MASK); \ + dst_ptr + n * BPP, r); \ }