Allocate memory using appropriate expected alignment in unit tests.

Fixes crashes of test_libvpx on 32-bit Linux.

Change-Id: If94e7628a86b788ca26c004861dee2f162e47ed6
This commit is contained in:
Ronald S. Bultje
2013-06-21 17:03:57 -07:00
parent 98188e0e82
commit ac6ea2ab91
2 changed files with 16 additions and 10 deletions

View File

@@ -18,6 +18,7 @@
#include "vpx/vpx_integer.h" #include "vpx/vpx_integer.h"
#include "vpx_config.h" #include "vpx_config.h"
extern "C" { extern "C" {
#include "vpx_mem/vpx_mem.h"
#if CONFIG_VP8_ENCODER #if CONFIG_VP8_ENCODER
# include "vp8/common/variance.h" # include "vp8/common/variance.h"
# include "vp8_rtcd.h" # include "vp8_rtcd.h"
@@ -205,17 +206,18 @@ class SubpelVarianceTest :
rnd(ACMRandom::DeterministicSeed()); rnd(ACMRandom::DeterministicSeed());
block_size_ = width_ * height_; block_size_ = width_ * height_;
src_ = new uint8_t[block_size_]; src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size_));
sec_ = new uint8_t[block_size_]; sec_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size_));
ref_ = new uint8_t[block_size_ + width_ + height_ + 1]; ref_ = new uint8_t[block_size_ + width_ + height_ + 1];
ASSERT_TRUE(src_ != NULL); ASSERT_TRUE(src_ != NULL);
ASSERT_TRUE(sec_ != NULL);
ASSERT_TRUE(ref_ != NULL); ASSERT_TRUE(ref_ != NULL);
} }
virtual void TearDown() { virtual void TearDown() {
delete[] src_; vpx_free(src_);
delete[] ref_; delete[] ref_;
delete[] sec_; vpx_free(sec_);
} }
protected: protected:

View File

@@ -16,6 +16,7 @@ extern "C" {
#include "./vpx_config.h" #include "./vpx_config.h"
#include "./vp9_rtcd.h" #include "./vp9_rtcd.h"
#include "vp9/common/vp9_blockd.h" #include "vp9/common/vp9_blockd.h"
#include "vpx_mem/vpx_mem.h"
} }
typedef void (*subtract_fn_t)(int rows, int cols, typedef void (*subtract_fn_t)(int rows, int cols,
@@ -42,9 +43,12 @@ TEST_P(VP9SubtractBlockTest, SimpleSubtract) {
bsize = static_cast<BLOCK_SIZE_TYPE>(static_cast<int>(bsize) + 1)) { bsize = static_cast<BLOCK_SIZE_TYPE>(static_cast<int>(bsize) + 1)) {
const int block_width = 4 << b_width_log2(bsize); const int block_width = 4 << b_width_log2(bsize);
const int block_height = 4 << b_height_log2(bsize); const int block_height = 4 << b_height_log2(bsize);
int16_t *diff = new int16_t[block_width * block_height * 2]; int16_t *diff = reinterpret_cast<int16_t *>(
uint8_t *pred = new uint8_t[block_width * block_height * 2]; vpx_memalign(16, sizeof(*diff) * block_width * block_height * 2));
uint8_t *src = new uint8_t[block_width * block_height * 2]; uint8_t *pred = reinterpret_cast<uint8_t *>(
vpx_memalign(16, block_width * block_height * 2));
uint8_t *src = reinterpret_cast<uint8_t *>(
vpx_memalign(16, block_width * block_height * 2));
for (int n = 0; n < 100; n++) { for (int n = 0; n < 100; n++) {
for (int r = 0; r < block_height; ++r) { for (int r = 0; r < block_height; ++r) {
@@ -80,9 +84,9 @@ TEST_P(VP9SubtractBlockTest, SimpleSubtract) {
} }
} }
} }
delete[] diff; vpx_free(diff);
delete[] pred; vpx_free(pred);
delete[] src; vpx_free(src);
} }
} }