aboutsummaryrefslogtreecommitdiff
path: root/source/row_common.cc
diff options
context:
space:
mode:
authorFrank Barchard <fbarchard@chromium.org>2018-03-07 16:06:27 -0800
committerCommit Bot <commit-bot@chromium.org>2018-03-08 02:38:21 +0000
commit1d509f2178748b22b7eed0b8b76377991646b20a (patch)
treeb1d985213af564f27937c3be62f7833bad5c0fcb /source/row_common.cc
parent3009890c11340af704e6367af0ce6e1d2b65864c (diff)
downloadlibyuv-1d509f2178748b22b7eed0b8b76377991646b20a.tar.gz
ARGBToRGB24_AVX2 version
AVX2 port of SSSE3 conversion to output 24 bit RGB Bug: libyuv:778 Test: LibYUVConvertTest.NV21ToRGB24_Opt Change-Id: I14f7815522d1b790ecd2bb39d9a3441e803b694a Reviewed-on: https://chromium-review.googlesource.com/953303 Commit-Queue: Frank Barchard <fbarchard@chromium.org> Reviewed-by: richard winterton <rrwinterton@gmail.com>
Diffstat (limited to 'source/row_common.cc')
-rw-r--r--source/row_common.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/source/row_common.cc b/source/row_common.cc
index 7a3ca272..6ffaab72 100644
--- a/source/row_common.cc
+++ b/source/row_common.cc
@@ -3004,8 +3004,11 @@ void NV12ToRGB24Row_AVX2(const uint8_t* src_y,
while (width > 0) {
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
NV12ToARGBRow_AVX2(src_y, src_uv, row, yuvconstants, twidth);
- // TODO(fbarchard): ARGBToRGB24Row_AVX2
+#if defined(HAS_ARGBTORGB24ROW_AVX2)
+ ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
+#else
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
+#endif
src_y += twidth;
src_uv += twidth;
dst_rgb24 += twidth * 3;
@@ -3025,8 +3028,11 @@ void NV21ToRGB24Row_AVX2(const uint8_t* src_y,
while (width > 0) {
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
NV21ToARGBRow_AVX2(src_y, src_vu, row, yuvconstants, twidth);
- // TODO(fbarchard): ARGBToRGB24Row_AVX2
+#if defined(HAS_ARGBTORGB24ROW_AVX2)
+ ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
+#else
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
+#endif
src_y += twidth;
src_vu += twidth;
dst_rgb24 += twidth * 3;
@@ -3124,8 +3130,11 @@ void I422ToRGB24Row_AVX2(const uint8_t* src_y,
while (width > 0) {
int twidth = width > MAXTWIDTH ? MAXTWIDTH : width;
I422ToARGBRow_AVX2(src_y, src_u, src_v, row, yuvconstants, twidth);
- // TODO(fbarchard): ARGBToRGB24Row_AVX2
+#if defined(HAS_ARGBTORGB24ROW_AVX2)
+ ARGBToRGB24Row_AVX2(row, dst_rgb24, twidth);
+#else
ARGBToRGB24Row_SSSE3(row, dst_rgb24, twidth);
+#endif
src_y += twidth;
src_u += twidth / 2;
src_v += twidth / 2;