mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 17:26:49 +08:00
change all pix parameters to width for consistency
TBR=harryjin@google.com BUG=none Review URL: https://codereview.chromium.org/1398633002 .
This commit is contained in:
parent
2d601aaf34
commit
2e4466e282
@ -641,80 +641,82 @@ void UYVYToARGBRow_NEON(const uint8* src_uyvy,
|
||||
const struct YuvConstants* yuvconstants,
|
||||
int width);
|
||||
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix);
|
||||
void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix);
|
||||
void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix);
|
||||
void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix);
|
||||
void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width);
|
||||
void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width);
|
||||
void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width);
|
||||
void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width);
|
||||
void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int width);
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix);
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix);
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix);
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix);
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix);
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix);
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix);
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int pix);
|
||||
void ABGRToYRow_C(const uint8* src_abgr, uint8* dst_y, int pix);
|
||||
void RGBAToYRow_C(const uint8* src_rgba, uint8* dst_y, int pix);
|
||||
void RGB24ToYRow_C(const uint8* src_rgb24, uint8* dst_y, int pix);
|
||||
void RAWToYRow_C(const uint8* src_raw, uint8* dst_y, int pix);
|
||||
void RGB565ToYRow_C(const uint8* src_rgb565, uint8* dst_y, int pix);
|
||||
void ARGB1555ToYRow_C(const uint8* src_argb1555, uint8* dst_y, int pix);
|
||||
void ARGB4444ToYRow_C(const uint8* src_argb4444, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void BGRAToYRow_Any_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix);
|
||||
void ABGRToYRow_Any_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix);
|
||||
void RGBAToYRow_Any_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix);
|
||||
void RGB24ToYRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix);
|
||||
void RAWToYRow_Any_SSSE3(const uint8* src_raw, uint8* dst_y, int pix);
|
||||
void ARGBToYRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void ARGBToYJRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int pix);
|
||||
void BGRAToYRow_Any_NEON(const uint8* src_bgra, uint8* dst_y, int pix);
|
||||
void ABGRToYRow_Any_NEON(const uint8* src_abgr, uint8* dst_y, int pix);
|
||||
void RGBAToYRow_Any_NEON(const uint8* src_rgba, uint8* dst_y, int pix);
|
||||
void RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int pix);
|
||||
void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int pix);
|
||||
void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int pix);
|
||||
void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y, int pix);
|
||||
void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width);
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width);
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width);
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width);
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width);
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width);
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width);
|
||||
void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void BGRAToYRow_C(const uint8* src_bgra, uint8* dst_y, int width);
|
||||
void ABGRToYRow_C(const uint8* src_abgr, uint8* dst_y, int width);
|
||||
void RGBAToYRow_C(const uint8* src_rgba, uint8* dst_y, int width);
|
||||
void RGB24ToYRow_C(const uint8* src_rgb24, uint8* dst_y, int width);
|
||||
void RAWToYRow_C(const uint8* src_raw, uint8* dst_y, int width);
|
||||
void RGB565ToYRow_C(const uint8* src_rgb565, uint8* dst_y, int width);
|
||||
void ARGB1555ToYRow_C(const uint8* src_argb1555, uint8* dst_y, int width);
|
||||
void ARGB4444ToYRow_C(const uint8* src_argb4444, uint8* dst_y, int width);
|
||||
void ARGBToYRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_Any_SSSE3(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void BGRAToYRow_Any_SSSE3(const uint8* src_bgra, uint8* dst_y, int width);
|
||||
void ABGRToYRow_Any_SSSE3(const uint8* src_abgr, uint8* dst_y, int width);
|
||||
void RGBAToYRow_Any_SSSE3(const uint8* src_rgba, uint8* dst_y, int width);
|
||||
void RGB24ToYRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_y, int width);
|
||||
void RAWToYRow_Any_SSSE3(const uint8* src_raw, uint8* dst_y, int width);
|
||||
void ARGBToYRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void ARGBToYJRow_Any_NEON(const uint8* src_argb, uint8* dst_y, int width);
|
||||
void BGRAToYRow_Any_NEON(const uint8* src_bgra, uint8* dst_y, int width);
|
||||
void ABGRToYRow_Any_NEON(const uint8* src_abgr, uint8* dst_y, int width);
|
||||
void RGBAToYRow_Any_NEON(const uint8* src_rgba, uint8* dst_y, int width);
|
||||
void RGB24ToYRow_Any_NEON(const uint8* src_rgb24, uint8* dst_y, int width);
|
||||
void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int width);
|
||||
void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int width);
|
||||
void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y,
|
||||
int width);
|
||||
void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y,
|
||||
int width);
|
||||
|
||||
void ARGBToUVRow_AVX2(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
@ -741,33 +743,33 @@ void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr,
|
||||
void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGBToUV444Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUV422Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUV411Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGBToUVRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGBToUVJRow_Any_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void BGRAToUVRow_Any_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ABGRToUVRow_Any_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGBAToUVRow_Any_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RAWToUVRow_Any_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555,
|
||||
int src_stride_argb1555,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444,
|
||||
int src_stride_argb4444,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGBToUVRow_C(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void ARGBToUVJRow_C(const uint8* src_argb, int src_stride_argb,
|
||||
@ -835,20 +837,23 @@ void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
|
||||
void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width);
|
||||
void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
|
||||
|
||||
void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||
void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
|
||||
void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width);
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width);
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width);
|
||||
void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width);
|
||||
void SplitUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
void SplitUVRow_Any_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int pix);
|
||||
int width);
|
||||
|
||||
void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
|
||||
int width);
|
||||
@ -907,113 +912,115 @@ void ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count);
|
||||
|
||||
// ARGBShufflers for BGRAToARGB etc.
|
||||
void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix);
|
||||
const uint8* shuffler, int width);
|
||||
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix);
|
||||
void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix);
|
||||
void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int pix);
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width);
|
||||
void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
|
||||
void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int width);
|
||||
void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int pix);
|
||||
int width);
|
||||
void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int width);
|
||||
void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix);
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix);
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix);
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width);
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width);
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width);
|
||||
void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int pix);
|
||||
void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int pix);
|
||||
void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int pix);
|
||||
void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix);
|
||||
void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int pix);
|
||||
void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix);
|
||||
void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix);
|
||||
int width);
|
||||
void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int width);
|
||||
void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int width);
|
||||
void RGB565ToARGBRow_C(const uint8* src_rgb, uint8* dst_argb, int width);
|
||||
void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
|
||||
void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width);
|
||||
void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb,
|
||||
int width);
|
||||
void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int width);
|
||||
|
||||
void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
|
||||
void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix);
|
||||
void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int pix);
|
||||
void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb,
|
||||
int width);
|
||||
void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int width);
|
||||
void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix);
|
||||
int width);
|
||||
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
|
||||
void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix);
|
||||
const uint32 dither4, int width);
|
||||
void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix);
|
||||
const uint32 dither4, int width);
|
||||
void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix);
|
||||
const uint32 dither4, int width);
|
||||
|
||||
void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int width);
|
||||
|
||||
void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix);
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width);
|
||||
void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width);
|
||||
|
||||
void I444ToARGBRow_C(const uint8* src_y,
|
||||
const uint8* src_u,
|
||||
@ -1687,26 +1694,32 @@ void ARGBSubtractRow_NEON(const uint8* src_argb, const uint8* src_argb1,
|
||||
void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
|
||||
uint8* dst_argb, int width);
|
||||
|
||||
void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
|
||||
void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix);
|
||||
const uint32 dither4, int width);
|
||||
void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix);
|
||||
const uint32 dither4, int width);
|
||||
|
||||
void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
|
||||
void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
|
||||
void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width);
|
||||
void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
int width);
|
||||
void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int width);
|
||||
|
||||
@ -1836,82 +1849,82 @@ void I422ToABGRRow_MIPS_DSPR2(const uint8* src_y,
|
||||
const struct YuvConstants* yuvconstants,
|
||||
int width);
|
||||
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_NEON(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_C(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width);
|
||||
void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_NEON(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
|
||||
void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_C(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width);
|
||||
void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix);
|
||||
uint8* dst_u, uint8* dst_v, int width);
|
||||
|
||||
void I422ToYUY2Row_C(const uint8* src_y,
|
||||
const uint8* src_u,
|
||||
|
||||
@ -245,8 +245,8 @@ static int X420ToI420(const uint8* src_y,
|
||||
int y;
|
||||
int halfwidth = (width + 1) >> 1;
|
||||
int halfheight = (height + 1) >> 1;
|
||||
void (*SplitUVRow)(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) =
|
||||
SplitUVRow_C;
|
||||
void (*SplitUVRow)(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width) = SplitUVRow_C;
|
||||
if (!src_y || !src_uv ||
|
||||
!dst_y || !dst_u || !dst_v ||
|
||||
width <= 0 || height == 0) {
|
||||
@ -390,9 +390,9 @@ int YUY2ToI420(const uint8* src_yuy2, int src_stride_yuy2,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*YUY2ToUVRow)(const uint8* src_yuy2, int src_stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) = YUY2ToUVRow_C;
|
||||
uint8* dst_u, uint8* dst_v, int width) = YUY2ToUVRow_C;
|
||||
void (*YUY2ToYRow)(const uint8* src_yuy2,
|
||||
uint8* dst_y, int pix) = YUY2ToYRow_C;
|
||||
uint8* dst_y, int width) = YUY2ToYRow_C;
|
||||
// Negative height means invert the image.
|
||||
if (height < 0) {
|
||||
height = -height;
|
||||
@ -455,9 +455,9 @@ int UYVYToI420(const uint8* src_uyvy, int src_stride_uyvy,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*UYVYToUVRow)(const uint8* src_uyvy, int src_stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) = UYVYToUVRow_C;
|
||||
uint8* dst_u, uint8* dst_v, int width) = UYVYToUVRow_C;
|
||||
void (*UYVYToYRow)(const uint8* src_uyvy,
|
||||
uint8* dst_y, int pix) = UYVYToYRow_C;
|
||||
uint8* dst_y, int width) = UYVYToYRow_C;
|
||||
// Negative height means invert the image.
|
||||
if (height < 0) {
|
||||
height = -height;
|
||||
@ -521,7 +521,7 @@ int ARGBToI420(const uint8* src_argb, int src_stride_argb,
|
||||
int y;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
if (!src_argb ||
|
||||
!dst_y || !dst_u || !dst_v ||
|
||||
@ -597,7 +597,7 @@ int BGRAToI420(const uint8* src_bgra, int src_stride_bgra,
|
||||
int y;
|
||||
void (*BGRAToUVRow)(const uint8* src_bgra0, int src_stride_bgra,
|
||||
uint8* dst_u, uint8* dst_v, int width) = BGRAToUVRow_C;
|
||||
void (*BGRAToYRow)(const uint8* src_bgra, uint8* dst_y, int pix) =
|
||||
void (*BGRAToYRow)(const uint8* src_bgra, uint8* dst_y, int width) =
|
||||
BGRAToYRow_C;
|
||||
if (!src_bgra ||
|
||||
!dst_y || !dst_u || !dst_v ||
|
||||
@ -663,7 +663,7 @@ int ABGRToI420(const uint8* src_abgr, int src_stride_abgr,
|
||||
int y;
|
||||
void (*ABGRToUVRow)(const uint8* src_abgr0, int src_stride_abgr,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ABGRToUVRow_C;
|
||||
void (*ABGRToYRow)(const uint8* src_abgr, uint8* dst_y, int pix) =
|
||||
void (*ABGRToYRow)(const uint8* src_abgr, uint8* dst_y, int width) =
|
||||
ABGRToYRow_C;
|
||||
if (!src_abgr ||
|
||||
!dst_y || !dst_u || !dst_v ||
|
||||
@ -729,7 +729,7 @@ int RGBAToI420(const uint8* src_rgba, int src_stride_rgba,
|
||||
int y;
|
||||
void (*RGBAToUVRow)(const uint8* src_rgba0, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int width) = RGBAToUVRow_C;
|
||||
void (*RGBAToYRow)(const uint8* src_rgba, uint8* dst_y, int pix) =
|
||||
void (*RGBAToYRow)(const uint8* src_rgba, uint8* dst_y, int width) =
|
||||
RGBAToYRow_C;
|
||||
if (!src_rgba ||
|
||||
!dst_y || !dst_u || !dst_v ||
|
||||
@ -796,14 +796,14 @@ int RGB24ToI420(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
#if defined(HAS_RGB24TOYROW_NEON)
|
||||
void (*RGB24ToUVRow)(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
uint8* dst_u, uint8* dst_v, int width) = RGB24ToUVRow_C;
|
||||
void (*RGB24ToYRow)(const uint8* src_rgb24, uint8* dst_y, int pix) =
|
||||
void (*RGB24ToYRow)(const uint8* src_rgb24, uint8* dst_y, int width) =
|
||||
RGB24ToYRow_C;
|
||||
#else
|
||||
void (*RGB24ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int pix) =
|
||||
void (*RGB24ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int width) =
|
||||
RGB24ToARGBRow_C;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
#endif
|
||||
if (!src_rgb24 || !dst_y || !dst_u || !dst_v ||
|
||||
@ -910,14 +910,14 @@ int RAWToI420(const uint8* src_raw, int src_stride_raw,
|
||||
#if defined(HAS_RAWTOYROW_NEON)
|
||||
void (*RAWToUVRow)(const uint8* src_raw, int src_stride_raw,
|
||||
uint8* dst_u, uint8* dst_v, int width) = RAWToUVRow_C;
|
||||
void (*RAWToYRow)(const uint8* src_raw, uint8* dst_y, int pix) =
|
||||
void (*RAWToYRow)(const uint8* src_raw, uint8* dst_y, int width) =
|
||||
RAWToYRow_C;
|
||||
#else
|
||||
void (*RAWToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int pix) =
|
||||
void (*RAWToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int width) =
|
||||
RAWToARGBRow_C;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
#endif
|
||||
if (!src_raw || !dst_y || !dst_u || !dst_v ||
|
||||
@ -1024,14 +1024,14 @@ int RGB565ToI420(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
#if defined(HAS_RGB565TOYROW_NEON)
|
||||
void (*RGB565ToUVRow)(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
uint8* dst_u, uint8* dst_v, int width) = RGB565ToUVRow_C;
|
||||
void (*RGB565ToYRow)(const uint8* src_rgb565, uint8* dst_y, int pix) =
|
||||
void (*RGB565ToYRow)(const uint8* src_rgb565, uint8* dst_y, int width) =
|
||||
RGB565ToYRow_C;
|
||||
#else
|
||||
void (*RGB565ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int pix) =
|
||||
void (*RGB565ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int width) =
|
||||
RGB565ToARGBRow_C;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
#endif
|
||||
if (!src_rgb565 || !dst_y || !dst_u || !dst_v ||
|
||||
@ -1146,14 +1146,14 @@ int ARGB1555ToI420(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
#if defined(HAS_ARGB1555TOYROW_NEON)
|
||||
void (*ARGB1555ToUVRow)(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGB1555ToUVRow_C;
|
||||
void (*ARGB1555ToYRow)(const uint8* src_argb1555, uint8* dst_y, int pix) =
|
||||
void (*ARGB1555ToYRow)(const uint8* src_argb1555, uint8* dst_y, int width) =
|
||||
ARGB1555ToYRow_C;
|
||||
#else
|
||||
void (*ARGB1555ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int pix) =
|
||||
void (*ARGB1555ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int width) =
|
||||
ARGB1555ToARGBRow_C;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
#endif
|
||||
if (!src_argb1555 || !dst_y || !dst_u || !dst_v ||
|
||||
@ -1270,14 +1270,14 @@ int ARGB4444ToI420(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
#if defined(HAS_ARGB4444TOYROW_NEON)
|
||||
void (*ARGB4444ToUVRow)(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGB4444ToUVRow_C;
|
||||
void (*ARGB4444ToYRow)(const uint8* src_argb4444, uint8* dst_y, int pix) =
|
||||
void (*ARGB4444ToYRow)(const uint8* src_argb4444, uint8* dst_y, int width) =
|
||||
ARGB4444ToYRow_C;
|
||||
#else
|
||||
void (*ARGB4444ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int pix) =
|
||||
void (*ARGB4444ToARGBRow)(const uint8* src_rgb, uint8* dst_argb, int width) =
|
||||
ARGB4444ToARGBRow_C;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
#endif
|
||||
if (!src_argb4444 || !dst_y || !dst_u || !dst_v ||
|
||||
|
||||
@ -884,7 +884,8 @@ int I420ToARGB1555(const uint8* src_y, int src_stride_y,
|
||||
#endif
|
||||
|
||||
for (y = 0; y < height; ++y) {
|
||||
I422ToARGB1555Row(src_y, src_u, src_v, dst_argb1555, &kYuvIConstants, width);
|
||||
I422ToARGB1555Row(src_y, src_u, src_v, dst_argb1555, &kYuvIConstants,
|
||||
width);
|
||||
dst_argb1555 += dst_stride_argb1555;
|
||||
src_y += src_stride_y;
|
||||
if (y & 1) {
|
||||
@ -946,7 +947,8 @@ int I420ToARGB4444(const uint8* src_y, int src_stride_y,
|
||||
#endif
|
||||
|
||||
for (y = 0; y < height; ++y) {
|
||||
I422ToARGB4444Row(src_y, src_u, src_v, dst_argb4444, &kYuvIConstants, width);
|
||||
I422ToARGB4444Row(src_y, src_u, src_v, dst_argb4444, &kYuvIConstants,
|
||||
width);
|
||||
dst_argb4444 += dst_stride_argb4444;
|
||||
src_y += src_stride_y;
|
||||
if (y & 1) {
|
||||
@ -1041,7 +1043,7 @@ int I420ToRGB565Dither(const uint8* src_y, int src_stride_y,
|
||||
const struct YuvConstants* yuvconstants,
|
||||
int width) = I422ToARGBRow_C;
|
||||
void (*ARGBToRGB565DitherRow)(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix) = ARGBToRGB565DitherRow_C;
|
||||
const uint32 dither4, int width) = ARGBToRGB565DitherRow_C;
|
||||
if (!src_y || !src_u || !src_v || !dst_rgb565 ||
|
||||
width <= 0 || height == 0) {
|
||||
return -1;
|
||||
|
||||
@ -28,10 +28,10 @@ int ARGBToI444(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_v, int dst_stride_v,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
void (*ARGBToUV444Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUV444Row_C;
|
||||
int width) = ARGBToUV444Row_C;
|
||||
if (!src_argb || !dst_y || !dst_u || !dst_v || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
}
|
||||
@ -110,8 +110,8 @@ int ARGBToI422(const uint8* src_argb, int src_stride_argb,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToUV422Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
int width) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
if (!src_argb || !dst_y || !dst_u || !dst_v || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -191,8 +191,8 @@ int ARGBToI411(const uint8* src_argb, int src_stride_argb,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToUV411Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUV411Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
int width) = ARGBToUV411Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
if (!src_argb || !dst_y || !dst_u || !dst_v || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -264,7 +264,7 @@ int ARGBToNV12(const uint8* src_argb, int src_stride_argb,
|
||||
int halfwidth = (width + 1) >> 1;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
void (*MergeUVRow_)(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
|
||||
int width) = MergeUVRow_C;
|
||||
@ -373,7 +373,7 @@ int ARGBToNV21(const uint8* src_argb, int src_stride_argb,
|
||||
int halfwidth = (width + 1) >> 1;
|
||||
void (*ARGBToUVRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVRow_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
void (*MergeUVRow_)(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
|
||||
int width) = MergeUVRow_C;
|
||||
@ -479,8 +479,8 @@ int ARGBToYUY2(const uint8* src_argb, int src_stride_argb,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToUV422Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
int width) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
void (*I422ToYUY2Row)(const uint8* src_y, const uint8* src_u,
|
||||
const uint8* src_v, uint8* dst_yuy2, int width) = I422ToYUY2Row_C;
|
||||
@ -586,8 +586,8 @@ int ARGBToUYVY(const uint8* src_argb, int src_stride_argb,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToUV422Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
int width) = ARGBToUV422Row_C;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
void (*I422ToUYVYRow)(const uint8* src_y, const uint8* src_u,
|
||||
const uint8* src_v, uint8* dst_uyvy, int width) = I422ToUYVYRow_C;
|
||||
@ -692,7 +692,7 @@ int ARGBToI400(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_y, int dst_stride_y,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
void (*ARGBToYRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYRow_C;
|
||||
if (!src_argb || !dst_y || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -764,7 +764,7 @@ int ARGBToRGB24(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_rgb24, int dst_stride_rgb24,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToRGB24Row)(const uint8* src_argb, uint8* dst_rgb, int pix) =
|
||||
void (*ARGBToRGB24Row)(const uint8* src_argb, uint8* dst_rgb, int width) =
|
||||
ARGBToRGB24Row_C;
|
||||
if (!src_argb || !dst_rgb24 || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -812,7 +812,7 @@ int ARGBToRAW(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_raw, int dst_stride_raw,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToRAWRow)(const uint8* src_argb, uint8* dst_rgb, int pix) =
|
||||
void (*ARGBToRAWRow)(const uint8* src_argb, uint8* dst_rgb, int width) =
|
||||
ARGBToRAWRow_C;
|
||||
if (!src_argb || !dst_raw || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -869,7 +869,7 @@ int ARGBToRGB565Dither(const uint8* src_argb, int src_stride_argb,
|
||||
const uint8* dither4x4, int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToRGB565DitherRow)(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix) = ARGBToRGB565DitherRow_C;
|
||||
const uint32 dither4, int width) = ARGBToRGB565DitherRow_C;
|
||||
if (!src_argb || !dst_rgb565 || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
}
|
||||
@ -921,7 +921,7 @@ int ARGBToRGB565(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_rgb565, int dst_stride_rgb565,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToRGB565Row)(const uint8* src_argb, uint8* dst_rgb, int pix) =
|
||||
void (*ARGBToRGB565Row)(const uint8* src_argb, uint8* dst_rgb, int width) =
|
||||
ARGBToRGB565Row_C;
|
||||
if (!src_argb || !dst_rgb565 || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -977,7 +977,7 @@ int ARGBToARGB1555(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_argb1555, int dst_stride_argb1555,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToARGB1555Row)(const uint8* src_argb, uint8* dst_rgb, int pix) =
|
||||
void (*ARGBToARGB1555Row)(const uint8* src_argb, uint8* dst_rgb, int width) =
|
||||
ARGBToARGB1555Row_C;
|
||||
if (!src_argb || !dst_argb1555 || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -1033,7 +1033,7 @@ int ARGBToARGB4444(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_argb4444, int dst_stride_argb4444,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToARGB4444Row)(const uint8* src_argb, uint8* dst_rgb, int pix) =
|
||||
void (*ARGBToARGB4444Row)(const uint8* src_argb, uint8* dst_rgb, int width) =
|
||||
ARGBToARGB4444Row_C;
|
||||
if (!src_argb || !dst_argb4444 || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -1093,7 +1093,7 @@ int ARGBToJ420(const uint8* src_argb, int src_stride_argb,
|
||||
int y;
|
||||
void (*ARGBToUVJRow)(const uint8* src_argb0, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int width) = ARGBToUVJRow_C;
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_yj, int pix) =
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_yj, int width) =
|
||||
ARGBToYJRow_C;
|
||||
if (!src_argb ||
|
||||
!dst_yj || !dst_u || !dst_v ||
|
||||
@ -1166,8 +1166,8 @@ int ARGBToJ422(const uint8* src_argb, int src_stride_argb,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToUVJ422Row)(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) = ARGBToUVJ422Row_C;
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_y, int pix) =
|
||||
int width) = ARGBToUVJ422Row_C;
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_y, int width) =
|
||||
ARGBToYJRow_C;
|
||||
if (!src_argb || !dst_y || !dst_u || !dst_v || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
@ -1245,7 +1245,7 @@ int ARGBToJ400(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_yj, int dst_stride_yj,
|
||||
int width, int height) {
|
||||
int y;
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_yj, int pix) =
|
||||
void (*ARGBToYJRow)(const uint8* src_argb, uint8* dst_yj, int width) =
|
||||
ARGBToYJRow_C;
|
||||
if (!src_argb || !dst_yj || width <= 0 || height == 0) {
|
||||
return -1;
|
||||
|
||||
@ -2230,17 +2230,17 @@ void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride,
|
||||
|
||||
// Blend 2 rows into 1.
|
||||
static void HalfRow_C(const uint8* src_uv, int src_uv_stride,
|
||||
uint8* dst_uv, int pix) {
|
||||
uint8* dst_uv, int width) {
|
||||
int x;
|
||||
for (x = 0; x < pix; ++x) {
|
||||
for (x = 0; x < width; ++x) {
|
||||
dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void HalfRow_16_C(const uint16* src_uv, int src_uv_stride,
|
||||
uint16* dst_uv, int pix) {
|
||||
uint16* dst_uv, int width) {
|
||||
int x;
|
||||
for (x = 0; x < pix; ++x) {
|
||||
for (x = 0; x < width; ++x) {
|
||||
dst_uv[x] = (src_uv[x] + src_uv[src_uv_stride + x] + 1) >> 1;
|
||||
}
|
||||
}
|
||||
@ -2302,14 +2302,14 @@ void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr,
|
||||
|
||||
// Use first 4 shuffler values to reorder ARGB channels.
|
||||
void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
int index0 = shuffler[0];
|
||||
int index1 = shuffler[1];
|
||||
int index2 = shuffler[2];
|
||||
int index3 = shuffler[3];
|
||||
// Shuffle a row of ARGB.
|
||||
int x;
|
||||
for (x = 0; x < pix; ++x) {
|
||||
for (x = 0; x < width; ++x) {
|
||||
// To support in-place conversion.
|
||||
uint8 b = src_argb[index0];
|
||||
uint8 g = src_argb[index1];
|
||||
|
||||
@ -173,7 +173,7 @@ static const lvec8 kShuffleNV21 = {
|
||||
#endif // HAS_RGB24TOARGBROW_SSSE3
|
||||
|
||||
#ifdef HAS_J400TOARGBROW_SSE2
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"pslld $0x18,%%xmm5 \n"
|
||||
@ -194,14 +194,14 @@ void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_y), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:: "memory", "cc", "xmm0", "xmm1", "xmm5"
|
||||
);
|
||||
}
|
||||
#endif // HAS_J400TOARGBROW_SSE2
|
||||
|
||||
#ifdef HAS_RGB24TOARGBROW_SSSE3
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n" // generate mask 0xff000000
|
||||
"pslld $0x18,%%xmm5 \n"
|
||||
@ -233,13 +233,13 @@ void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_rgb24), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kShuffleMaskRGB24ToARGB) // %3
|
||||
: "memory", "cc" , "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n" // generate mask 0xff000000
|
||||
"pslld $0x18,%%xmm5 \n"
|
||||
@ -271,13 +271,13 @@ void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_raw), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kShuffleMaskRAWToARGB) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void RGB565ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void RGB565ToARGBRow_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"mov $0x1080108,%%eax \n"
|
||||
"movd %%eax,%%xmm5 \n"
|
||||
@ -318,14 +318,14 @@ void RGB565ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc", "eax", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGB1555ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGB1555ToARGBRow_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"mov $0x1080108,%%eax \n"
|
||||
"movd %%eax,%%xmm5 \n"
|
||||
@ -369,14 +369,14 @@ void ARGB1555ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc", "eax", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGB4444ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGB4444ToARGBRow_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"mov $0xf0f0f0f,%%eax \n"
|
||||
"movd %%eax,%%xmm4 \n"
|
||||
@ -407,14 +407,14 @@ void ARGB4444ToARGBRow_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc", "eax", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"movdqa %3,%%xmm6 \n"
|
||||
LABELALIGN
|
||||
@ -446,13 +446,13 @@ void ARGBToRGB24Row_SSSE3(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kShuffleMaskARGBToRGB24) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"movdqa %3,%%xmm6 \n"
|
||||
LABELALIGN
|
||||
@ -484,13 +484,13 @@ void ARGBToRAWRow_SSSE3(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kShuffleMaskARGBToRAW) // %3
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm3,%%xmm3 \n"
|
||||
"psrld $0x1b,%%xmm3 \n"
|
||||
@ -521,13 +521,13 @@ void ARGBToRGB565Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRGB565DitherRow_SSE2(const uint8* src, uint8* dst,
|
||||
const uint32 dither4, int pix) {
|
||||
const uint32 dither4, int width) {
|
||||
asm volatile (
|
||||
"movd %3,%%xmm6 \n"
|
||||
"punpcklbw %%xmm6,%%xmm6 \n"
|
||||
@ -565,7 +565,7 @@ void ARGBToRGB565DitherRow_SSE2(const uint8* src, uint8* dst,
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(dither4) // %3
|
||||
: "memory", "cc",
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
|
||||
@ -574,7 +574,7 @@ void ARGBToRGB565DitherRow_SSE2(const uint8* src, uint8* dst,
|
||||
|
||||
#ifdef HAS_ARGBTORGB565DITHERROW_AVX2
|
||||
void ARGBToRGB565DitherRow_AVX2(const uint8* src, uint8* dst,
|
||||
const uint32 dither4, int pix) {
|
||||
const uint32 dither4, int width) {
|
||||
asm volatile (
|
||||
"vbroadcastss %3,%%xmm6 \n"
|
||||
"vpunpcklbw %%xmm6,%%xmm6,%%xmm6 \n"
|
||||
@ -609,7 +609,7 @@ void ARGBToRGB565DitherRow_AVX2(const uint8* src, uint8* dst,
|
||||
"vzeroupper \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(dither4) // %3
|
||||
: "memory", "cc",
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
|
||||
@ -618,7 +618,7 @@ void ARGBToRGB565DitherRow_AVX2(const uint8* src, uint8* dst,
|
||||
#endif // HAS_ARGBTORGB565DITHERROW_AVX2
|
||||
|
||||
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm4,%%xmm4 \n"
|
||||
"psrld $0x1b,%%xmm4 \n"
|
||||
@ -653,13 +653,13 @@ void ARGBToARGB1555Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:: "memory", "cc",
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src, uint8* dst, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm4,%%xmm4 \n"
|
||||
"psllw $0xc,%%xmm4 \n"
|
||||
@ -682,7 +682,7 @@ void ARGBToARGB4444Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src), // %0
|
||||
"+r"(dst), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4"
|
||||
);
|
||||
}
|
||||
@ -690,7 +690,7 @@ void ARGBToARGB4444Row_SSE2(const uint8* src, uint8* dst, int pix) {
|
||||
|
||||
#ifdef HAS_ARGBTOYROW_SSSE3
|
||||
// Convert 16 ARGB pixels (64 bytes) to 16 Y values.
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
"movdqa %4,%%xmm5 \n"
|
||||
@ -717,7 +717,7 @@ void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kARGBToY), // %3
|
||||
"m"(kAddY16) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
@ -728,7 +728,7 @@ void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
#ifdef HAS_ARGBTOYJROW_SSSE3
|
||||
// Convert 16 ARGB pixels (64 bytes) to 16 YJ values.
|
||||
// Same as ARGBToYRow but different coefficients, no add 16, but do rounding.
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
"movdqa %4,%%xmm5 \n"
|
||||
@ -756,7 +756,7 @@ void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kARGBToYJ), // %3
|
||||
"m"(kAddYJ64) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
@ -771,7 +771,7 @@ static const lvec32 kPermdARGBToY_AVX = {
|
||||
};
|
||||
|
||||
// Convert 32 ARGB pixels (128 bytes) to 32 Y values.
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vbroadcastf128 %3,%%ymm4 \n"
|
||||
"vbroadcastf128 %4,%%ymm5 \n"
|
||||
@ -801,7 +801,7 @@ void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kARGBToY), // %3
|
||||
"m"(kAddY16), // %4
|
||||
"m"(kPermdARGBToY_AVX) // %5
|
||||
@ -812,7 +812,7 @@ void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
|
||||
#ifdef HAS_ARGBTOYJROW_AVX2
|
||||
// Convert 32 ARGB pixels (128 bytes) to 32 Y values.
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vbroadcastf128 %3,%%ymm4 \n"
|
||||
"vbroadcastf128 %4,%%ymm5 \n"
|
||||
@ -843,7 +843,7 @@ void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kARGBToYJ), // %3
|
||||
"m"(kAddYJ64), // %4
|
||||
"m"(kPermdARGBToY_AVX) // %5
|
||||
@ -1154,7 +1154,7 @@ void ARGBToUV422Row_SSSE3(const uint8* src_argb0,
|
||||
}
|
||||
#endif // HAS_ARGBTOUV422ROW_SSSE3
|
||||
|
||||
void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movdqa %4,%%xmm5 \n"
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
@ -1181,7 +1181,7 @@ void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_bgra), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kBGRAToY), // %3
|
||||
"m"(kAddY16) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
@ -1249,7 +1249,7 @@ void BGRAToUVRow_SSSE3(const uint8* src_bgra0, int src_stride_bgra,
|
||||
);
|
||||
}
|
||||
|
||||
void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movdqa %4,%%xmm5 \n"
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
@ -1276,14 +1276,14 @@ void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_abgr), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kABGRToY), // %3
|
||||
"m"(kAddY16) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movdqa %4,%%xmm5 \n"
|
||||
"movdqa %3,%%xmm4 \n"
|
||||
@ -1310,7 +1310,7 @@ void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_rgba), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "m"(kRGBAToY), // %3
|
||||
"m"(kAddY16) // %4
|
||||
: "memory", "cc", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5"
|
||||
@ -2715,7 +2715,8 @@ void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width) {
|
||||
#endif // HAS_ARGBMIRRORROW_AVX2
|
||||
|
||||
#ifdef HAS_SPLITUVROW_AVX2
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -2742,7 +2743,7 @@ void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
: "+r"(src_uv), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
|
||||
@ -2751,7 +2752,8 @@ void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
#endif // HAS_SPLITUVROW_AVX2
|
||||
|
||||
#ifdef HAS_SPLITUVROW_SSE2
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -2777,7 +2779,7 @@ void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
: "+r"(src_uv), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
|
||||
@ -3074,7 +3076,7 @@ void ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int width) {
|
||||
#endif // HAS_SETROW_X86
|
||||
|
||||
#ifdef HAS_YUY2TOYROW_SSE2
|
||||
void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -3092,7 +3094,7 @@ void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1", "xmm5"
|
||||
@ -3100,7 +3102,7 @@ void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
}
|
||||
|
||||
void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -3130,7 +3132,7 @@ void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_yuy2)) // %4
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
|
||||
@ -3138,7 +3140,7 @@ void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
}
|
||||
|
||||
void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -3164,14 +3166,14 @@ void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
@ -3187,7 +3189,7 @@ void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
"jg 1b \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1"
|
||||
@ -3195,7 +3197,7 @@ void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
}
|
||||
|
||||
void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -3225,7 +3227,7 @@ void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_uyvy)) // %4
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm2", "xmm3", "xmm5"
|
||||
@ -3233,7 +3235,7 @@ void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
}
|
||||
|
||||
void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"pcmpeqb %%xmm5,%%xmm5 \n"
|
||||
"psrlw $0x8,%%xmm5 \n"
|
||||
@ -3259,7 +3261,7 @@ void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
@ -3268,7 +3270,7 @@ void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
|
||||
#endif // HAS_YUY2TOYROW_SSE2
|
||||
|
||||
#ifdef HAS_YUY2TOYROW_AVX2
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -3288,7 +3290,7 @@ void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1", "xmm5"
|
||||
@ -3296,7 +3298,7 @@ void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
}
|
||||
|
||||
void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -3327,7 +3329,7 @@ void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_yuy2)) // %4
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
@ -3335,7 +3337,7 @@ void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
}
|
||||
|
||||
void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -3364,14 +3366,14 @@ void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
);
|
||||
}
|
||||
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
LABELALIGN
|
||||
"1: \n"
|
||||
@ -3389,14 +3391,14 @@ void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1", "xmm5"
|
||||
);
|
||||
}
|
||||
void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -3428,7 +3430,7 @@ void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
: "r"((intptr_t)(stride_uyvy)) // %4
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
@ -3436,7 +3438,7 @@ void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
}
|
||||
|
||||
void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"vpcmpeqb %%ymm5,%%ymm5,%%ymm5 \n"
|
||||
"vpsrlw $0x8,%%ymm5,%%ymm5 \n"
|
||||
@ -3465,7 +3467,7 @@ void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
@ -5085,7 +5087,7 @@ void InterpolateRow_SSE2(uint8* dst_ptr, const uint8* src_ptr,
|
||||
#ifdef HAS_ARGBSHUFFLEROW_SSSE3
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
asm volatile (
|
||||
"movdqu " MEMACCESS(3) ",%%xmm5 \n"
|
||||
LABELALIGN
|
||||
@ -5102,7 +5104,7 @@ void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
"jg 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "r"(shuffler) // %3
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1", "xmm5"
|
||||
@ -5113,7 +5115,7 @@ void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
#ifdef HAS_ARGBSHUFFLEROW_AVX2
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
asm volatile (
|
||||
"vbroadcastf128 " MEMACCESS(3) ",%%ymm5 \n"
|
||||
LABELALIGN
|
||||
@ -5131,7 +5133,7 @@ void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
"vzeroupper \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "r"(shuffler) // %3
|
||||
: "memory", "cc"
|
||||
, "xmm0", "xmm1", "xmm5"
|
||||
@ -5142,7 +5144,7 @@ void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
#ifdef HAS_ARGBSHUFFLEROW_SSE2
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
uintptr_t pixel_temp = 0u;
|
||||
asm volatile (
|
||||
"pxor %%xmm5,%%xmm5 \n"
|
||||
@ -5251,7 +5253,7 @@ void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+d"(pixel_temp), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
: "r"(shuffler) // %4
|
||||
: "memory", "cc", NACL_R14
|
||||
"xmm0", "xmm1", "xmm5"
|
||||
|
||||
@ -859,7 +859,7 @@ void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width) {
|
||||
);
|
||||
}
|
||||
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -871,13 +871,13 @@ void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_rgb24), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d1", "d2", "d3", "d4" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -890,7 +890,7 @@ void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_raw), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d1", "d2", "d3", "d4" // Clobber List
|
||||
);
|
||||
@ -908,7 +908,7 @@ void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
"vorr.u8 d2, d1, d5 \n" /* R */ \
|
||||
"vorr.u8 d1, d4, d6 \n" /* G */
|
||||
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d3, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -921,7 +921,7 @@ void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_rgb565), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3" // Clobber List
|
||||
);
|
||||
@ -955,7 +955,7 @@ void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
"vorr.u8 d1, d4, d6 \n" /* G */
|
||||
|
||||
void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d3, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -968,7 +968,7 @@ void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb1555), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3" // Clobber List
|
||||
);
|
||||
@ -985,7 +985,7 @@ void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
"vswp.u8 d1, d2 \n" /* B,R,G,A -> B,G,R,A */
|
||||
|
||||
void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d3, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -998,13 +998,13 @@ void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb4444), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int pix) {
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1015,13 +1015,13 @@ void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_rgb24), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d1", "d2", "d3", "d4" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int pix) {
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1033,13 +1033,13 @@ void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_raw), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d1", "d2", "d3", "d4" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1050,13 +1050,13 @@ void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1067,14 +1067,14 @@ void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void YUY2ToUV422Row_NEON(const uint8* src_yuy2, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1088,14 +1088,14 @@ void YUY2ToUV422Row_NEON(const uint8* src_yuy2, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void UYVYToUV422Row_NEON(const uint8* src_uyvy, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1109,14 +1109,14 @@ void UYVYToUV422Row_NEON(const uint8* src_uyvy, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // stride + src_yuy2
|
||||
"1: \n"
|
||||
@ -1136,14 +1136,14 @@ void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
"+r"(stride_yuy2), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7" // Clobber List
|
||||
);
|
||||
}
|
||||
|
||||
void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // stride + src_uyvy
|
||||
"1: \n"
|
||||
@ -1163,7 +1163,7 @@ void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
"+r"(stride_uyvy), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7" // Clobber List
|
||||
);
|
||||
@ -1171,7 +1171,7 @@ void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
asm volatile (
|
||||
MEMACCESS(3)
|
||||
"vld1.8 {q2}, [%3] \n" // shuffler
|
||||
@ -1186,7 +1186,7 @@ void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "r"(shuffler) // %3
|
||||
: "cc", "memory", "q0", "q1", "q2" // Clobber List
|
||||
);
|
||||
@ -1244,7 +1244,7 @@ void I422ToUYVYRow_NEON(const uint8* src_y,
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int pix) {
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1256,7 +1256,7 @@ void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_rgb565), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q8", "q9", "q10", "q11"
|
||||
);
|
||||
@ -1286,7 +1286,7 @@ void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
}
|
||||
|
||||
void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_argb1555,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1298,14 +1298,14 @@ void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_argb1555,
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb1555), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q8", "q9", "q10", "q11"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_argb4444,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #0x0f \n" // bits to clear with vbic.
|
||||
"1: \n"
|
||||
@ -1318,13 +1318,13 @@ void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_argb4444,
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb4444), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q8", "q9", "q10", "q11"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d25, #65 \n" // G * 0.5078 coefficient
|
||||
@ -1344,13 +1344,13 @@ void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q12", "q13"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #15 \n" // B * 0.11400 coefficient
|
||||
"vmov.u8 d25, #75 \n" // G * 0.58700 coefficient
|
||||
@ -1368,7 +1368,7 @@ void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q12", "q13"
|
||||
);
|
||||
@ -1376,7 +1376,7 @@ void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
|
||||
// 8x1 pixels.
|
||||
void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #112 \n" // UB / VR 0.875 coefficient
|
||||
"vmov.u8 d25, #74 \n" // UG -0.5781 coefficient
|
||||
@ -1409,15 +1409,15 @@ void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 16x1 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x1 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
"vmov.s16 q11, #74 / 2 \n" // UG -0.5781 coefficient
|
||||
@ -1457,16 +1457,16 @@ void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 32x1 pixels -> 8x1. pix is number of argb pixels. e.g. 32.
|
||||
// 32x1 pixels -> 8x1. width is number of argb pixels. e.g. 32.
|
||||
void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
"vmov.s16 q11, #74 / 2 \n" // UG -0.5781 coefficient
|
||||
@ -1520,14 +1520,14 @@ void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#define RGBTOUV(QB, QG, QR) \
|
||||
"vmul.s16 q8, " #QB ", q10 \n" /* B */ \
|
||||
"vmls.s16 q8, " #QG ", q11 \n" /* G */ \
|
||||
@ -1542,7 +1542,7 @@ void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
|
||||
// TODO(fbarchard): Consider vhadd vertical, then vpaddl horizontal, avoid shr.
|
||||
void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_argb
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1582,7 +1582,7 @@ void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
"+r"(src_stride_argb), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1591,7 +1591,7 @@ void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
|
||||
// TODO(fbarchard): Subsample match C code.
|
||||
void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_argb
|
||||
"vmov.s16 q10, #127 / 2 \n" // UB / VR 0.500 coefficient
|
||||
@ -1631,7 +1631,7 @@ void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
"+r"(src_stride_argb), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1639,7 +1639,7 @@ void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
}
|
||||
|
||||
void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_bgra
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1679,7 +1679,7 @@ void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
"+r"(src_stride_bgra), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1687,7 +1687,7 @@ void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
}
|
||||
|
||||
void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_abgr
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1727,7 +1727,7 @@ void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
"+r"(src_stride_abgr), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1735,7 +1735,7 @@ void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
}
|
||||
|
||||
void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_rgba
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1775,7 +1775,7 @@ void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
"+r"(src_stride_rgba), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1783,7 +1783,7 @@ void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
}
|
||||
|
||||
void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_rgb24
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1823,7 +1823,7 @@ void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
"+r"(src_stride_rgb24), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
@ -1831,7 +1831,7 @@ void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
}
|
||||
|
||||
void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_raw
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1871,16 +1871,16 @@ void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
"+r"(src_stride_raw), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_argb
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -1940,16 +1940,16 @@ void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
"+r"(src_stride_rgb565), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_argb
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -2009,16 +2009,16 @@ void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
"+r"(src_stride_argb1555), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
asm volatile (
|
||||
"add %1, %0, %1 \n" // src_stride + src_argb
|
||||
"vmov.s16 q10, #112 / 2 \n" // UB / VR 0.875 coefficient
|
||||
@ -2078,14 +2078,14 @@ void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
"+r"(src_stride_argb4444), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
|
||||
"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
|
||||
);
|
||||
}
|
||||
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix) {
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d25, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2106,13 +2106,13 @@ void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_rgb565), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q12", "q13"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix) {
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d25, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2133,13 +2133,13 @@ void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb1555), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q12", "q13"
|
||||
);
|
||||
}
|
||||
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix) {
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d24, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d25, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2160,13 +2160,13 @@ void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_argb4444), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "q0", "q1", "q2", "q3", "q12", "q13"
|
||||
);
|
||||
}
|
||||
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #33 \n" // R * 0.2578 coefficient
|
||||
"vmov.u8 d5, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2186,13 +2186,13 @@ void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_bgra), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "q8"
|
||||
);
|
||||
}
|
||||
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #33 \n" // R * 0.2578 coefficient
|
||||
"vmov.u8 d5, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2212,13 +2212,13 @@ void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_abgr), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "q8"
|
||||
);
|
||||
}
|
||||
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d5, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2238,13 +2238,13 @@ void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_rgba), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "q8"
|
||||
);
|
||||
}
|
||||
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix) {
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #13 \n" // B * 0.1016 coefficient
|
||||
"vmov.u8 d5, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2264,13 +2264,13 @@ void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_rgb24), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "q8"
|
||||
);
|
||||
}
|
||||
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix) {
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"vmov.u8 d4, #33 \n" // R * 0.2578 coefficient
|
||||
"vmov.u8 d5, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2290,7 +2290,7 @@ void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix) {
|
||||
"bgt 1b \n"
|
||||
: "+r"(src_raw), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "q8"
|
||||
);
|
||||
|
||||
@ -902,7 +902,7 @@ void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width) {
|
||||
#endif // HAS_ARGBMIRRORROW_NEON
|
||||
|
||||
#ifdef HAS_RGB24TOARGBROW_NEON
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -914,7 +914,7 @@ void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_rgb24), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v1", "v2", "v3", "v4" // Clobber List
|
||||
);
|
||||
@ -922,7 +922,7 @@ void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
#endif // HAS_RGB24TOARGBROW_NEON
|
||||
|
||||
#ifdef HAS_RAWTOARGBROW_NEON
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"movi v5.8b, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -936,7 +936,7 @@ void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_raw), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5" // Clobber List
|
||||
);
|
||||
@ -957,7 +957,7 @@ void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int pix) {
|
||||
"dup v2.2D, v0.D[1] \n" /* R */
|
||||
|
||||
#ifdef HAS_RGB565TOARGBROW_NEON
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width) {
|
||||
asm volatile (
|
||||
"movi v3.8b, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -970,7 +970,7 @@ void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_rgb565), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v6" // Clobber List
|
||||
);
|
||||
@ -1016,7 +1016,7 @@ void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int pix) {
|
||||
|
||||
#ifdef HAS_ARGB1555TOARGBROW_NEON
|
||||
void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"movi v3.8b, #255 \n" // Alpha
|
||||
"1: \n"
|
||||
@ -1029,7 +1029,7 @@ void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb1555), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3" // Clobber List
|
||||
);
|
||||
@ -1050,7 +1050,7 @@ void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb,
|
||||
|
||||
#ifdef HAS_ARGB4444TOARGBROW_NEON
|
||||
void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1062,7 +1062,7 @@ void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb4444), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4" // Clobber List
|
||||
);
|
||||
@ -1070,7 +1070,7 @@ void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb,
|
||||
#endif // HAS_ARGB4444TOARGBROW_NEON
|
||||
|
||||
#ifdef HAS_ARGBTORGB24ROW_NEON
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int pix) {
|
||||
void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1081,7 +1081,7 @@ void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_rgb24), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v1", "v2", "v3", "v4" // Clobber List
|
||||
);
|
||||
@ -1089,7 +1089,7 @@ void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb24, int pix) {
|
||||
#endif // HAS_ARGBTORGB24ROW_NEON
|
||||
|
||||
#ifdef HAS_ARGBTORAWROW_NEON
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int pix) {
|
||||
void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1102,7 +1102,7 @@ void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_raw), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v1", "v2", "v3", "v4", "v5" // Clobber List
|
||||
);
|
||||
@ -1110,7 +1110,7 @@ void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_raw, int pix) {
|
||||
#endif // HAS_ARGBTORAWROW_NEON
|
||||
|
||||
#ifdef HAS_YUY2TOYROW_NEON
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1121,7 +1121,7 @@ void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1" // Clobber List
|
||||
);
|
||||
@ -1129,7 +1129,7 @@ void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
#endif // HAS_YUY2TOYROW_NEON
|
||||
|
||||
#ifdef HAS_UYVYTOYROW_NEON
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1140,7 +1140,7 @@ void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1" // Clobber List
|
||||
);
|
||||
@ -1149,7 +1149,7 @@ void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix) {
|
||||
|
||||
#ifdef HAS_YUY2TOUV422ROW_NEON
|
||||
void YUY2ToUV422Row_NEON(const uint8* src_yuy2, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1163,7 +1163,7 @@ void YUY2ToUV422Row_NEON(const uint8* src_yuy2, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_yuy2), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3" // Clobber List
|
||||
);
|
||||
@ -1172,7 +1172,7 @@ void YUY2ToUV422Row_NEON(const uint8* src_yuy2, uint8* dst_u, uint8* dst_v,
|
||||
|
||||
#ifdef HAS_UYVYTOUV422ROW_NEON
|
||||
void UYVYToUV422Row_NEON(const uint8* src_uyvy, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1186,7 +1186,7 @@ void UYVYToUV422Row_NEON(const uint8* src_uyvy, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_uyvy), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3" // Clobber List
|
||||
);
|
||||
@ -1195,7 +1195,7 @@ void UYVYToUV422Row_NEON(const uint8* src_uyvy, uint8* dst_u, uint8* dst_v,
|
||||
|
||||
#ifdef HAS_YUY2TOUVROW_NEON
|
||||
void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_yuy2b = src_yuy2 + stride_yuy2;
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
@ -1215,7 +1215,7 @@ void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
"+r"(src_yuy2b), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4",
|
||||
"v5", "v6", "v7" // Clobber List
|
||||
@ -1225,7 +1225,7 @@ void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
|
||||
|
||||
#ifdef HAS_UYVYTOUVROW_NEON
|
||||
void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_uyvyb = src_uyvy + stride_uyvy;
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
@ -1245,7 +1245,7 @@ void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
"+r"(src_uyvyb), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4",
|
||||
"v5", "v6", "v7" // Clobber List
|
||||
@ -1256,7 +1256,7 @@ void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
#ifdef HAS_ARGBSHUFFLEROW_NEON
|
||||
void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
asm volatile (
|
||||
MEMACCESS(3)
|
||||
"ld1 {v2.16b}, [%3] \n" // shuffler
|
||||
@ -1270,7 +1270,7 @@ void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
: "r"(shuffler) // %3
|
||||
: "cc", "memory", "v0", "v1", "v2" // Clobber List
|
||||
);
|
||||
@ -1336,7 +1336,7 @@ void I422ToUYVYRow_NEON(const uint8* src_y,
|
||||
#endif // HAS_I422TOUYVYROW_NEON
|
||||
|
||||
#ifdef HAS_ARGBTORGB565ROW_NEON
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int pix) {
|
||||
void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1348,7 +1348,7 @@ void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb565, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_rgb565), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v20", "v21", "v22", "v23"
|
||||
);
|
||||
@ -1382,7 +1382,7 @@ void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb,
|
||||
|
||||
#ifdef HAS_ARGBTOARGB1555ROW_NEON
|
||||
void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_argb1555,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"1: \n"
|
||||
MEMACCESS(0)
|
||||
@ -1394,7 +1394,7 @@ void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_argb1555,
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb1555), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v20", "v21", "v22", "v23"
|
||||
);
|
||||
@ -1403,7 +1403,7 @@ void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_argb1555,
|
||||
|
||||
#ifdef HAS_ARGBTOARGB4444ROW_NEON
|
||||
void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_argb4444,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"movi v4.16b, #0x0f \n" // bits to clear with vbic.
|
||||
"1: \n"
|
||||
@ -1416,7 +1416,7 @@ void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_argb4444,
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_argb4444), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v4", "v20", "v21", "v22", "v23"
|
||||
);
|
||||
@ -1424,7 +1424,7 @@ void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_argb4444,
|
||||
#endif // HAS_ARGBTOARGB4444ROW_NEON
|
||||
|
||||
#ifdef HAS_ARGBTOYROW_NEON
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -1444,7 +1444,7 @@ void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7"
|
||||
);
|
||||
@ -1452,7 +1452,7 @@ void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
#endif // HAS_ARGBTOYROW_NEON
|
||||
|
||||
#ifdef HAS_ARGBTOYJROW_NEON
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #15 \n" // B * 0.11400 coefficient
|
||||
"movi v5.8b, #75 \n" // G * 0.58700 coefficient
|
||||
@ -1470,7 +1470,7 @@ void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6"
|
||||
);
|
||||
@ -1480,7 +1480,7 @@ void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
// 8x1 pixels.
|
||||
#ifdef HAS_ARGBTOUV444ROW_NEON
|
||||
void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
"movi v24.8b, #112 \n" // UB / VR 0.875 coefficient
|
||||
"movi v25.8b, #74 \n" // UG -0.5781 coefficient
|
||||
@ -1513,7 +1513,7 @@ void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4",
|
||||
"v24", "v25", "v26", "v27", "v28", "v29"
|
||||
@ -1521,10 +1521,10 @@ void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
}
|
||||
#endif // HAS_ARGBTOUV444ROW_NEON
|
||||
|
||||
// 16x1 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x1 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#ifdef HAS_ARGBTOUV422ROW_NEON
|
||||
void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
"1: \n"
|
||||
@ -1557,7 +1557,7 @@ void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1565,10 +1565,10 @@ void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
}
|
||||
#endif // HAS_ARGBTOUV422ROW_NEON
|
||||
|
||||
// 32x1 pixels -> 8x1. pix is number of argb pixels. e.g. 32.
|
||||
// 32x1 pixels -> 8x1. width is number of argb pixels. e.g. 32.
|
||||
#ifdef HAS_ARGBTOUV411ROW_NEON
|
||||
void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
int pix) {
|
||||
int width) {
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
"1: \n"
|
||||
@ -1610,7 +1610,7 @@ void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
: "+r"(src_argb), // %0
|
||||
"+r"(dst_u), // %1
|
||||
"+r"(dst_v), // %2
|
||||
"+r"(pix) // %3
|
||||
"+r"(width) // %3
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1618,7 +1618,7 @@ void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
}
|
||||
#endif // HAS_ARGBTOUV411ROW_NEON
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#define RGBTOUV(QB, QG, QR) \
|
||||
"mul v3.8h, " #QB ",v20.8h \n" /* B */ \
|
||||
"mul v4.8h, " #QR ",v20.8h \n" /* R */ \
|
||||
@ -1636,7 +1636,7 @@ void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
|
||||
|
||||
#ifdef HAS_ARGBTOUVROW_NEON
|
||||
void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_argb_1 = src_argb + src_stride_argb;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1668,7 +1668,7 @@ void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
"+r"(src_argb_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1679,7 +1679,7 @@ void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
// TODO(fbarchard): Subsample match C code.
|
||||
#ifdef HAS_ARGBTOUVJROW_NEON
|
||||
void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_argb_1 = src_argb + src_stride_argb;
|
||||
asm volatile (
|
||||
"movi v20.8h, #63, lsl #0 \n" // UB/VR coeff (0.500) / 2
|
||||
@ -1715,7 +1715,7 @@ void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
"+r"(src_argb_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1725,7 +1725,7 @@ void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb,
|
||||
|
||||
#ifdef HAS_BGRATOUVROW_NEON
|
||||
void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_bgra_1 = src_bgra + src_stride_bgra;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1756,7 +1756,7 @@ void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
"+r"(src_bgra_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1766,7 +1766,7 @@ void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra,
|
||||
|
||||
#ifdef HAS_ABGRTOUVROW_NEON
|
||||
void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_abgr_1 = src_abgr + src_stride_abgr;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1797,7 +1797,7 @@ void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
"+r"(src_abgr_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1807,7 +1807,7 @@ void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr,
|
||||
|
||||
#ifdef HAS_RGBATOUVROW_NEON
|
||||
void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_rgba_1 = src_rgba + src_stride_rgba;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1838,7 +1838,7 @@ void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
"+r"(src_rgba_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1848,7 +1848,7 @@ void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba,
|
||||
|
||||
#ifdef HAS_RGB24TOUVROW_NEON
|
||||
void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_rgb24_1 = src_rgb24 + src_stride_rgb24;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1879,7 +1879,7 @@ void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
"+r"(src_rgb24_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1889,7 +1889,7 @@ void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24,
|
||||
|
||||
#ifdef HAS_RAWTOUVROW_NEON
|
||||
void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_raw_1 = src_raw + src_stride_raw;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -1920,7 +1920,7 @@ void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
"+r"(src_raw_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v20", "v21", "v22", "v23", "v24", "v25"
|
||||
@ -1928,10 +1928,10 @@ void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw,
|
||||
}
|
||||
#endif // HAS_RAWTOUVROW_NEON
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#ifdef HAS_RGB565TOUVROW_NEON
|
||||
void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_rgb565_1 = src_rgb565 + src_stride_rgb565;
|
||||
asm volatile (
|
||||
"movi v22.8h, #56, lsl #0 \n" // UB / VR coeff (0.875) / 2
|
||||
@ -1995,7 +1995,7 @@ void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
"+r"(src_rgb565_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7",
|
||||
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24",
|
||||
@ -2004,10 +2004,10 @@ void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565,
|
||||
}
|
||||
#endif // HAS_RGB565TOUVROW_NEON
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#ifdef HAS_ARGB1555TOUVROW_NEON
|
||||
void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_argb1555_1 = src_argb1555 + src_stride_argb1555;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -2066,7 +2066,7 @@ void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
"+r"(src_argb1555_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6",
|
||||
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
|
||||
@ -2075,10 +2075,10 @@ void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555,
|
||||
}
|
||||
#endif // HAS_ARGB1555TOUVROW_NEON
|
||||
|
||||
// 16x2 pixels -> 8x1. pix is number of argb pixels. e.g. 16.
|
||||
// 16x2 pixels -> 8x1. width is number of argb pixels. e.g. 16.
|
||||
#ifdef HAS_ARGB4444TOUVROW_NEON
|
||||
void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
const uint8* src_argb4444_1 = src_argb4444 + src_stride_argb4444;
|
||||
asm volatile (
|
||||
RGBTOUV_SETUP_REG
|
||||
@ -2137,7 +2137,7 @@ void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
"+r"(src_argb4444_1), // %1
|
||||
"+r"(dst_u), // %2
|
||||
"+r"(dst_v), // %3
|
||||
"+r"(pix) // %4
|
||||
"+r"(width) // %4
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6",
|
||||
"v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25",
|
||||
@ -2148,7 +2148,7 @@ void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444,
|
||||
#endif // HAS_ARGB4444TOUVROW_NEON
|
||||
|
||||
#ifdef HAS_RGB565TOYROW_NEON
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix) {
|
||||
void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v24.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v25.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2169,7 +2169,7 @@ void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_rgb565), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v6",
|
||||
"v24", "v25", "v26", "v27"
|
||||
@ -2178,7 +2178,7 @@ void RGB565ToYRow_NEON(const uint8* src_rgb565, uint8* dst_y, int pix) {
|
||||
#endif // HAS_RGB565TOYROW_NEON
|
||||
|
||||
#ifdef HAS_ARGB1555TOYROW_NEON
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix) {
|
||||
void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2199,7 +2199,7 @@ void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb1555), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7"
|
||||
);
|
||||
@ -2207,7 +2207,7 @@ void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int pix) {
|
||||
#endif // HAS_ARGB1555TOYROW_NEON
|
||||
|
||||
#ifdef HAS_ARGB4444TOYROW_NEON
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix) {
|
||||
void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v24.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v25.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2228,7 +2228,7 @@ void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_argb4444), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v24", "v25", "v26", "v27"
|
||||
);
|
||||
@ -2236,7 +2236,7 @@ void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int pix) {
|
||||
#endif // HAS_ARGB4444TOYROW_NEON
|
||||
|
||||
#ifdef HAS_BGRATOYROW_NEON
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #33 \n" // R * 0.2578 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2256,7 +2256,7 @@ void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_bgra), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16"
|
||||
);
|
||||
@ -2264,7 +2264,7 @@ void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int pix) {
|
||||
#endif // HAS_BGRATOYROW_NEON
|
||||
|
||||
#ifdef HAS_ABGRTOYROW_NEON
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #33 \n" // R * 0.2578 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2284,7 +2284,7 @@ void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_abgr), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16"
|
||||
);
|
||||
@ -2292,7 +2292,7 @@ void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int pix) {
|
||||
#endif // HAS_ABGRTOYROW_NEON
|
||||
|
||||
#ifdef HAS_RGBATOYROW_NEON
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2312,7 +2312,7 @@ void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_rgba), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16"
|
||||
);
|
||||
@ -2320,7 +2320,7 @@ void RGBAToYRow_NEON(const uint8* src_rgba, uint8* dst_y, int pix) {
|
||||
#endif // HAS_RGBATOYROW_NEON
|
||||
|
||||
#ifdef HAS_RGB24TOYROW_NEON
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix) {
|
||||
void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #13 \n" // B * 0.1016 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2340,7 +2340,7 @@ void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_rgb24), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16"
|
||||
);
|
||||
@ -2348,7 +2348,7 @@ void RGB24ToYRow_NEON(const uint8* src_rgb24, uint8* dst_y, int pix) {
|
||||
#endif // HAS_RGB24TOYROW_NEON
|
||||
|
||||
#ifdef HAS_RAWTOYROW_NEON
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix) {
|
||||
void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int width) {
|
||||
asm volatile (
|
||||
"movi v4.8b, #33 \n" // R * 0.2578 coefficient
|
||||
"movi v5.8b, #65 \n" // G * 0.5078 coefficient
|
||||
@ -2368,7 +2368,7 @@ void RAWToYRow_NEON(const uint8* src_raw, uint8* dst_y, int pix) {
|
||||
"b.gt 1b \n"
|
||||
: "+r"(src_raw), // %0
|
||||
"+r"(dst_y), // %1
|
||||
"+r"(pix) // %2
|
||||
"+r"(width) // %2
|
||||
:
|
||||
: "cc", "memory", "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16"
|
||||
);
|
||||
|
||||
@ -327,11 +327,11 @@ static const lvec8 kShuffleNV21 = {
|
||||
|
||||
// Duplicates gray value 3 times and fills in alpha opaque.
|
||||
__declspec(naked)
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_y
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0xff000000
|
||||
pslld xmm5, 24
|
||||
|
||||
@ -356,11 +356,11 @@ void J400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
#ifdef HAS_J400TOARGBROW_AVX2
|
||||
// Duplicates gray value 3 times and fills in alpha opaque.
|
||||
__declspec(naked)
|
||||
void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_y
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0xff000000
|
||||
vpslld ymm5, ymm5, 24
|
||||
|
||||
@ -386,11 +386,11 @@ void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int pix) {
|
||||
#endif // HAS_J400TOARGBROW_AVX2
|
||||
|
||||
__declspec(naked)
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_rgb24
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0xff000000
|
||||
pslld xmm5, 24
|
||||
movdqa xmm4, xmmword ptr kShuffleMaskRGB24ToARGB
|
||||
@ -425,11 +425,11 @@ void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix) {
|
||||
|
||||
__declspec(naked)
|
||||
void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_raw
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0xff000000
|
||||
pslld xmm5, 24
|
||||
movdqa xmm4, xmmword ptr kShuffleMaskRAWToARGB
|
||||
@ -471,7 +471,7 @@ void RAWToARGBRow_SSSE3(const uint8* src_raw, uint8* dst_argb,
|
||||
// 20 instructions.
|
||||
__declspec(naked)
|
||||
void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x01080108 // generate multiplier to repeat 5 bits
|
||||
movd xmm5, eax
|
||||
@ -489,7 +489,7 @@ void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
|
||||
mov eax, [esp + 4] // src_rgb565
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -527,7 +527,7 @@ void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
// G shift of 5 is incorporated, so shift is 5 + 8 and 5 + 3
|
||||
__declspec(naked)
|
||||
void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x01080108 // generate multiplier to repeat 5 bits
|
||||
vmovd xmm5, eax
|
||||
@ -545,7 +545,7 @@ void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
|
||||
mov eax, [esp + 4] // src_rgb565
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -578,7 +578,7 @@ void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb,
|
||||
#ifdef HAS_ARGB1555TOARGBROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x01080108 // generate multiplier to repeat 5 bits
|
||||
vmovd xmm5, eax
|
||||
@ -594,7 +594,7 @@ void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
|
||||
mov eax, [esp + 4] // src_argb1555
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -630,7 +630,7 @@ void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
#ifdef HAS_ARGB4444TOARGBROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x0f0f0f0f // generate mask 0x0f0f0f0f
|
||||
vmovd xmm4, eax
|
||||
@ -638,7 +638,7 @@ void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
vpslld ymm5, ymm4, 4 // 0xf0f0f0f0 for high nibbles
|
||||
mov eax, [esp + 4] // src_argb4444
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -668,7 +668,7 @@ void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
// 24 instructions
|
||||
__declspec(naked)
|
||||
void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x01080108 // generate multiplier to repeat 5 bits
|
||||
movd xmm5, eax
|
||||
@ -685,7 +685,7 @@ void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
|
||||
mov eax, [esp + 4] // src_argb1555
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -721,7 +721,7 @@ void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb,
|
||||
// 18 instructions.
|
||||
__declspec(naked)
|
||||
void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
int pix) {
|
||||
int width) {
|
||||
__asm {
|
||||
mov eax, 0x0f0f0f0f // generate mask 0x0f0f0f0f
|
||||
movd xmm4, eax
|
||||
@ -730,7 +730,7 @@ void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
pslld xmm5, 4
|
||||
mov eax, [esp + 4] // src_argb4444
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
sub edx, eax
|
||||
sub edx, eax
|
||||
|
||||
@ -758,11 +758,11 @@ void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb,
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
movdqa xmm6, xmmword ptr kShuffleMaskARGBToRGB24
|
||||
|
||||
convertloop:
|
||||
@ -796,11 +796,11 @@ void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
movdqa xmm6, xmmword ptr kShuffleMaskARGBToRAW
|
||||
|
||||
convertloop:
|
||||
@ -834,11 +834,11 @@ void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm3, xmm3 // generate mask 0x0000001f
|
||||
psrld xmm3, 27
|
||||
pcmpeqb xmm4, xmm4 // generate mask 0x000007e0
|
||||
@ -872,13 +872,13 @@ void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix) {
|
||||
const uint32 dither4, int width) {
|
||||
__asm {
|
||||
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
movd xmm6, [esp + 12] // dither4
|
||||
mov ecx, [esp + 16] // pix
|
||||
mov ecx, [esp + 16] // width
|
||||
punpcklbw xmm6, xmm6 // make dither 16 bytes
|
||||
movdqa xmm7, xmm6
|
||||
punpcklwd xmm6, xmm6
|
||||
@ -918,12 +918,12 @@ void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb,
|
||||
#ifdef HAS_ARGBTORGB565DITHERROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
const uint32 dither4, int pix) {
|
||||
const uint32 dither4, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
vbroadcastss xmm6, [esp + 12] // dither4
|
||||
mov ecx, [esp + 16] // pix
|
||||
mov ecx, [esp + 16] // width
|
||||
vpunpcklbw xmm6, xmm6, xmm6 // make dither 32 bytes
|
||||
vpermq ymm6, ymm6, 0xd8
|
||||
vpunpcklwd ymm6, ymm6, ymm6
|
||||
@ -960,11 +960,11 @@ void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb,
|
||||
|
||||
// TODO(fbarchard): Improve sign extension/packing.
|
||||
__declspec(naked)
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm4, xmm4 // generate mask 0x0000001f
|
||||
psrld xmm4, 27
|
||||
movdqa xmm5, xmm4 // generate mask 0x000003e0
|
||||
@ -1001,11 +1001,11 @@ void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm4, xmm4 // generate mask 0xf000f000
|
||||
psllw xmm4, 12
|
||||
movdqa xmm3, xmm4 // generate mask 0x00f000f0
|
||||
@ -1031,11 +1031,11 @@ void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
|
||||
#ifdef HAS_ARGBTORGB565ROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
vpcmpeqb ymm3, ymm3, ymm3 // generate mask 0x0000001f
|
||||
vpsrld ymm3, ymm3, 27
|
||||
vpcmpeqb ymm4, ymm4, ymm4 // generate mask 0x000007e0
|
||||
@ -1068,11 +1068,11 @@ void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
|
||||
#ifdef HAS_ARGBTOARGB1555ROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
vpcmpeqb ymm4, ymm4, ymm4
|
||||
vpsrld ymm4, ymm4, 27 // generate mask 0x0000001f
|
||||
vpslld ymm5, ymm4, 5 // generate mask 0x000003e0
|
||||
@ -1108,11 +1108,11 @@ void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
|
||||
#ifdef HAS_ARGBTOARGB4444ROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_rgb
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
vpcmpeqb ymm4, ymm4, ymm4 // generate mask 0xf000f000
|
||||
vpsllw ymm4, ymm4, 12
|
||||
vpsrlw ymm3, ymm4, 8 // generate mask 0x00f000f0
|
||||
@ -1139,11 +1139,11 @@ void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix) {
|
||||
|
||||
// Convert 16 ARGB pixels (64 bytes) to 16 Y values.
|
||||
__declspec(naked)
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
movdqa xmm4, xmmword ptr kARGBToY
|
||||
movdqa xmm5, xmmword ptr kAddY16
|
||||
|
||||
@ -1174,11 +1174,11 @@ void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
// Convert 16 ARGB pixels (64 bytes) to 16 YJ values.
|
||||
// Same as ARGBToYRow but different coefficients, no add 16, but do rounding.
|
||||
__declspec(naked)
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
movdqa xmm4, xmmword ptr kARGBToYJ
|
||||
movdqa xmm5, xmmword ptr kAddYJ64
|
||||
|
||||
@ -1215,11 +1215,11 @@ static const lvec32 kPermdARGBToY_AVX = {
|
||||
|
||||
// Convert 32 ARGB pixels (128 bytes) to 32 Y values.
|
||||
__declspec(naked)
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
vbroadcastf128 ymm4, xmmword ptr kARGBToY
|
||||
vbroadcastf128 ymm5, xmmword ptr kAddY16
|
||||
vmovdqu ymm6, ymmword ptr kPermdARGBToY_AVX
|
||||
@ -1254,11 +1254,11 @@ void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
#ifdef HAS_ARGBTOYJROW_AVX2
|
||||
// Convert 32 ARGB pixels (128 bytes) to 32 Y values.
|
||||
__declspec(naked)
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
vbroadcastf128 ymm4, xmmword ptr kARGBToYJ
|
||||
vbroadcastf128 ymm5, xmmword ptr kAddYJ64
|
||||
vmovdqu ymm6, ymmword ptr kPermdARGBToY_AVX
|
||||
@ -1293,11 +1293,11 @@ void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
#endif // HAS_ARGBTOYJROW_AVX2
|
||||
|
||||
__declspec(naked)
|
||||
void BGRAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void BGRAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
movdqa xmm4, xmmword ptr kBGRAToY
|
||||
movdqa xmm5, xmmword ptr kAddY16
|
||||
|
||||
@ -1326,11 +1326,11 @@ void BGRAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void ABGRToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void ABGRToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
movdqa xmm4, xmmword ptr kABGRToY
|
||||
movdqa xmm5, xmmword ptr kAddY16
|
||||
|
||||
@ -1359,11 +1359,11 @@ void ABGRToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
}
|
||||
|
||||
__declspec(naked)
|
||||
void RGBAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix) {
|
||||
void RGBAToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] /* src_argb */
|
||||
mov edx, [esp + 8] /* dst_y */
|
||||
mov ecx, [esp + 12] /* pix */
|
||||
mov ecx, [esp + 12] /* width */
|
||||
movdqa xmm4, xmmword ptr kRGBAToY
|
||||
movdqa xmm5, xmmword ptr kAddY16
|
||||
|
||||
@ -1401,7 +1401,7 @@ void ARGBToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kARGBToV
|
||||
movdqa xmm7, xmmword ptr kARGBToU
|
||||
@ -1471,7 +1471,7 @@ void ARGBToUVJRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
movdqa xmm5, xmmword ptr kAddUVJ128
|
||||
movdqa xmm6, xmmword ptr kARGBToVJ
|
||||
movdqa xmm7, xmmword ptr kARGBToUJ
|
||||
@ -1543,7 +1543,7 @@ void ARGBToUVRow_AVX2(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
vbroadcastf128 ymm5, xmmword ptr kAddUV128
|
||||
vbroadcastf128 ymm6, xmmword ptr kARGBToV
|
||||
vbroadcastf128 ymm7, xmmword ptr kARGBToU
|
||||
@ -1606,7 +1606,7 @@ void ARGBToUV444Row_SSSE3(const uint8* src_argb0,
|
||||
mov eax, [esp + 4 + 4] // src_argb
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kARGBToV
|
||||
movdqa xmm7, xmmword ptr kARGBToU
|
||||
@ -1663,7 +1663,7 @@ void ARGBToUV422Row_SSSE3(const uint8* src_argb0,
|
||||
mov eax, [esp + 4 + 4] // src_argb
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kARGBToV
|
||||
movdqa xmm7, xmmword ptr kARGBToU
|
||||
@ -1723,7 +1723,7 @@ void BGRAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kBGRAToV
|
||||
movdqa xmm7, xmmword ptr kBGRAToU
|
||||
@ -1793,7 +1793,7 @@ void ABGRToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kABGRToV
|
||||
movdqa xmm7, xmmword ptr kABGRToU
|
||||
@ -1863,7 +1863,7 @@ void RGBAToUVRow_SSSE3(const uint8* src_argb0, int src_stride_argb,
|
||||
mov esi, [esp + 8 + 8] // src_stride_argb
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
movdqa xmm5, xmmword ptr kAddUV128
|
||||
movdqa xmm6, xmmword ptr kRGBAToV
|
||||
movdqa xmm7, xmmword ptr kRGBAToU
|
||||
@ -3638,13 +3638,14 @@ void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width) {
|
||||
|
||||
#ifdef HAS_SPLITUVROW_SSE2
|
||||
__declspec(naked)
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_uv
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
sub edi, edx
|
||||
@ -3676,13 +3677,14 @@ void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
|
||||
#ifdef HAS_SPLITUVROW_AVX2
|
||||
__declspec(naked)
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix) {
|
||||
void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
|
||||
int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_uv
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
sub edi, edx
|
||||
@ -4024,11 +4026,11 @@ void ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int count) {
|
||||
|
||||
#ifdef HAS_YUY2TOYROW_AVX2
|
||||
__declspec(naked)
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_yuy2
|
||||
mov edx, [esp + 8] // dst_y
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
|
||||
@ -4051,7 +4053,7 @@ void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix) {
|
||||
|
||||
__declspec(naked)
|
||||
void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push esi
|
||||
push edi
|
||||
@ -4059,7 +4061,7 @@ void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
mov esi, [esp + 8 + 8] // stride_yuy2
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
sub edi, edx
|
||||
@ -4095,13 +4097,13 @@ void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
|
||||
|
||||
__declspec(naked)
|
||||
void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_yuy2
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
sub edi, edx
|
||||
@ -4134,11 +4136,11 @@ void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToYRow_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_y, int pix) {
|
||||
uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_uyvy
|
||||
mov edx, [esp + 8] // dst_y
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
|
||||
convertloop:
|
||||
vmovdqu ymm0, [eax]
|
||||
@ -4159,7 +4161,7 @@ void UYVYToYRow_AVX2(const uint8* src_uyvy,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push esi
|
||||
push edi
|
||||
@ -4167,7 +4169,7 @@ void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
mov esi, [esp + 8 + 8] // stride_yuy2
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
sub edi, edx
|
||||
@ -4203,13 +4205,13 @@ void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_yuy2
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
vpcmpeqb ymm5, ymm5, ymm5 // generate mask 0x00ff00ff
|
||||
vpsrlw ymm5, ymm5, 8
|
||||
sub edi, edx
|
||||
@ -4244,11 +4246,11 @@ void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
|
||||
#ifdef HAS_YUY2TOYROW_SSE2
|
||||
__declspec(naked)
|
||||
void YUY2ToYRow_SSE2(const uint8* src_yuy2,
|
||||
uint8* dst_y, int pix) {
|
||||
uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_yuy2
|
||||
mov edx, [esp + 8] // dst_y
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
|
||||
@ -4269,7 +4271,7 @@ void YUY2ToYRow_SSE2(const uint8* src_yuy2,
|
||||
|
||||
__declspec(naked)
|
||||
void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push esi
|
||||
push edi
|
||||
@ -4277,7 +4279,7 @@ void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
mov esi, [esp + 8 + 8] // stride_yuy2
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
sub edi, edx
|
||||
@ -4312,13 +4314,13 @@ void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
|
||||
|
||||
__declspec(naked)
|
||||
void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_yuy2
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
sub edi, edx
|
||||
@ -4348,11 +4350,11 @@ void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToYRow_SSE2(const uint8* src_uyvy,
|
||||
uint8* dst_y, int pix) {
|
||||
uint8* dst_y, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_uyvy
|
||||
mov edx, [esp + 8] // dst_y
|
||||
mov ecx, [esp + 12] // pix
|
||||
mov ecx, [esp + 12] // width
|
||||
|
||||
convertloop:
|
||||
movdqu xmm0, [eax]
|
||||
@ -4371,7 +4373,7 @@ void UYVYToYRow_SSE2(const uint8* src_uyvy,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push esi
|
||||
push edi
|
||||
@ -4379,7 +4381,7 @@ void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
mov esi, [esp + 8 + 8] // stride_yuy2
|
||||
mov edx, [esp + 8 + 12] // dst_u
|
||||
mov edi, [esp + 8 + 16] // dst_v
|
||||
mov ecx, [esp + 8 + 20] // pix
|
||||
mov ecx, [esp + 8 + 20] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
sub edi, edx
|
||||
@ -4414,13 +4416,13 @@ void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
|
||||
|
||||
__declspec(naked)
|
||||
void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
|
||||
uint8* dst_u, uint8* dst_v, int pix) {
|
||||
uint8* dst_u, uint8* dst_v, int width) {
|
||||
__asm {
|
||||
push edi
|
||||
mov eax, [esp + 4 + 4] // src_yuy2
|
||||
mov edx, [esp + 4 + 8] // dst_u
|
||||
mov edi, [esp + 4 + 12] // dst_v
|
||||
mov ecx, [esp + 4 + 16] // pix
|
||||
mov ecx, [esp + 4 + 16] // width
|
||||
pcmpeqb xmm5, xmm5 // generate mask 0x00ff00ff
|
||||
psrlw xmm5, 8
|
||||
sub edi, edx
|
||||
@ -6126,13 +6128,13 @@ void InterpolateRow_SSE2(uint8* dst_ptr, const uint8* src_ptr,
|
||||
// For BGRAToARGB, ABGRToARGB, RGBAToARGB, and ARGBToRGBA.
|
||||
__declspec(naked)
|
||||
void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // shuffler
|
||||
movdqu xmm5, [ecx]
|
||||
mov ecx, [esp + 16] // pix
|
||||
mov ecx, [esp + 16] // width
|
||||
|
||||
wloop:
|
||||
movdqu xmm0, [eax]
|
||||
@ -6152,13 +6154,13 @@ void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
|
||||
#ifdef HAS_ARGBSHUFFLEROW_AVX2
|
||||
__declspec(naked)
|
||||
void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
__asm {
|
||||
mov eax, [esp + 4] // src_argb
|
||||
mov edx, [esp + 8] // dst_argb
|
||||
mov ecx, [esp + 12] // shuffler
|
||||
vbroadcastf128 ymm5, [ecx] // same shuffle in high as low.
|
||||
mov ecx, [esp + 16] // pix
|
||||
mov ecx, [esp + 16] // width
|
||||
|
||||
wloop:
|
||||
vmovdqu ymm0, [eax]
|
||||
@ -6180,14 +6182,14 @@ void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
|
||||
|
||||
__declspec(naked)
|
||||
void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
|
||||
const uint8* shuffler, int pix) {
|
||||
const uint8* shuffler, int width) {
|
||||
__asm {
|
||||
push ebx
|
||||
push esi
|
||||
mov eax, [esp + 8 + 4] // src_argb
|
||||
mov edx, [esp + 8 + 8] // dst_argb
|
||||
mov esi, [esp + 8 + 12] // shuffler
|
||||
mov ecx, [esp + 8 + 16] // pix
|
||||
mov ecx, [esp + 8 + 16] // width
|
||||
pxor xmm5, xmm5
|
||||
|
||||
mov ebx, [esi] // shuffler
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user