| Index: source/libvpx/third_party/libyuv/source/convert_argb.cc
|
| diff --git a/source/libvpx/third_party/libyuv/source/convert_argb.cc b/source/libvpx/third_party/libyuv/source/convert_argb.cc
|
| index 66f7660793a4b17c3773b09686103c29dcaeb640..44756bc41ce0ecab5513fc67357fd6f840e272ac 100644
|
| --- a/source/libvpx/third_party/libyuv/source/convert_argb.cc
|
| +++ b/source/libvpx/third_party/libyuv/source/convert_argb.cc
|
| @@ -85,6 +85,14 @@ int I444ToARGB(const uint8* src_y, int src_stride_y,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_I444TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + I444ToARGBRow = I444ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + I444ToARGBRow = I444ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_I444TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| I444ToARGBRow = I444ToARGBRow_Any_NEON;
|
| @@ -222,6 +230,14 @@ int I411ToARGB(const uint8* src_y, int src_stride_y,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_I411TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + I411ToARGBRow = I411ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + I411ToARGBRow = I411ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_I411TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| I411ToARGBRow = I411ToARGBRow_Any_NEON;
|
| @@ -243,13 +259,13 @@ int I411ToARGB(const uint8* src_y, int src_stride_y,
|
|
|
| // Convert I400 to ARGB.
|
| LIBYUV_API
|
| -int I400ToARGB_Reference(const uint8* src_y, int src_stride_y,
|
| - uint8* dst_argb, int dst_stride_argb,
|
| - int width, int height) {
|
| +int I400ToARGB(const uint8* src_y, int src_stride_y,
|
| + uint8* dst_argb, int dst_stride_argb,
|
| + int width, int height) {
|
| int y;
|
| - void (*YToARGBRow)(const uint8* y_buf,
|
| + void (*I400ToARGBRow)(const uint8* y_buf,
|
| uint8* rgb_buf,
|
| - int width) = YToARGBRow_C;
|
| + int width) = I400ToARGBRow_C;
|
| if (!src_y || !dst_argb ||
|
| width <= 0 || height == 0) {
|
| return -1;
|
| @@ -267,47 +283,47 @@ int I400ToARGB_Reference(const uint8* src_y, int src_stride_y,
|
| height = 1;
|
| src_stride_y = dst_stride_argb = 0;
|
| }
|
| -#if defined(HAS_YTOARGBROW_SSE2)
|
| +#if defined(HAS_I400TOARGBROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| - YToARGBRow = YToARGBRow_Any_SSE2;
|
| + I400ToARGBRow = I400ToARGBRow_Any_SSE2;
|
| if (IS_ALIGNED(width, 8)) {
|
| - YToARGBRow = YToARGBRow_SSE2;
|
| + I400ToARGBRow = I400ToARGBRow_SSE2;
|
| }
|
| }
|
| #endif
|
| -#if defined(HAS_YTOARGBROW_AVX2)
|
| +#if defined(HAS_I400TOARGBROW_AVX2)
|
| if (TestCpuFlag(kCpuHasAVX2)) {
|
| - YToARGBRow = YToARGBRow_Any_AVX2;
|
| + I400ToARGBRow = I400ToARGBRow_Any_AVX2;
|
| if (IS_ALIGNED(width, 16)) {
|
| - YToARGBRow = YToARGBRow_AVX2;
|
| + I400ToARGBRow = I400ToARGBRow_AVX2;
|
| }
|
| }
|
| #endif
|
| -#if defined(HAS_YTOARGBROW_NEON)
|
| +#if defined(HAS_I400TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| - YToARGBRow = YToARGBRow_Any_NEON;
|
| + I400ToARGBRow = I400ToARGBRow_Any_NEON;
|
| if (IS_ALIGNED(width, 8)) {
|
| - YToARGBRow = YToARGBRow_NEON;
|
| + I400ToARGBRow = I400ToARGBRow_NEON;
|
| }
|
| }
|
| #endif
|
|
|
| for (y = 0; y < height; ++y) {
|
| - YToARGBRow(src_y, dst_argb, width);
|
| + I400ToARGBRow(src_y, dst_argb, width);
|
| dst_argb += dst_stride_argb;
|
| src_y += src_stride_y;
|
| }
|
| return 0;
|
| }
|
|
|
| -// Convert I400 to ARGB.
|
| +// Convert J400 to ARGB.
|
| LIBYUV_API
|
| -int I400ToARGB(const uint8* src_y, int src_stride_y,
|
| +int J400ToARGB(const uint8* src_y, int src_stride_y,
|
| uint8* dst_argb, int dst_stride_argb,
|
| int width, int height) {
|
| int y;
|
| - void (*I400ToARGBRow)(const uint8* src_y, uint8* dst_argb, int pix) =
|
| - I400ToARGBRow_C;
|
| + void (*J400ToARGBRow)(const uint8* src_y, uint8* dst_argb, int pix) =
|
| + J400ToARGBRow_C;
|
| if (!src_y || !dst_argb ||
|
| width <= 0 || height == 0) {
|
| return -1;
|
| @@ -325,24 +341,32 @@ int I400ToARGB(const uint8* src_y, int src_stride_y,
|
| height = 1;
|
| src_stride_y = dst_stride_argb = 0;
|
| }
|
| -#if defined(HAS_I400TOARGBROW_SSE2)
|
| +#if defined(HAS_J400TOARGBROW_SSE2)
|
| if (TestCpuFlag(kCpuHasSSE2)) {
|
| - I400ToARGBRow = I400ToARGBRow_Any_SSE2;
|
| + J400ToARGBRow = J400ToARGBRow_Any_SSE2;
|
| if (IS_ALIGNED(width, 8)) {
|
| - I400ToARGBRow = I400ToARGBRow_SSE2;
|
| + J400ToARGBRow = J400ToARGBRow_SSE2;
|
| }
|
| }
|
| #endif
|
| -#if defined(HAS_I400TOARGBROW_NEON)
|
| +#if defined(HAS_J400TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + J400ToARGBRow = J400ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + J400ToARGBRow = J400ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| +#if defined(HAS_J400TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| - I400ToARGBRow = I400ToARGBRow_Any_NEON;
|
| + J400ToARGBRow = J400ToARGBRow_Any_NEON;
|
| if (IS_ALIGNED(width, 8)) {
|
| - I400ToARGBRow = I400ToARGBRow_NEON;
|
| + J400ToARGBRow = J400ToARGBRow_NEON;
|
| }
|
| }
|
| #endif
|
| for (y = 0; y < height; ++y) {
|
| - I400ToARGBRow(src_y, dst_argb, width);
|
| + J400ToARGBRow(src_y, dst_argb, width);
|
| src_y += src_stride_y;
|
| dst_argb += dst_stride_argb;
|
| }
|
| @@ -552,6 +576,14 @@ int RGB565ToARGB(const uint8* src_rgb565, int src_stride_rgb565,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_RGB565TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + RGB565ToARGBRow = RGB565ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + RGB565ToARGBRow = RGB565ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_RGB565TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| RGB565ToARGBRow = RGB565ToARGBRow_Any_NEON;
|
| @@ -602,6 +634,14 @@ int ARGB1555ToARGB(const uint8* src_argb1555, int src_stride_argb1555,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGB1555TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGB1555ToARGBRow = ARGB1555ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_ARGB1555TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_NEON;
|
| @@ -652,6 +692,14 @@ int ARGB4444ToARGB(const uint8* src_argb4444, int src_stride_argb4444,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGB4444TOARGBROW_AVX2)
|
| + if (TestCpuFlag(kCpuHasAVX2)) {
|
| + ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_AVX2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGB4444ToARGBRow = ARGB4444ToARGBRow_AVX2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_ARGB4444TOARGBROW_NEON)
|
| if (TestCpuFlag(kCpuHasNEON)) {
|
| ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_NEON;
|
|
|