ARGBGrayTo takes source and destination pointers so caller does not need to make a copy of the image.
BUG=none
TEST=none
Review URL: https://webrtc-codereview.appspot.com/696004
git-svn-id: http://libyuv.googlecode.com/svn/trunk@308 16f28f9a-4ce2-e073-06de-1de4eb20be90
diff --git a/source/row_posix.cc b/source/row_posix.cc
index 0041dce..c46df67 100644
--- a/source/row_posix.cc
+++ b/source/row_posix.cc
@@ -2656,7 +2656,7 @@
}
#endif // HAS_ARGBATTENUATE_SSE2
-#ifdef HAS_ARGBATTENUATE_SSSE3
+#ifdef HAS_ARGBATTENUATEROW_SSSE3
// Shuffle table duplicating alpha
CONST uvec8 kShuffleAlpha0 = {
3u, 3u, 3u, 3u, 3u, 3u, 128u, 128u, 7u, 7u, 7u, 7u, 7u, 7u, 128u, 128u,
@@ -2709,9 +2709,9 @@
#endif
);
}
-#endif // HAS_ARGBATTENUATE_SSSE3
+#endif // HAS_ARGBATTENUATEROW_SSSE3
-#ifdef HAS_ARGBUNATTENUATE_SSE2
+#ifdef HAS_ARGBUNATTENUATEROW_SSE2
// Unattenuate 4 pixels at a time.
// aligned to 16 bytes
void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb,
@@ -2764,7 +2764,7 @@
#endif
);
}
-#endif // HAS_ARGBUNATTENUATE_SSE2
+#endif // HAS_ARGBUNATTENUATEROW_SSE2
#ifdef HAS_ARGBGRAYROW_SSSE3
// Constant for ARGB color to gray scale. 0.11 * B + 0.59 * G + 0.30 * R
@@ -2773,9 +2773,10 @@
};
// Convert 8 ARGB pixels (64 bytes) to 8 Gray ARGB pixels
-void ARGBGrayRow_SSSE3(uint8* dst_argb, int width) {
+void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width) {
asm volatile (
- "movdqa %2,%%xmm4 \n"
+ "movdqa %3,%%xmm4 \n"
+ "sub %0,%1 \n"
// 8 pixel loop.
".p2align 4 \n"
@@ -2799,14 +2800,15 @@
"movdqa %%xmm0,%%xmm1 \n"
"punpcklwd %%xmm3,%%xmm0 \n"
"punpckhwd %%xmm3,%%xmm1 \n"
- "sub $0x8,%1 \n"
- "movdqa %%xmm0,(%0) \n"
- "movdqa %%xmm1,0x10(%0) \n"
+ "sub $0x8,%2 \n"
+ "movdqa %%xmm0,(%0,%1,1) \n"
+ "movdqa %%xmm1,0x10(%0,%1,1) \n"
"lea 0x20(%0),%0 \n"
"jg 1b \n"
- : "+r"(dst_argb), // %0
- "+r"(width) // %1
- : "m"(kARGBToGray) // %2
+ : "+r"(src_argb), // %0
+ "+r"(dst_argb), // %1
+ "+r"(width) // %2
+ : "m"(kARGBToGray) // %3
: "memory", "cc"
#if defined(__SSE2__)
, "xmm0", "xmm1", "xmm2", "xmm3", "xmm4"