| Index: source/convert.cc
|
| diff --git a/source/convert.cc b/source/convert.cc
|
| index 3779d999d24e3cd1c314f135cd1bbca84495a588..6bea6472e3fe984bf938446b1ebbff9976b67a85 100644
|
| --- a/source/convert.cc
|
| +++ b/source/convert.cc
|
| @@ -579,6 +579,14 @@ int ARGBToI420(const uint8* src_argb,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGBTOYROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + ARGBToYRow = ARGBToYRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 8)) {
|
| + ARGBToYRow = ARGBToYRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_ARGBTOYROW_MSA)
|
| if (TestCpuFlag(kCpuHasMSA)) {
|
| ARGBToYRow = ARGBToYRow_Any_MSA;
|
| @@ -587,6 +595,14 @@ int ARGBToI420(const uint8* src_argb,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ARGBTOUVROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + ARGBToUVRow = ARGBToUVRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ARGBToUVRow = ARGBToUVRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| #if defined(HAS_ARGBTOUVROW_MSA)
|
| if (TestCpuFlag(kCpuHasMSA)) {
|
| ARGBToUVRow = ARGBToUVRow_Any_MSA;
|
| @@ -664,6 +680,22 @@ int BGRAToI420(const uint8* src_bgra,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_BGRATOYROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + BGRAToYRow = BGRAToYRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 8)) {
|
| + BGRAToYRow = BGRAToYRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| +#if defined(HAS_BGRATOUVROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + BGRAToUVRow = BGRAToUVRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + BGRAToUVRow = BGRAToUVRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
|
|
| for (y = 0; y < height - 1; y += 2) {
|
| BGRAToUVRow(src_bgra, src_stride_bgra, dst_u, dst_v, width);
|
| @@ -733,6 +765,22 @@ int ABGRToI420(const uint8* src_abgr,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_ABGRTOYROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + ABGRToYRow = ABGRToYRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 8)) {
|
| + ABGRToYRow = ABGRToYRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| +#if defined(HAS_ABGRTOUVROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + ABGRToUVRow = ABGRToUVRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + ABGRToUVRow = ABGRToUVRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
|
|
| for (y = 0; y < height - 1; y += 2) {
|
| ABGRToUVRow(src_abgr, src_stride_abgr, dst_u, dst_v, width);
|
| @@ -802,6 +850,22 @@ int RGBAToI420(const uint8* src_rgba,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_RGBATOYROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + RGBAToYRow = RGBAToYRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 8)) {
|
| + RGBAToYRow = RGBAToYRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| +#if defined(HAS_RGBATOUVROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + RGBAToUVRow = RGBAToUVRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 16)) {
|
| + RGBAToUVRow = RGBAToUVRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
|
|
| for (y = 0; y < height - 1; y += 2) {
|
| RGBAToUVRow(src_rgba, src_stride_rgba, dst_u, dst_v, width);
|
| @@ -1015,6 +1079,14 @@ int RAWToI420(const uint8* src_raw,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_RAWTOARGBROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + RAWToARGBRow = RAWToARGBRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 4)) {
|
| + RAWToARGBRow = RAWToARGBRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| {
|
| // Allocate 2 rows of ARGB.
|
| const int kRowSize = (width * 4 + 31) & ~31;
|
| @@ -1143,6 +1215,14 @@ int RGB565ToI420(const uint8* src_rgb565,
|
| }
|
| }
|
| #endif
|
| +#if defined(HAS_RGB565TOARGBROW_DSPR2)
|
| + if (TestCpuFlag(kCpuHasDSPR2)) {
|
| + RGB565ToARGBRow = RGB565ToARGBRow_Any_DSPR2;
|
| + if (IS_ALIGNED(width, 8)) {
|
| + RGB565ToARGBRow = RGB565ToARGBRow_DSPR2;
|
| + }
|
| + }
|
| +#endif
|
| {
|
| // Allocate 2 rows of ARGB.
|
| const int kRowSize = (width * 4 + 31) & ~31;
|
|
|