Move large array from stack to heap

BUG=aomedia:2204

Change-Id: I90aa73be5daa096dac71965926f8f9431f5112ae
diff --git a/test/convolve_test.cc b/test/convolve_test.cc
index b070e04..760d2c5 100644
--- a/test/convolve_test.cc
+++ b/test/convolve_test.cc
@@ -273,6 +273,8 @@
     input_ = reinterpret_cast<uint8_t *>(
                  aom_memalign(kDataAlignment, kInputBufferSize + 1)) +
              1;
+    ref8_ = reinterpret_cast<uint8_t *>(
+        aom_memalign(kDataAlignment, kOutputStride * kMaxDimension));
     output_ = reinterpret_cast<uint8_t *>(
         aom_memalign(kDataAlignment, kOutputBufferSize));
     output_ref_ = reinterpret_cast<uint8_t *>(
@@ -280,6 +282,8 @@
     input16_ = reinterpret_cast<uint16_t *>(aom_memalign(
                    kDataAlignment, (kInputBufferSize + 1) * sizeof(uint16_t))) +
                1;
+    ref16_ = reinterpret_cast<uint16_t *>(aom_memalign(
+        kDataAlignment, kOutputStride * kMaxDimension * sizeof(uint16_t)));
     output16_ = reinterpret_cast<uint16_t *>(
         aom_memalign(kDataAlignment, (kOutputBufferSize) * sizeof(uint16_t)));
     output16_ref_ = reinterpret_cast<uint16_t *>(
@@ -291,12 +295,16 @@
   static void TearDownTestCase() {
     aom_free(input_ - 1);
     input_ = NULL;
+    aom_free(ref8_);
+    ref8_ = NULL;
     aom_free(output_);
     output_ = NULL;
     aom_free(output_ref_);
     output_ref_ = NULL;
     aom_free(input16_ - 1);
     input16_ = NULL;
+    aom_free(ref16_);
+    ref16_ = NULL;
     aom_free(output16_);
     output16_ = NULL;
     aom_free(output16_ref_);
@@ -449,18 +457,22 @@
 
   const ConvolveFunctions *UUT_;
   static uint8_t *input_;
+  static uint8_t *ref8_;
   static uint8_t *output_;
   static uint8_t *output_ref_;
   static uint16_t *input16_;
+  static uint16_t *ref16_;
   static uint16_t *output16_;
   static uint16_t *output16_ref_;
   int mask_;
 };
 
 uint8_t *ConvolveTest::input_ = NULL;
+uint8_t *ConvolveTest::ref8_ = NULL;
 uint8_t *ConvolveTest::output_ = NULL;
 uint8_t *ConvolveTest::output_ref_ = NULL;
 uint16_t *ConvolveTest::input16_ = NULL;
+uint16_t *ConvolveTest::ref16_ = NULL;
 uint16_t *ConvolveTest::output16_ = NULL;
 uint16_t *ConvolveTest::output16_ref_ = NULL;
 
@@ -517,13 +529,11 @@
 TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) {
   uint8_t *const in = input();
   uint8_t *const out = output();
-  uint8_t ref8[kOutputStride * kMaxDimension];
-  uint16_t ref16[kOutputStride * kMaxDimension];
   uint8_t *ref;
   if (UUT_->use_highbd_ == 0) {
-    ref = ref8;
+    ref = ref8_;
   } else {
-    ref = CONVERT_TO_BYTEPTR(ref16);
+    ref = CONVERT_TO_BYTEPTR(ref16_);
   }
   int subpel_search;
   for (subpel_search = USE_4_TAPS; subpel_search <= USE_8_TAPS;
@@ -572,13 +582,11 @@
 TEST_P(ConvolveTest, FilterExtremes) {
   uint8_t *const in = input();
   uint8_t *const out = output();
-  uint8_t ref8[kOutputStride * kMaxDimension];
-  uint16_t ref16[kOutputStride * kMaxDimension];
   uint8_t *ref;
   if (UUT_->use_highbd_ == 0) {
-    ref = ref8;
+    ref = ref8_;
   } else {
-    ref = CONVERT_TO_BYTEPTR(ref16);
+    ref = CONVERT_TO_BYTEPTR(ref16_);
   }
 
   // Populate ref and out with some random data
@@ -678,13 +686,11 @@
 TEST_P(ConvolveTest, DISABLED_Speed) {
   uint8_t *const in = input();
   uint8_t *const out = output();
-  uint8_t ref8[kOutputStride * kMaxDimension];
-  uint16_t ref16[kOutputStride * kMaxDimension];
   uint8_t *ref;
   if (UUT_->use_highbd_ == 0) {
-    ref = ref8;
+    ref = ref8_;
   } else {
-    ref = CONVERT_TO_BYTEPTR(ref16);
+    ref = CONVERT_TO_BYTEPTR(ref16_);
   }
 
   // Populate ref and out with some random data