diff options
author | fbarchard@google.com <fbarchard@google.com@16f28f9a-4ce2-e073-06de-1de4eb20be90> | 2012-10-26 22:49:18 +0000 |
---|---|---|
committer | fbarchard@google.com <fbarchard@google.com@16f28f9a-4ce2-e073-06de-1de4eb20be90> | 2012-10-26 22:49:18 +0000 |
commit | 6c1b2d38c685e769cf7db2806e27c8ec4c028fe3 (patch) | |
tree | 64bad34ce50bafdb814ef633a07bd4b18fd14f76 /source/convert_from.cc | |
parent | 1f399dfaf8aba0e764b52e3ab33f4cb0097d1221 (diff) | |
download | libyuv-6c1b2d38c685e769cf7db2806e27c8ec4c028fe3.tar.gz |
Mips port of libyuv. Includes functionality for convert, rotate, scale and memcpy.
BUG=126
TESTED=tested by mips
Review URL: https://webrtc-codereview.appspot.com/930005
git-svn-id: http://libyuv.googlecode.com/svn/trunk@449 16f28f9a-4ce2-e073-06de-1de4eb20be90
Diffstat (limited to 'source/convert_from.cc')
-rw-r--r-- | source/convert_from.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source/convert_from.cc b/source/convert_from.cc index 73ed900b..cb00480a 100644 --- a/source/convert_from.cc +++ b/source/convert_from.cc @@ -599,6 +599,14 @@ int I420ToARGB(const uint8* src_y, int src_stride_y, I422ToARGBRow = I422ToARGBRow_NEON; } } +#elif defined(HAS_I422TOARGBROW_MIPS_DSPR2) + if (TestCpuFlag(kCpuHasMIPS_DSPR2) && IS_ALIGNED(width, 4) && + IS_ALIGNED(src_y, 4) && IS_ALIGNED(src_stride_y, 4) && + IS_ALIGNED(src_u, 2) && IS_ALIGNED(src_stride_u, 2) && + IS_ALIGNED(src_v, 2) && IS_ALIGNED(src_stride_v, 2) && + IS_ALIGNED(dst_argb, 4) && IS_ALIGNED(dst_stride_argb, 4)) { + I422ToARGBRow = I422ToARGBRow_MIPS_DSPR2; + } #endif for (int y = 0; y < height; ++y) { @@ -652,6 +660,14 @@ int I420ToBGRA(const uint8* src_y, int src_stride_y, I422ToBGRARow = I422ToBGRARow_NEON; } } +#elif defined(HAS_I422TOBGRAROW_MIPS_DSPR2) + if (TestCpuFlag(kCpuHasMIPS_DSPR2) && IS_ALIGNED(width, 4) && + IS_ALIGNED(src_y, 4) && IS_ALIGNED(src_stride_y, 4) && + IS_ALIGNED(src_u, 2) && IS_ALIGNED(src_stride_u, 2) && + IS_ALIGNED(src_v, 2) && IS_ALIGNED(src_stride_v, 2) && + IS_ALIGNED(dst_bgra, 4) && IS_ALIGNED(dst_stride_bgra, 4)) { + I422ToBGRARow = I422ToBGRARow_MIPS_DSPR2; + } #endif for (int y = 0; y < height; ++y) { @@ -909,6 +925,13 @@ int I420ToRGB565(const uint8* src_y, int src_stride_y, I422ToARGBRow = I422ToARGBRow_SSSE3; } } +#elif defined(HAS_I422TOARGBROW_MIPS_DSPR2) + if (TestCpuFlag(kCpuHasMIPS_DSPR2) && IS_ALIGNED(width, 4) && + IS_ALIGNED(src_y, 4) && IS_ALIGNED(src_stride_y, 4) && + IS_ALIGNED(src_u, 2) && IS_ALIGNED(src_stride_u, 2) && + IS_ALIGNED(src_v, 2) && IS_ALIGNED(src_stride_v, 2)) { + I422ToARGBRow = I422ToARGBRow_MIPS_DSPR2; + } #endif SIMD_ALIGNED(uint8 row[kMaxStride]); @@ -975,6 +998,14 @@ int I420ToARGB1555(const uint8* src_y, int src_stride_y, I422ToARGBRow = I422ToARGBRow_SSSE3; } } +#elif defined(HAS_I422TOARGBROW_MIPS_DSPR2) + if (TestCpuFlag(kCpuHasMIPS_DSPR2) && IS_ALIGNED(width, 4) && + IS_ALIGNED(src_y, 4) && IS_ALIGNED(src_stride_y, 4) && + IS_ALIGNED(src_u, 2) && IS_ALIGNED(src_stride_u, 2) && + IS_ALIGNED(src_v, 2) && IS_ALIGNED(src_stride_v, 2) && + IS_ALIGNED(dst_argb, 4) && IS_ALIGNED(dst_stride_argb, 4)) { + I422ToARGBRow = I422ToARGBRow_MIPS_DSPR2; + } #endif SIMD_ALIGNED(uint8 row[kMaxStride]); @@ -1041,6 +1072,14 @@ int I420ToARGB4444(const uint8* src_y, int src_stride_y, I422ToARGBRow = I422ToARGBRow_SSSE3; } } +#elif defined(HAS_I422TOARGBROW_MIPS_DSPR2) + if (TestCpuFlag(kCpuHasMIPS_DSPR2) && IS_ALIGNED(width, 4) && + IS_ALIGNED(src_y, 4) && IS_ALIGNED(src_stride_y, 4) && + IS_ALIGNED(src_u, 2) && IS_ALIGNED(src_stride_u, 2) && + IS_ALIGNED(src_v, 2) && IS_ALIGNED(src_stride_v, 2) && + IS_ALIGNED(dst_argb, 4) && IS_ALIGNED(dst_stride_argb, 4)) { + I422ToARGBRow = I422ToARGBRow_MIPS_DSPR2; + } #endif SIMD_ALIGNED(uint8 row[kMaxStride]); |