Unify the many definitions of NELEMENTS

Change-Id: Ie52ce24ca9eca272dfacfb17483ec7b7f2c126d4
diff --git a/aom/aom_integer.h b/aom/aom_integer.h
index 2e8f23f..bd1fe27 100644
--- a/aom/aom_integer.h
+++ b/aom/aom_integer.h
@@ -61,4 +61,6 @@
 #include <inttypes.h>
 #endif
 
+#define NELEMENTS(x) (int)(sizeof(x) / sizeof(x[0]))
+
 #endif  // AOM_AOM_INTEGER_H_
diff --git a/aom_dsp/aom_dsp_common.h b/aom_dsp/aom_dsp_common.h
index 3807ae0..5b10432 100644
--- a/aom_dsp/aom_dsp_common.h
+++ b/aom_dsp/aom_dsp_common.h
@@ -31,8 +31,6 @@
 #define AOMMIN(x, y) (((x) < (y)) ? (x) : (y))
 #define AOMMAX(x, y) (((x) > (y)) ? (x) : (y))
 
-#define NELEMENTS(x) (sizeof((x)) / sizeof((x)[0]))
-
 #define IMPLIES(a, b) (!(a) || (b))  //  Logical 'a implies b' (or 'a -> b')
 
 #define IS_POWER_OF_TWO(x) (((x) & ((x)-1)) == 0)
diff --git a/test/av1_convolve_test.cc b/test/av1_convolve_test.cc
index 5ccf397..3947c71 100644
--- a/test/av1_convolve_test.cc
+++ b/test/av1_convolve_test.cc
@@ -145,7 +145,7 @@
 };
 
 int bsize_ls[] = { 1, 2, 4, 8, 16, 32, 64, 3, 7, 15, 31, 63 };
-int bsize_num = sizeof(bsize_ls) / sizeof(bsize_ls[0]);
+int bsize_num = NELEMENTS(bsize_ls);
 
 TEST_P(Av1ConvolveTest, av1_convolve_vert) {
   const int y_step_q4 = 16;
diff --git a/test/av1_inv_txfm1d_test.cc b/test/av1_inv_txfm1d_test.cc
index a2919a5..46d01f0 100644
--- a/test/av1_inv_txfm1d_test.cc
+++ b/test/av1_inv_txfm1d_test.cc
@@ -47,7 +47,7 @@
 
 TEST(av1_inv_txfm1d, round_trip) {
   ACMRandom rnd(ACMRandom::DeterministicSeed());
-  for (int si = 0; si < ARRAY_SIZE(fwd_txfm_func_ls); ++si) {
+  for (int si = 0; si < NELEMENTS(fwd_txfm_func_ls); ++si) {
     int txfm_size = txfm_size_ls[si];
 
     for (int ti = 0; ti < txfm_type_num; ++ti) {
@@ -63,7 +63,7 @@
         int32_t output[64];
         int32_t round_trip_output[64];
 
-        assert(txfm_size <= ARRAY_SIZE(input));
+        assert(txfm_size <= NELEMENTS(input));
 
         for (int ni = 0; ni < txfm_size; ++ni) {
           input[ni] = rnd.Rand16() % input_base - rnd.Rand16() % input_base;
diff --git a/test/av1_inv_txfm2d_test.cc b/test/av1_inv_txfm2d_test.cc
index 7d31673..a630f26 100644
--- a/test/av1_inv_txfm2d_test.cc
+++ b/test/av1_inv_txfm2d_test.cc
@@ -56,7 +56,7 @@
 
     for (int ci = 0; ci < count; ci++) {
       int16_t expected[64 * 64] = { 0 };
-      assert(txfm2d_size_ < ARRAY_SIZE(expected));
+      assert(txfm2d_size_ < NELEMENTS(expected));
 
       for (int ni = 0; ni < txfm2d_size_; ++ni) {
         if (ci == 0) {
@@ -68,11 +68,11 @@
       }
 
       int32_t coeffs[64 * 64] = { 0 };
-      assert(txfm2d_size_ < ARRAY_SIZE(coeffs));
+      assert(txfm2d_size_ < NELEMENTS(coeffs));
       fwd_txfm_func(expected, coeffs, txfm1d_size_, tx_type_, bd);
 
       uint16_t actual[64 * 64] = { 0 };
-      assert(txfm2d_size_ < ARRAY_SIZE(actual));
+      assert(txfm2d_size_ < NELEMENTS(actual));
       inv_txfm_func(coeffs, actual, txfm1d_size_, tx_type_, bd);
 
       for (int ni = 0; ni < txfm2d_size_; ++ni) {
diff --git a/test/decode_api_test.cc b/test/decode_api_test.cc
index 6bd72a4..8b1c9d2 100644
--- a/test/decode_api_test.cc
+++ b/test/decode_api_test.cc
@@ -13,13 +13,12 @@
 
 #include "./aom_config.h"
 #include "test/ivf_video_source.h"
+#include "test/util.h"
 #include "aom/aomdx.h"
 #include "aom/aom_decoder.h"
 
 namespace {
 
-#define NELEMENTS(x) static_cast<int>(sizeof(x) / sizeof(x[0]))
-
 TEST(DecodeAPI, InvalidParams) {
   static const aom_codec_iface_t *kCodecs[] = {
 #if CONFIG_AV1_DECODER
diff --git a/test/encode_api_test.cc b/test/encode_api_test.cc
index 14e43c8..80c42fe 100644
--- a/test/encode_api_test.cc
+++ b/test/encode_api_test.cc
@@ -12,13 +12,12 @@
 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
 
 #include "./aom_config.h"
+#include "test/util.h"
 #include "aom/aomcx.h"
 #include "aom/aom_encoder.h"
 
 namespace {
 
-#define NELEMENTS(x) static_cast<int>(sizeof(x) / sizeof(x[0]))
-
 TEST(EncodeAPI, InvalidParams) {
   static const aom_codec_iface_t *kCodecs[] = {
 #if CONFIG_AV1_ENCODER
diff --git a/test/encode_perf_test.cc b/test/encode_perf_test.cc
index fd9f67e..5a37b48 100644
--- a/test/encode_perf_test.cc
+++ b/test/encode_perf_test.cc
@@ -53,8 +53,6 @@
 const int kEncodePerfTestSpeeds[] = { 5, 6, 7, 8 };
 const int kEncodePerfTestThreads[] = { 1, 2, 4 };
 
-#define NELEMENTS(x) (sizeof((x)) / sizeof((x)[0]))
-
 class AV1EncodePerfTest
     : public ::libaom_test::CodecTestWithParam<libaom_test::TestMode>,
       public ::libaom_test::EncoderTest {
diff --git a/test/util.h b/test/util.h
index 83d7903..d1587b6 100644
--- a/test/util.h
+++ b/test/util.h
@@ -15,10 +15,9 @@
 #include <stdio.h>
 #include <math.h>
 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
+#include "aom/aom_integer.h"
 #include "aom/aom_image.h"
 
-#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof(x[0]))
-
 // Macros
 #define GET_PARAM(k) std::tr1::get<k>(GetParam())