diff options
author | Frank Barchard <fbarchard@google.com> | 2022-06-06 18:30:15 -0700 |
---|---|---|
committer | Frank Barchard <fbarchard@chromium.org> | 2022-06-07 01:41:56 +0000 |
commit | 60254a1d846a93a4d7559009004cdd91bcc04d82 (patch) | |
tree | a56a3667ace9c3e5394bfd58787ea7d5883c05b6 /include/libyuv/scale_row.h | |
parent | c0c8c40b31636e575eaf07921d58d8f4ff3aa983 (diff) | |
download | libyuv-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.h | 14 |
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, |