diff --git a/include/libyuv/row.h b/include/libyuv/row.h index 4ae216dd4..64190dd96 100644 --- a/include/libyuv/row.h +++ b/include/libyuv/row.h @@ -206,15 +206,19 @@ extern "C" { // https://code.google.com/p/libyuv/issues/detail?id=517 #define HAS_I422ALPHATOARGBROW_AVX2 #endif -#define HAS_I444TOARGBROW_AVX2 +#define HAS_I422TOARGB1555ROW_AVX2 +#define HAS_I422TOARGB4444ROW_AVX2 #define HAS_I422TOARGBROW_AVX2 #define HAS_I422TORGB24ROW_AVX2 +#define HAS_I422TORGB565ROW_AVX2 #define HAS_I422TORGBAROW_AVX2 +#define HAS_I444TOARGBROW_AVX2 #define HAS_INTERPOLATEROW_AVX2 #define HAS_J422TOARGBROW_AVX2 #define HAS_MERGEUVROW_AVX2 #define HAS_MIRRORROW_AVX2 #define HAS_NV12TOARGBROW_AVX2 +#define HAS_NV12TORGB565ROW_AVX2 #define HAS_NV21TOARGBROW_AVX2 #define HAS_SPLITUVROW_AVX2 #define HAS_UYVYTOARGBROW_AVX2 @@ -225,9 +229,6 @@ extern "C" { #define HAS_YUY2TOUV422ROW_AVX2 #define HAS_YUY2TOUVROW_AVX2 #define HAS_YUY2TOYROW_AVX2 -#define HAS_I422TOARGB1555ROW_AVX2 -#define HAS_I422TOARGB4444ROW_AVX2 -#define HAS_I422TORGB565ROW_AVX2 // Effects: #define HAS_ARGBADDROW_AVX2 @@ -249,7 +250,6 @@ extern "C" { #define HAS_ARGBTORGB565ROW_AVX2 #define HAS_I411TOARGBROW_AVX2 #define HAS_J400TOARGBROW_AVX2 -#define HAS_NV12TORGB565ROW_AVX2 #define HAS_RGB565TOARGBROW_AVX2 #endif diff --git a/source/row_common.cc b/source/row_common.cc index e5a095325..2b80d074c 100644 --- a/source/row_common.cc +++ b/source/row_common.cc @@ -2595,7 +2595,11 @@ void NV12ToRGB565Row_AVX2(const uint8* src_y, while (width > 0) { int twidth = width > MAXTWIDTH ? MAXTWIDTH : width; NV12ToARGBRow_AVX2(src_y, src_uv, row, yuvconstants, twidth); +#if defined(HAS_ARGBTORGB565ROW_AVX2) ARGBToRGB565Row_AVX2(row, dst_rgb565, twidth); +#else + ARGBToRGB565Row_SSE2(row, dst_rgb565, twidth); +#endif src_y += twidth; src_uv += twidth; dst_rgb565 += twidth * 2;