From c39509c8e5c529fa1dd444dc116de877cf48c518 Mon Sep 17 00:00:00 2001 From: Frank Barchard Date: Tue, 9 Feb 2016 17:14:29 -0800 Subject: [PATCH] add avx2 wrappers for functions that can call I422ToARGBRow_AVX2 R=harryjin@google.com BUG=libyuv:557 Review URL: https://codereview.chromium.org/1687713002 . --- README.chromium | 2 +- include/libyuv/row.h | 6 +++--- include/libyuv/version.h | 2 +- source/row_common.cc | 12 ++++++++++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.chromium b/README.chromium index 8b734be85..fd770ef02 100644 --- a/README.chromium +++ b/README.chromium @@ -1,6 +1,6 @@ Name: libyuv URL: http://code.google.com/p/libyuv/ -Version: 1574 +Version: 1575 License: BSD License File: LICENSE diff --git a/include/libyuv/row.h b/include/libyuv/row.h index 43ece0505..4ae216dd4 100644 --- a/include/libyuv/row.h +++ b/include/libyuv/row.h @@ -225,6 +225,9 @@ 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 @@ -245,9 +248,6 @@ extern "C" { #define HAS_ARGBTOARGB4444ROW_AVX2 #define HAS_ARGBTORGB565ROW_AVX2 #define HAS_I411TOARGBROW_AVX2 -#define HAS_I422TOARGB1555ROW_AVX2 -#define HAS_I422TOARGB4444ROW_AVX2 -#define HAS_I422TORGB565ROW_AVX2 #define HAS_J400TOARGBROW_AVX2 #define HAS_NV12TORGB565ROW_AVX2 #define HAS_RGB565TOARGBROW_AVX2 diff --git a/include/libyuv/version.h b/include/libyuv/version.h index cc5d3356e..464199310 100644 --- a/include/libyuv/version.h +++ b/include/libyuv/version.h @@ -11,6 +11,6 @@ #ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT #define INCLUDE_LIBYUV_VERSION_H_ -#define LIBYUV_VERSION 1574 +#define LIBYUV_VERSION 1575 #endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT diff --git a/source/row_common.cc b/source/row_common.cc index 011501f90..e5a095325 100644 --- a/source/row_common.cc +++ b/source/row_common.cc @@ -2495,7 +2495,11 @@ void I422ToRGB565Row_AVX2(const uint8* src_y, while (width > 0) { int twidth = width > MAXTWIDTH ? MAXTWIDTH : width; I422ToARGBRow_AVX2(src_y, src_u, src_v, 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_u += twidth / 2; src_v += twidth / 2; @@ -2517,7 +2521,11 @@ void I422ToARGB1555Row_AVX2(const uint8* src_y, while (width > 0) { int twidth = width > MAXTWIDTH ? MAXTWIDTH : width; I422ToARGBRow_AVX2(src_y, src_u, src_v, row, yuvconstants, twidth); +#if defined(HAS_ARGBTOARGB1555ROW_AVX2) ARGBToARGB1555Row_AVX2(row, dst_argb1555, twidth); +#else + ARGBToARGB1555Row_SSE2(row, dst_argb1555, twidth); +#endif src_y += twidth; src_u += twidth / 2; src_v += twidth / 2; @@ -2539,7 +2547,11 @@ void I422ToARGB4444Row_AVX2(const uint8* src_y, while (width > 0) { int twidth = width > MAXTWIDTH ? MAXTWIDTH : width; I422ToARGBRow_AVX2(src_y, src_u, src_v, row, yuvconstants, twidth); +#if defined(HAS_ARGBTOARGB4444ROW_AVX2) ARGBToARGB4444Row_AVX2(row, dst_argb4444, twidth); +#else + ARGBToARGB4444Row_SSE2(row, dst_argb4444, twidth); +#endif src_y += twidth; src_u += twidth / 2; src_v += twidth / 2;