mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 08:46:47 +08:00
ScalePlane crash fix for 3/4 scaling
- Scaling 48 pixels at a time, but calling code checked for 24 pixels - Added test for scaling to 1080x1920 libyuv_test --gunit_filter=LibYUVScaleTest.I420ScaleTo1080x1920_Box* --libyuv_width=1440 --libyuv_height=2560 Was libyuv_test --gunit_filter=LibYUVScaleTest.I420ScaleTo1080x1920_Box* --libyuv_width=1440 --libyuv_height=2560 [ RUN ] LibYUVScaleTest.I420ScaleTo1080x1920_Box Segmentation fault Traceback (most recent call last): Now [ RUN ] LibYUVScaleTest.I420ScaleTo1080x1920_Box filter 3 - 6741 us C - 3566 us OPT [ OK ] LibYUVScaleTest.I420ScaleTo1080x1920_Box (43 ms) Bug: b/366045177 Change-Id: I0ea6c2d6a32b2e7ca44cd030abc9f248115be44a Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/5857554 Reviewed-by: Wan-Teh Chang <wtc@google.com>
This commit is contained in:
parent
41d0cd3360
commit
4620f17058
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: https://chromium.googlesource.com/libyuv/libyuv/
|
||||
Version: 1895
|
||||
Version: 1896
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
Shipped: yes
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 1895
|
||||
#define LIBYUV_VERSION 1896
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
@ -407,14 +407,7 @@ static void ScalePlaneDown34(int src_width,
|
||||
}
|
||||
#if defined(HAS_SCALEROWDOWN34_NEON)
|
||||
if (TestCpuFlag(kCpuHasNEON)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_NEON;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_NEON;
|
||||
}
|
||||
if (dst_width % 24 == 0) {
|
||||
if (dst_width % 48 == 0) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_NEON;
|
||||
@ -422,18 +415,19 @@ static void ScalePlaneDown34(int src_width,
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_NEON;
|
||||
}
|
||||
} else {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_NEON;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_NEON;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_NEON;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN34_MSA)
|
||||
if (TestCpuFlag(kCpuHasMSA)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_MSA;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_MSA;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_MSA;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_MSA;
|
||||
}
|
||||
if (dst_width % 48 == 0) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_MSA;
|
||||
@ -442,18 +436,19 @@ static void ScalePlaneDown34(int src_width,
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_MSA;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_MSA;
|
||||
}
|
||||
} else {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_MSA;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_MSA;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_MSA;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_MSA;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN34_LSX)
|
||||
if (TestCpuFlag(kCpuHasLSX)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_LSX;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_LSX;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_LSX;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_LSX;
|
||||
}
|
||||
if (dst_width % 48 == 0) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_LSX;
|
||||
@ -462,18 +457,19 @@ static void ScalePlaneDown34(int src_width,
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_LSX;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_LSX;
|
||||
}
|
||||
} else {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_LSX;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_LSX;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_LSX;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_LSX;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_SCALEROWDOWN34_SSSE3)
|
||||
if (TestCpuFlag(kCpuHasSSSE3)) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_SSSE3;
|
||||
}
|
||||
if (dst_width % 24 == 0) {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_SSSE3;
|
||||
@ -482,6 +478,14 @@ static void ScalePlaneDown34(int src_width,
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_SSSE3;
|
||||
}
|
||||
} else {
|
||||
if (!filtering) {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_Any_SSSE3;
|
||||
} else {
|
||||
ScaleRowDown34_0 = ScaleRowDown34_0_Box_Any_SSSE3;
|
||||
ScaleRowDown34_1 = ScaleRowDown34_1_Box_Any_SSSE3;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1056,6 +1056,7 @@ TEST_SCALETO(Scale, 256, 144) /* 128x72 * 2 */
|
||||
TEST_SCALETO(Scale, 320, 240)
|
||||
TEST_SCALETO(Scale, 1280, 720)
|
||||
TEST_SCALETO(Scale, 1920, 1080)
|
||||
TEST_SCALETO(Scale, 1080, 1920) // for rotated phones
|
||||
#endif // DISABLE_SLOW_TESTS
|
||||
#undef TEST_SCALETO1
|
||||
#undef TEST_SCALETO
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user