summaryrefslogtreecommitdiff
path: root/vp8/common
diff options
context:
space:
mode:
authorJames Berry <jamesberry@google.com>2012-02-21 11:57:14 -0500
committerJames Berry <jamesberry@google.com>2012-02-21 14:52:36 -0500
commit0c1cec22050731d23267375e553398c370cabbfd (patch)
treea0ea3df032bb0c1aba1205d01c4b49b0b3af060d /vp8/common
parentb0a12a28805dcdf20836c9170a29e91290d8a530 (diff)
downloadlibvpx-0c1cec22050731d23267375e553398c370cabbfd.tar
libvpx-0c1cec22050731d23267375e553398c370cabbfd.tar.gz
libvpx-0c1cec22050731d23267375e553398c370cabbfd.tar.bz2
libvpx-0c1cec22050731d23267375e553398c370cabbfd.zip
Add unit tests for idctllm_test and idctllm_mmx
add unit tests for vp8_short_idct4x4llm_c Change-Id: I472b7c0baa365ba25dc99a3f6efccc816d27c941
Diffstat (limited to 'vp8/common')
-rwxr-xr-xvp8/common/idctllm_test.cc31
-rwxr-xr-xvp8/common/idctllm_test.h113
-rwxr-xr-xvp8/common/x86/idctllm_mmx_test.cc31
3 files changed, 175 insertions, 0 deletions
diff --git a/vp8/common/idctllm_test.cc b/vp8/common/idctllm_test.cc
new file mode 100755
index 000000000..0f6ebe7fe
--- /dev/null
+++ b/vp8/common/idctllm_test.cc
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+
+ extern "C" {
+ void vp8_short_idct4x4llm_c(short *input, unsigned char *pred_ptr,
+ int pred_stride, unsigned char *dst_ptr,
+ int dst_stride);
+}
+
+#include "vpx_config.h"
+#include "idctllm_test.h"
+namespace
+{
+
+INSTANTIATE_TEST_CASE_P(C, IDCTTest,
+ ::testing::Values(vp8_short_idct4x4llm_c));
+
+} // namespace
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/vp8/common/idctllm_test.h b/vp8/common/idctllm_test.h
new file mode 100755
index 000000000..a6a694b18
--- /dev/null
+++ b/vp8/common/idctllm_test.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+
+ #include "third_party/googletest/src/include/gtest/gtest.h"
+typedef void (*idct_fn_t)(short *input, unsigned char *pred_ptr,
+ int pred_stride, unsigned char *dst_ptr,
+ int dst_stride);
+namespace {
+class IDCTTest : public ::testing::TestWithParam<idct_fn_t>
+{
+ protected:
+ virtual void SetUp()
+ {
+ int i;
+
+ UUT = GetParam();
+ memset(input, 0, sizeof(input));
+ /* Set up guard blocks */
+ for(i=0; i<256; i++)
+ output[i] = ((i&0xF)<4&&(i<64))?0:-1;
+ }
+
+ idct_fn_t UUT;
+ short input[16];
+ unsigned char output[256];
+ unsigned char predict[256];
+};
+
+TEST_P(IDCTTest, TestGuardBlocks)
+{
+ int i;
+
+ for(i=0; i<256; i++)
+ if((i&0xF) < 4 && i<64)
+ EXPECT_EQ(0, output[i]) << i;
+ else
+ EXPECT_EQ(255, output[i]);
+}
+
+TEST_P(IDCTTest, TestAllZeros)
+{
+ int i;
+
+ UUT(input, output, 16, output, 16);
+
+ for(i=0; i<256; i++)
+ if((i&0xF) < 4 && i<64)
+ EXPECT_EQ(0, output[i]) << "i==" << i;
+ else
+ EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestAllOnes)
+{
+ int i;
+
+ input[0] = 4;
+ UUT(input, output, 16, output, 16);
+
+ for(i=0; i<256; i++)
+ if((i&0xF) < 4 && i<64)
+ EXPECT_EQ(1, output[i]) << "i==" << i;
+ else
+ EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestAddOne)
+{
+ int i;
+
+ for(i=0; i<256; i++)
+ predict[i] = i;
+
+ input[0] = 4;
+ UUT(input, predict, 16, output, 16);
+
+ for(i=0; i<256; i++)
+ if((i&0xF) < 4 && i<64)
+ EXPECT_EQ(i+1, output[i]) << "i==" << i;
+ else
+ EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestWithData)
+{
+ int i;
+
+ for(i=0; i<16; i++)
+ input[i] = i;
+
+ UUT(input, output, 16, output, 16);
+
+ for(i=0; i<256; i++)
+ if((i&0xF) > 3 || i>63)
+ EXPECT_EQ(255, output[i]) << "i==" << i;
+ else if(i == 0)
+ EXPECT_EQ(11, output[i]) << "i==" << i;
+ else if(i == 34)
+ EXPECT_EQ(1, output[i]) << "i==" << i;
+ else if(i == 2 || i == 17 || i == 32)
+ EXPECT_EQ(3, output[i]) << "i==" << i;
+ else
+ EXPECT_EQ(0, output[i]) << "i==" << i;
+}
+}
diff --git a/vp8/common/x86/idctllm_mmx_test.cc b/vp8/common/x86/idctllm_mmx_test.cc
new file mode 100755
index 000000000..8c115335e
--- /dev/null
+++ b/vp8/common/x86/idctllm_mmx_test.cc
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+
+ extern "C" {
+ void vp8_short_idct4x4llm_mmx(short *input, unsigned char *pred_ptr,
+ int pred_stride, unsigned char *dst_ptr,
+ int dst_stride);
+}
+
+#include "vp8/common/idctllm_test.h"
+
+namespace
+{
+
+INSTANTIATE_TEST_CASE_P(MMX, IDCTTest,
+ ::testing::Values(vp8_short_idct4x4llm_mmx));
+
+} // namespace
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}