mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-02-16 23:29:52 +08:00
Change YAny functions to share, and use mask for how many bytes at a time for simd vs C.
BUG=373 TESTED=libyuv_unittest passes R=harryjin@google.com Review URL: https://webrtc-codereview.appspot.com/31819004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@1142 16f28f9a-4ce2-e073-06de-1de4eb20be90
This commit is contained in:
parent
78a3a6b345
commit
88ac01aed0
@ -1,6 +1,6 @@
|
|||||||
Name: libyuv
|
Name: libyuv
|
||||||
URL: http://code.google.com/p/libyuv/
|
URL: http://code.google.com/p/libyuv/
|
||||||
Version: 1141
|
Version: 1142
|
||||||
License: BSD
|
License: BSD
|
||||||
License File: LICENSE
|
License File: LICENSE
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,6 @@
|
|||||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||||
#define INCLUDE_LIBYUV_VERSION_H_
|
#define INCLUDE_LIBYUV_VERSION_H_
|
||||||
|
|
||||||
#define LIBYUV_VERSION 1141
|
#define LIBYUV_VERSION 1142
|
||||||
|
|
||||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||||
|
|||||||
@ -241,94 +241,77 @@ BAYERANY(ARGBToBayerGGRow_Any_NEON, ARGBToBayerGGRow_NEON, ARGBToBayerGGRow_C,
|
|||||||
dst_y + n * BPP, width & MASK); \
|
dst_y + n * BPP, width & MASK); \
|
||||||
}
|
}
|
||||||
#ifdef HAS_ARGBTOYROW_AVX2
|
#ifdef HAS_ARGBTOYROW_AVX2
|
||||||
YANY(ARGBToYRow_Any_AVX2, ARGBToYRow_AVX2, ARGBToYRow_C, 4, 1, 32 - 1)
|
YANY(ARGBToYRow_Any_AVX2, ARGBToYRow_AVX2, ARGBToYRow_C, 4, 1, 31)
|
||||||
YANY(ARGBToYJRow_Any_AVX2, ARGBToYJRow_AVX2, ARGBToYJRow_C, 4, 1, 32 - 1)
|
YANY(ARGBToYJRow_Any_AVX2, ARGBToYJRow_AVX2, ARGBToYJRow_C, 4, 1, 31)
|
||||||
YANY(YUY2ToYRow_Any_AVX2, YUY2ToYRow_AVX2, YUY2ToYRow_C, 2, 1, 32 - 1)
|
YANY(YUY2ToYRow_Any_AVX2, YUY2ToYRow_AVX2, YUY2ToYRow_C, 2, 1, 31)
|
||||||
YANY(UYVYToYRow_Any_AVX2, UYVYToYRow_AVX2, UYVYToYRow_C, 2, 1, 32 - 1)
|
YANY(UYVYToYRow_Any_AVX2, UYVYToYRow_AVX2, UYVYToYRow_C, 2, 1, 31)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGBTOYROW_SSSE3
|
#ifdef HAS_ARGBTOYROW_SSSE3
|
||||||
YANY(ARGBToYRow_Any_SSSE3, ARGBToYRow_SSSE3, ARGBToYRow_C, 4, 1, 16 - 1)
|
YANY(ARGBToYRow_Any_SSSE3, ARGBToYRow_SSSE3, ARGBToYRow_C, 4, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_BGRATOYROW_SSSE3
|
#ifdef HAS_BGRATOYROW_SSSE3
|
||||||
YANY(BGRAToYRow_Any_SSSE3, BGRAToYRow_SSSE3, BGRAToYRow_C, 4, 1, 16 - 1)
|
YANY(BGRAToYRow_Any_SSSE3, BGRAToYRow_SSSE3, BGRAToYRow_C, 4, 1, 15)
|
||||||
YANY(ABGRToYRow_Any_SSSE3, ABGRToYRow_SSSE3, ABGRToYRow_C, 4, 1, 16 - 1)
|
YANY(ABGRToYRow_Any_SSSE3, ABGRToYRow_SSSE3, ABGRToYRow_C, 4, 1, 15)
|
||||||
YANY(RGBAToYRow_Any_SSSE3, RGBAToYRow_SSSE3, RGBAToYRow_C, 4, 1, 16 - 1)
|
YANY(RGBAToYRow_Any_SSSE3, RGBAToYRow_SSSE3, RGBAToYRow_C, 4, 1, 15)
|
||||||
YANY(YUY2ToYRow_Any_SSE2, YUY2ToYRow_SSE2, YUY2ToYRow_C, 2, 1, 16 - 1)
|
YANY(YUY2ToYRow_Any_SSE2, YUY2ToYRow_SSE2, YUY2ToYRow_C, 2, 1, 15)
|
||||||
YANY(UYVYToYRow_Any_SSE2, UYVYToYRow_SSE2, UYVYToYRow_C, 2, 1, 16 - 1)
|
YANY(UYVYToYRow_Any_SSE2, UYVYToYRow_SSE2, UYVYToYRow_C, 2, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGBTOYJROW_SSSE3
|
#ifdef HAS_ARGBTOYJROW_SSSE3
|
||||||
YANY(ARGBToYJRow_Any_SSSE3, ARGBToYJRow_SSSE3, ARGBToYJRow_C, 4, 1, 16 - 1)
|
YANY(ARGBToYJRow_Any_SSSE3, ARGBToYJRow_SSSE3, ARGBToYJRow_C, 4, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGBTOYROW_NEON
|
#ifdef HAS_ARGBTOYROW_NEON
|
||||||
YANY(ARGBToYRow_Any_NEON, ARGBToYRow_NEON, ARGBToYRow_C, 4, 1, 8 - 1)
|
YANY(ARGBToYRow_Any_NEON, ARGBToYRow_NEON, ARGBToYRow_C, 4, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGBTOYJROW_NEON
|
#ifdef HAS_ARGBTOYJROW_NEON
|
||||||
YANY(ARGBToYJRow_Any_NEON, ARGBToYJRow_NEON, ARGBToYJRow_C, 4, 1, 8 - 1)
|
YANY(ARGBToYJRow_Any_NEON, ARGBToYJRow_NEON, ARGBToYJRow_C, 4, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_BGRATOYROW_NEON
|
#ifdef HAS_BGRATOYROW_NEON
|
||||||
YANY(BGRAToYRow_Any_NEON, BGRAToYRow_NEON, BGRAToYRow_C, 4, 1, 8 - 1)
|
YANY(BGRAToYRow_Any_NEON, BGRAToYRow_NEON, BGRAToYRow_C, 4, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ABGRTOYROW_NEON
|
#ifdef HAS_ABGRTOYROW_NEON
|
||||||
YANY(ABGRToYRow_Any_NEON, ABGRToYRow_NEON, ABGRToYRow_C, 4, 1, 8 - 1)
|
YANY(ABGRToYRow_Any_NEON, ABGRToYRow_NEON, ABGRToYRow_C, 4, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RGBATOYROW_NEON
|
#ifdef HAS_RGBATOYROW_NEON
|
||||||
YANY(RGBAToYRow_Any_NEON, RGBAToYRow_NEON, RGBAToYRow_C, 4, 1, 8 - 1)
|
YANY(RGBAToYRow_Any_NEON, RGBAToYRow_NEON, RGBAToYRow_C, 4, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RGB24TOYROW_NEON
|
#ifdef HAS_RGB24TOYROW_NEON
|
||||||
YANY(RGB24ToYRow_Any_NEON, RGB24ToYRow_NEON, RGB24ToYRow_C, 3, 1, 8 - 1)
|
YANY(RGB24ToYRow_Any_NEON, RGB24ToYRow_NEON, RGB24ToYRow_C, 3, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RAWTOYROW_NEON
|
#ifdef HAS_RAWTOYROW_NEON
|
||||||
YANY(RAWToYRow_Any_NEON, RAWToYRow_NEON, RAWToYRow_C, 3, 1, 8 - 1)
|
YANY(RAWToYRow_Any_NEON, RAWToYRow_NEON, RAWToYRow_C, 3, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RGB565TOYROW_NEON
|
#ifdef HAS_RGB565TOYROW_NEON
|
||||||
YANY(RGB565ToYRow_Any_NEON, RGB565ToYRow_NEON, RGB565ToYRow_C, 2, 1, 8 - 1)
|
YANY(RGB565ToYRow_Any_NEON, RGB565ToYRow_NEON, RGB565ToYRow_C, 2, 1, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGB1555TOYROW_NEON
|
#ifdef HAS_ARGB1555TOYROW_NEON
|
||||||
YANY(ARGB1555ToYRow_Any_NEON, ARGB1555ToYRow_NEON, ARGB1555ToYRow_C,
|
YANY(ARGB1555ToYRow_Any_NEON, ARGB1555ToYRow_NEON, ARGB1555ToYRow_C, 2, 1, 7)
|
||||||
2, 1, 8 - 1)
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGB4444TOYROW_NEON
|
#ifdef HAS_ARGB4444TOYROW_NEON
|
||||||
YANY(ARGB4444ToYRow_Any_NEON, ARGB4444ToYRow_NEON, ARGB4444ToYRow_C,
|
YANY(ARGB4444ToYRow_Any_NEON, ARGB4444ToYRow_NEON, ARGB4444ToYRow_C, 2, 1, 7)
|
||||||
2, 1, 8 - 1)
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_YUY2TOYROW_NEON
|
#ifdef HAS_YUY2TOYROW_NEON
|
||||||
YANY(YUY2ToYRow_Any_NEON, YUY2ToYRow_NEON, YUY2ToYRow_C, 2, 1, 16 - 1)
|
YANY(YUY2ToYRow_Any_NEON, YUY2ToYRow_NEON, YUY2ToYRow_C, 2, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_UYVYTOYROW_NEON
|
#ifdef HAS_UYVYTOYROW_NEON
|
||||||
YANY(UYVYToYRow_Any_NEON, UYVYToYRow_NEON, UYVYToYRow_C, 2, 1, 16 - 1)
|
YANY(UYVYToYRow_Any_NEON, UYVYToYRow_NEON, UYVYToYRow_C, 2, 1, 15)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RGB24TOARGBROW_NEON
|
#ifdef HAS_RGB24TOARGBROW_NEON
|
||||||
YANY(RGB24ToARGBRow_Any_NEON, RGB24ToARGBRow_NEON, RGB24ToARGBRow_C,
|
YANY(RGB24ToARGBRow_Any_NEON, RGB24ToARGBRow_NEON, RGB24ToARGBRow_C, 3, 4, 7)
|
||||||
3, 4, 8 - 1)
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RAWTOARGBROW_NEON
|
#ifdef HAS_RAWTOARGBROW_NEON
|
||||||
YANY(RAWToARGBRow_Any_NEON, RAWToARGBRow_NEON, RAWToARGBRow_C, 3, 4, 8 - 1)
|
YANY(RAWToARGBRow_Any_NEON, RAWToARGBRow_NEON, RAWToARGBRow_C, 3, 4, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_RGB565TOARGBROW_NEON
|
#ifdef HAS_RGB565TOARGBROW_NEON
|
||||||
YANY(RGB565ToARGBRow_Any_NEON, RGB565ToARGBRow_NEON, RGB565ToARGBRow_C,
|
YANY(RGB565ToARGBRow_Any_NEON, RGB565ToARGBRow_NEON, RGB565ToARGBRow_C, 2, 4, 7)
|
||||||
2, 4, 8 - 1)
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGB1555TOARGBROW_NEON
|
#ifdef HAS_ARGB1555TOARGBROW_NEON
|
||||||
YANY(ARGB1555ToARGBRow_Any_NEON, ARGB1555ToARGBRow_NEON, ARGB1555ToARGBRow_C,
|
YANY(ARGB1555ToARGBRow_Any_NEON, ARGB1555ToARGBRow_NEON, ARGB1555ToARGBRow_C,
|
||||||
2, 4, 8 - 1)
|
2, 4, 7)
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAS_ARGB4444TOARGBROW_NEON
|
#ifdef HAS_ARGB4444TOARGBROW_NEON
|
||||||
YANY(ARGB4444ToARGBRow_Any_NEON, ARGB4444ToARGBRow_NEON, ARGB4444ToARGBRow_C,
|
YANY(ARGB4444ToARGBRow_Any_NEON, ARGB4444ToARGBRow_NEON, ARGB4444ToARGBRow_C,
|
||||||
2, 4, 8 - 1)
|
2, 4, 7)
|
||||||
#endif
|
#endif
|
||||||
#undef YANY
|
|
||||||
|
|
||||||
#define YANY(NAMEANY, ARGBTOY_SIMD, ARGBTOY_C, SBPP, BPP, MASK) \
|
|
||||||
void NAMEANY(const uint8* src_argb, uint8* dst_y, int width) { \
|
|
||||||
int n = width & ~MASK; \
|
|
||||||
if (n > 0) { \
|
|
||||||
ARGBTOY_SIMD(src_argb, dst_y, n); \
|
|
||||||
} \
|
|
||||||
ARGBTOY_C(src_argb + n * SBPP, \
|
|
||||||
dst_y + n * BPP, width & MASK); \
|
|
||||||
}
|
|
||||||
|
|
||||||
// Attenuate is destructive so last16 method can not be used due to overlap.
|
|
||||||
#ifdef HAS_ARGBATTENUATEROW_SSSE3
|
#ifdef HAS_ARGBATTENUATEROW_SSSE3
|
||||||
YANY(ARGBAttenuateRow_Any_SSSE3, ARGBAttenuateRow_SSSE3, ARGBAttenuateRow_C,
|
YANY(ARGBAttenuateRow_Any_SSSE3, ARGBAttenuateRow_SSSE3, ARGBAttenuateRow_C,
|
||||||
4, 4, 3)
|
4, 4, 3)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user