mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-06 16:56:55 +08:00
Copy Alpha odd width support
R=harryjin@google.com BUG=none Review URL: https://webrtc-codereview.appspot.com/59369004.
This commit is contained in:
parent
8e7a62f22a
commit
278d88f872
@ -816,10 +816,18 @@ void CopyRow_16_C(const uint16* src, uint16* dst, int count);
|
||||
void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width);
|
||||
void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
|
||||
void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
|
||||
void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
int width);
|
||||
void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
int width);
|
||||
|
||||
void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, uint8* dst_argb,
|
||||
int width);
|
||||
void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, uint8* dst_argb,
|
||||
int width);
|
||||
|
||||
void SetRow_C(uint8* dst, uint8 v8, int count);
|
||||
void SetRow_X86(uint8* dst, uint8 v8, int count);
|
||||
|
||||
@ -319,13 +319,19 @@ int I420AlphaToARGB(const uint8* src_y, int src_stride_y,
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBCOPYYTOALPHAROW_SSE2)
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_SSE2;
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBCOPYYTOALPHAROW_AVX2)
|
||||
if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_AVX2;
|
||||
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_Any_AVX2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_AVX2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBATTENUATEROW_SSE2)
|
||||
|
||||
@ -2280,13 +2280,19 @@ int ARGBCopyAlpha(const uint8* src_argb, int src_stride_argb,
|
||||
src_stride_argb = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBCOPYALPHAROW_SSE2)
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_SSE2;
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBCOPYALPHAROW_AVX2)
|
||||
if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_AVX2;
|
||||
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_Any_AVX2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyAlphaRow = ARGBCopyAlphaRow_AVX2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -2323,13 +2329,19 @@ int ARGBCopyYToAlpha(const uint8* src_y, int src_stride_y,
|
||||
src_stride_y = dst_stride_argb = 0;
|
||||
}
|
||||
#if defined(HAS_ARGBCOPYYTOALPHAROW_SSE2)
|
||||
if (TestCpuFlag(kCpuHasSSE2) && IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_SSE2;
|
||||
if (TestCpuFlag(kCpuHasSSE2)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_Any_SSE2;
|
||||
if (IS_ALIGNED(width, 8)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_SSE2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAS_ARGBCOPYYTOALPHAROW_AVX2)
|
||||
if (TestCpuFlag(kCpuHasAVX2) && IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_AVX2;
|
||||
if (TestCpuFlag(kCpuHasAVX2)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_Any_AVX2;
|
||||
if (IS_ALIGNED(width, 16)) {
|
||||
ARGBCopyYToAlphaRow = ARGBCopyYToAlphaRow_AVX2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -245,6 +245,18 @@ ANY11(CopyRow_Any_SSE2, CopyRow_SSE2, 0, 1, 1, 31)
|
||||
#ifdef HAS_COPYROW_NEON
|
||||
ANY11(CopyRow_Any_NEON, CopyRow_NEON, 0, 1, 1, 31)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYALPHAROW_AVX2
|
||||
ANY11(ARGBCopyAlphaRow_Any_AVX2, ARGBCopyAlphaRow_AVX2, 0, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYYTOALPHAROW_SSE2
|
||||
ANY11(ARGBCopyAlphaRow_Any_SSE2, ARGBCopyAlphaRow_SSE2, 0, 1, 4, 7)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYYTOALPHAROW_AVX2
|
||||
ANY11(ARGBCopyYToAlphaRow_Any_AVX2, ARGBCopyYToAlphaRow_AVX2, 0, 1, 4, 15)
|
||||
#endif
|
||||
#ifdef HAS_ARGBCOPYYTOALPHAROW_SSE2
|
||||
ANY11(ARGBCopyYToAlphaRow_Any_SSE2, ARGBCopyYToAlphaRow_SSE2, 0, 1, 4, 7)
|
||||
#endif
|
||||
#if defined(HAS_ARGBTORGB24ROW_SSSE3)
|
||||
ANY11(ARGBToRGB24Row_Any_SSSE3, ARGBToRGB24Row_SSSE3, 0, 4, 3, 15)
|
||||
ANY11(ARGBToRAWRow_Any_SSSE3, ARGBToRAWRow_SSSE3, 0, 4, 3, 15)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user