| Index: source/planar_functions.cc
|
| diff --git a/source/planar_functions.cc b/source/planar_functions.cc
|
| index 536e1d52805b37428628d7f5d81aff8f82f2f9c8..df3041e4956e95465d9806c1344e117a4a8cb669 100644
|
| --- a/source/planar_functions.cc
|
| +++ b/source/planar_functions.cc
|
| @@ -677,7 +677,7 @@ int I420Blend(const uint8* src_y0, int src_stride_y0,
|
|
|
| #if defined(HAS_BLENDPLANEROW_SSSE3)
|
| if (TestCpuFlag(kCpuHasSSSE3)) {
|
| - BlendPlaneRow = BlendPlaneRow_Any_SSSE3;
|
| + BlendPlaneRow = BlendPlaneRow_Any_SSSE3;
|
| if (IS_ALIGNED(halfwidth, 8)) {
|
| BlendPlaneRow = BlendPlaneRow_SSSE3;
|
| }
|
| @@ -685,33 +685,45 @@ int I420Blend(const uint8* src_y0, int src_stride_y0,
|
| #endif
|
| #if defined(HAS_BLENDPLANEROW_AVX2)
|
| if (TestCpuFlag(kCpuHasAVX2)) {
|
| - BlendPlaneRow = BlendPlaneRow_Any_AVX2;
|
| + BlendPlaneRow = BlendPlaneRow_Any_AVX2;
|
| if (IS_ALIGNED(halfwidth, 32)) {
|
| BlendPlaneRow = BlendPlaneRow_AVX2;
|
| }
|
| }
|
| #endif
|
| + if (!IS_ALIGNED(width, 2)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_Odd_C;
|
| + }
|
| #if defined(HAS_SCALEROWDOWN2_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_Any_NEON;
|
| - if (IS_ALIGNED(halfwidth, 16)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_NEON;
|
| + ScaleRowDown2 = ScaleRowDown2Box_Odd_NEON;
|
| + if (IS_ALIGNED(width, 2)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_Any_NEON;
|
| + if (IS_ALIGNED(halfwidth, 16)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_NEON;
|
| + }
|
| }
|
| }
|
| #endif
|
| #if defined(HAS_SCALEROWDOWN2_SSSE3)
|
| if (TestCpuFlag(kCpuHasSSSE3)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_Any_SSSE3;
|
| - if (IS_ALIGNED(halfwidth, 16)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_SSSE3;
|
| + ScaleRowDown2 = ScaleRowDown2Box_Odd_SSSE3;
|
| + if (IS_ALIGNED(width, 2)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_Any_SSSE3;
|
| + if (IS_ALIGNED(halfwidth, 16)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_SSSE3;
|
| + }
|
| }
|
| }
|
| #endif
|
| #if defined(HAS_SCALEROWDOWN2_AVX2)
|
| if (TestCpuFlag(kCpuHasAVX2)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_Any_AVX2;
|
| - if (IS_ALIGNED(halfwidth, 32)) {
|
| - ScaleRowDown2 = ScaleRowDown2Box_AVX2;
|
| + ScaleRowDown2 = ScaleRowDown2Box_Odd_AVX2;
|
| + if (IS_ALIGNED(width, 2)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_Any_AVX2;
|
| + if (IS_ALIGNED(halfwidth, 32)) {
|
| + ScaleRowDown2 = ScaleRowDown2Box_AVX2;
|
| + }
|
| }
|
| }
|
| #endif
|
|
|