Index: source/scale_common.cc |
diff --git a/source/scale_common.cc b/source/scale_common.cc |
index f5c908d0bf5b4d41d2d44b34d29e65a9ed859b61..30ff18c50750b06e9e3488fd8c38a5218ee429db 100644 |
--- a/source/scale_common.cc |
+++ b/source/scale_common.cc |
@@ -103,6 +103,28 @@ void ScaleRowDown2Box_C(const uint8* src_ptr, ptrdiff_t src_stride, |
} |
} |
+void ScaleRowDown2Box_Odd_C(const uint8* src_ptr, ptrdiff_t src_stride, |
+ uint8* dst, int dst_width) { |
+ const uint8* s = src_ptr; |
+ const uint8* t = src_ptr + src_stride; |
+ int x; |
+ dst_width -= 1; |
+ for (x = 0; x < dst_width - 1; x += 2) { |
+ dst[0] = (s[0] + s[1] + t[0] + t[1] + 2) >> 2; |
+ dst[1] = (s[2] + s[3] + t[2] + t[3] + 2) >> 2; |
+ dst += 2; |
+ s += 4; |
+ t += 4; |
+ } |
+ if (dst_width & 1) { |
+ dst[0] = (s[0] + s[1] + t[0] + t[1] + 2) >> 2; |
+ dst += 1; |
+ s += 2; |
+ t += 2; |
+ } |
+ dst[0] = (s[0] + t[0] + 1) >> 1; |
+} |
+ |
void ScaleRowDown2Box_16_C(const uint16* src_ptr, ptrdiff_t src_stride, |
uint16* dst, int dst_width) { |
const uint16* s = src_ptr; |