Commit 449eb230 authored by fbarchard@google.com's avatar fbarchard@google.com

When scaling a 1x1, dx/dy is 0. Switch to point sample

BUG=none
TEST=none
R=dingkai@google.com

Review URL: https://webrtc-codereview.appspot.com/1582007

git-svn-id: http://libyuv.googlecode.com/svn/trunk@714 16f28f9a-4ce2-e073-06de-1de4eb20be90
parent e2115ac3
Name: libyuv
URL: http://code.google.com/p/libyuv/
Version: 713
Version: 715
License: BSD
License File: LICENSE
......
......@@ -11,6 +11,6 @@
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
#define INCLUDE_LIBYUV_VERSION_H_
#define LIBYUV_VERSION 713
#define LIBYUV_VERSION 715
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
......@@ -1120,30 +1120,34 @@ static void ScaleARGB(const uint8* src, int src_stride,
}
// Special case for integer step values.
if (((dx | dy) & 0xffff) == 0 && dx && dy) {
// Optimized even scale down. ie 2, 4, 6, 8, 10x.
if (!(dx & 0x10000) && !(dy & 0x10000)) {
if ((dx >> 16) == 2) {
// Optimized 1/2 horizontal.
ScaleARGBDown2(src_width, src_height, clip_width, clip_height,
src_stride, dst_stride, src, dst,
x, dx, y, dy, filtering);
return;
}
ScaleARGBDownEven(src_width, src_height, clip_width, clip_height,
src_stride, dst_stride, src, dst,
x, dx, y, dy, filtering);
return;
}
// Optimized odd scale down. ie 3, 5, 7, 9x.
if ((dx & 0x10000) && (dy & 0x10000)) {
if (((dx | dy) & 0xffff) == 0) {
if (!dx || !dy) {
filtering = kFilterNone;
if (dst_width == src_width && dst_height == src_height) {
// Straight copy.
ARGBCopy(src + (y >> 16) * src_stride + (x >> 16) * 4, src_stride,
dst, dst_stride, clip_width, clip_height);
} else {
// Optimized even scale down. ie 2, 4, 6, 8, 10x.
if (!(dx & 0x10000) && !(dy & 0x10000)) {
if ((dx >> 16) == 2) {
// Optimized 1/2 horizontal.
ScaleARGBDown2(src_width, src_height, clip_width, clip_height,
src_stride, dst_stride, src, dst,
x, dx, y, dy, filtering);
return;
}
ScaleARGBDownEven(src_width, src_height, clip_width, clip_height,
src_stride, dst_stride, src, dst,
x, dx, y, dy, filtering);
return;
}
// Optimized odd scale down. ie 3, 5, 7, 9x.
if ((dx & 0x10000) && (dy & 0x10000)) {
filtering = kFilterNone;
if (dst_width == src_width && dst_height == src_height) {
// Straight copy.
ARGBCopy(src + (y >> 16) * src_stride + (x >> 16) * 4, src_stride,
dst, dst_stride, clip_width, clip_height);
return;
}
}
}
}
// Arbitrary scale up and/or down.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment