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; |