aboutsummaryrefslogtreecommitdiff
path: root/include/libyuv/scale_row.h
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@google.com>2022-06-06 18:30:15 -0700
committerFrank Barchard <fbarchard@chromium.org>2022-06-07 01:41:56 +0000
commit60254a1d846a93a4d7559009004cdd91bcc04d82 (patch)
treea56a3667ace9c3e5394bfd58787ea7d5883c05b6 /include/libyuv/scale_row.h
parentc0c8c40b31636e575eaf07921d58d8f4ff3aa983 (diff)
downloadlibyuv-60254a1d846a93a4d7559009004cdd91bcc04d82.tar.gz
I210ToI420, InterpolatePlane_16, and ScalePlane Vertical-only asan fix
- Add I210ToI420 to convert 10 bit 4:2:2 YUV to 4:2:0 8 bit - Add NEON InterpolateRow_16 for fast 10 bit scaling - When scaling up, set step to interpolate toward height - 1 to avoid buffer overread - When scaling down, center the 2 rows used for source to achieve filtering. - CopyPlane check for 0 size and return Bug: libyuv:931, b/228605787, b/233233302, b/233634772, b/234558395, b/234340482 Change-Id: I63e8580710a57812b683c2fe40583ac5a179c4f1 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/3687552 Reviewed-by: Mirko Bonadei <mbonadei@chromium.org> Reviewed-by: richard winterton <rrwinterton@gmail.com>
Diffstat (limited to 'include/libyuv/scale_row.h')
-rw-r--r--include/libyuv/scale_row.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/libyuv/scale_row.h b/include/libyuv/scale_row.h
index cc1c9061..5c474b0c 100644
--- a/include/libyuv/scale_row.h
+++ b/include/libyuv/scale_row.h
@@ -200,6 +200,20 @@ void ScalePlaneVertical_16(int src_height,
int wpp,
enum FilterMode filtering);
+void ScalePlaneVertical_16To8(int src_height,
+ int dst_width,
+ int dst_height,
+ int src_stride,
+ int dst_stride,
+ const uint16_t* src_argb,
+ uint8_t* dst_argb,
+ int x,
+ int y,
+ int dy,
+ int wpp,
+ int scale,
+ enum FilterMode filtering);
+
// Simplify the filtering based on scale factors.
enum FilterMode ScaleFilterReduce(int src_width,
int src_height,