Index: source/convert_from_argb.cc |
diff --git a/source/convert_from_argb.cc b/source/convert_from_argb.cc |
index e45bb230fe7e3df3c3fefca500a68e530bebbe8b..23ae66b256f77617b05ec120cc5a61650880d224 100644 |
--- a/source/convert_from_argb.cc |
+++ b/source/convert_from_argb.cc |
@@ -1352,6 +1352,22 @@ int ARGBToJ420(const uint8* src_argb, |
} |
} |
#endif |
+#if defined(HAS_ARGBTOYJROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBToYJRow = ARGBToYJRow_Any_MSA; |
+ if (IS_ALIGNED(width, 16)) { |
+ ARGBToYJRow = ARGBToYJRow_MSA; |
+ } |
+ } |
+#endif |
+#if defined(HAS_ARGBTOUVJROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBToUVJRow = ARGBToUVJRow_Any_MSA; |
+ if (IS_ALIGNED(width, 32)) { |
+ ARGBToUVJRow = ARGBToUVJRow_MSA; |
+ } |
+ } |
+#endif |
for (y = 0; y < height - 1; y += 2) { |
ARGBToUVJRow(src_argb, src_stride_argb, dst_u, dst_v, width); |
@@ -1436,6 +1452,22 @@ int ARGBToJ422(const uint8* src_argb, |
} |
} |
#endif |
+#if defined(HAS_ARGBTOYJROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBToYJRow = ARGBToYJRow_Any_MSA; |
+ if (IS_ALIGNED(width, 16)) { |
+ ARGBToYJRow = ARGBToYJRow_MSA; |
+ } |
+ } |
+#endif |
+#if defined(HAS_ARGBTOUVJROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBToUVJRow = ARGBToUVJRow_Any_MSA; |
+ if (IS_ALIGNED(width, 32)) { |
+ ARGBToUVJRow = ARGBToUVJRow_MSA; |
+ } |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBToUVJRow(src_argb, 0, dst_u, dst_v, width); |
@@ -1497,6 +1529,14 @@ int ARGBToJ400(const uint8* src_argb, |
} |
} |
#endif |
+#if defined(HAS_ARGBTOYJROW_MSA) |
+ if (TestCpuFlag(kCpuHasMSA)) { |
+ ARGBToYJRow = ARGBToYJRow_Any_MSA; |
+ if (IS_ALIGNED(width, 16)) { |
+ ARGBToYJRow = ARGBToYJRow_MSA; |
+ } |
+ } |
+#endif |
for (y = 0; y < height; ++y) { |
ARGBToYJRow(src_argb, dst_yj, width); |