mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 17:26:49 +08:00
Scale specialized for 50/50 vertically and check x is integer
BUG=260 TESTED=manual test with LIBYUV_HEIGHT=1440 R=wuwang@google.com Review URL: https://webrtc-codereview.appspot.com/2116004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@772 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
eed5d8e92f
commit
d1f2ef310d
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: http://code.google.com/p/libyuv/
|
||||
Version: 771
|
||||
Version: 772
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 771
|
||||
#define LIBYUV_VERSION 772
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||
|
||||
@ -1792,6 +1792,14 @@ void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride,
|
||||
}
|
||||
}
|
||||
|
||||
// Blend 2 rows into 1 for conversions such as I422ToI420.
|
||||
void HalfRow_C(const uint8* src_uv, int src_uv_stride,
|
||||
uint8* dst_uv, int pix) {
|
||||
for (int x = 0; x < pix; ++x) {
|
||||
dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
// C version 2x2 -> 2x1.
|
||||
void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr,
|
||||
ptrdiff_t src_stride,
|
||||
@ -1800,6 +1808,10 @@ void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr,
|
||||
memcpy(dst_ptr, src_ptr, width);
|
||||
return;
|
||||
}
|
||||
if (source_y_fraction == 128) {
|
||||
HalfRow_C(src_ptr, static_cast<int>(src_stride), dst_ptr, width);
|
||||
return;
|
||||
}
|
||||
int y1_fraction = source_y_fraction;
|
||||
int y0_fraction = 256 - y1_fraction;
|
||||
const uint8* src_ptr1 = src_ptr + src_stride;
|
||||
@ -1816,14 +1828,6 @@ void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr,
|
||||
}
|
||||
}
|
||||
|
||||
// Blend 2 rows into 1 for conversions such as I422ToI420.
|
||||
void HalfRow_C(const uint8* src_uv, int src_uv_stride,
|
||||
uint8* dst_uv, int pix) {
|
||||
for (int x = 0; x < pix; ++x) {
|
||||
dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Select 2 channels from ARGB on alternating pixels. e.g. BGBGBGBG
|
||||
void ARGBToBayerRow_C(const uint8* src_argb,
|
||||
uint8* dst_bayer, uint32 selector, int pix) {
|
||||
|
||||
@ -1468,7 +1468,7 @@ static void ScaleARGB(const uint8* src, int src_stride,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dx == 0x10000 && (dx & 0xffff) == 0) {
|
||||
if (dx == 0x10000 && (x & 0xffff) == 0) {
|
||||
// Arbitrary scale vertically, but unscaled vertically.
|
||||
ScaleARGBBilinearVertical(src_height,
|
||||
clip_width, clip_height,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user