Merge changes from topic 'clang-tidy'

* changes:
  *_perf_test.cc: correct DoDecode signature
  test: apply clang-tidy google-readability-braces-around-statements
This commit is contained in:
James Zern 2016-08-08 20:12:42 +00:00 committed by Gerrit Code Review
commit cfd92dab18
28 changed files with 179 additions and 102 deletions

View File

@ -37,11 +37,12 @@ int CheckMb(const vpx_image_t &current, const vpx_image_t &previous, int mb_r,
for (; r < r_top; ++r) { for (; r < r_top; ++r) {
for (int c = c0; c < c_top; ++c) { for (int c = c0; c < c_top; ++c) {
if (current.planes[plane][current.stride[plane] * r + c] != if (current.planes[plane][current.stride[plane] * r + c] !=
previous.planes[plane][previous.stride[plane] * r + c]) previous.planes[plane][previous.stride[plane] * r + c]) {
return 1; return 1;
} }
} }
} }
}
return 0; return 0;
} }

View File

@ -55,15 +55,17 @@ class AverageTestBase : public ::testing::Test {
// Sum Pixels // Sum Pixels
unsigned int ReferenceAverage8x8(const uint8_t *source, int pitch) { unsigned int ReferenceAverage8x8(const uint8_t *source, int pitch) {
unsigned int average = 0; unsigned int average = 0;
for (int h = 0; h < 8; ++h) for (int h = 0; h < 8; ++h) {
for (int w = 0; w < 8; ++w) average += source[h * pitch + w]; for (int w = 0; w < 8; ++w) average += source[h * pitch + w];
}
return ((average + 32) >> 6); return ((average + 32) >> 6);
} }
unsigned int ReferenceAverage4x4(const uint8_t *source, int pitch) { unsigned int ReferenceAverage4x4(const uint8_t *source, int pitch) {
unsigned int average = 0; unsigned int average = 0;
for (int h = 0; h < 4; ++h) for (int h = 0; h < 4; ++h) {
for (int w = 0; w < 4; ++w) average += source[h * pitch + w]; for (int w = 0; w < 4; ++w) average += source[h * pitch + w];
}
return ((average + 8) >> 4); return ((average + 8) >> 4);
} }

View File

@ -100,13 +100,14 @@ class BlockinessTestBase : public ::testing::Test {
void FillCheckerboard(uint8_t *data, int stride) { void FillCheckerboard(uint8_t *data, int stride) {
for (int h = 0; h < height_; h += 4) { for (int h = 0; h < height_; h += 4) {
for (int w = 0; w < width_; w += 4) { for (int w = 0; w < width_; w += 4) {
if (((h / 4) ^ (w / 4)) & 1) if (((h / 4) ^ (w / 4)) & 1) {
FillConstant(data + h * stride + w, stride, 255, 4, 4); FillConstant(data + h * stride + w, stride, 255, 4, 4);
else } else {
FillConstant(data + h * stride + w, stride, 0, 4, 4); FillConstant(data + h * stride + w, stride, 0, 4, 4);
} }
} }
} }
}
void Blur(uint8_t *data, int stride, int taps) { void Blur(uint8_t *data, int stride, int taps) {
int sum = 0; int sum = 0;

View File

@ -346,18 +346,20 @@ class ConvolveTest : public ::testing::TestWithParam<ConvolveParam> {
virtual void SetUp() { virtual void SetUp() {
UUT_ = GET_PARAM(2); UUT_ = GET_PARAM(2);
#if CONFIG_VP9_HIGHBITDEPTH #if CONFIG_VP9_HIGHBITDEPTH
if (UUT_->use_highbd_ != 0) if (UUT_->use_highbd_ != 0) {
mask_ = (1 << UUT_->use_highbd_) - 1; mask_ = (1 << UUT_->use_highbd_) - 1;
else } else {
mask_ = 255; mask_ = 255;
}
#endif #endif
/* Set up guard blocks for an inner block centered in the outer block */ /* Set up guard blocks for an inner block centered in the outer block */
for (int i = 0; i < kOutputBufferSize; ++i) { for (int i = 0; i < kOutputBufferSize; ++i) {
if (IsIndexInBorder(i)) if (IsIndexInBorder(i)) {
output_[i] = 255; output_[i] = 255;
else } else {
output_[i] = 0; output_[i] = 0;
} }
}
::libvpx_test::ACMRandom prng; ::libvpx_test::ACMRandom prng;
for (int i = 0; i < kInputBufferSize; ++i) { for (int i = 0; i < kInputBufferSize; ++i) {
@ -535,11 +537,12 @@ TEST_P(ConvolveTest, Copy) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(out, y * kOutputStride + x), ASSERT_EQ(lookup(out, y * kOutputStride + x),
lookup(in, y * kInputStride + x)) lookup(in, y * kInputStride + x))
<< "(" << x << "," << y << ")"; << "(" << x << "," << y << ")";
}
} }
TEST_P(ConvolveTest, Avg) { TEST_P(ConvolveTest, Avg) {
@ -553,13 +556,14 @@ TEST_P(ConvolveTest, Avg) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(out, y * kOutputStride + x), ASSERT_EQ(lookup(out, y * kOutputStride + x),
ROUND_POWER_OF_TWO(lookup(in, y * kInputStride + x) + ROUND_POWER_OF_TWO(lookup(in, y * kInputStride + x) +
lookup(out_ref, y * kOutputStride + x), lookup(out_ref, y * kOutputStride + x),
1)) 1))
<< "(" << x << "," << y << ")"; << "(" << x << "," << y << ")";
}
} }
TEST_P(ConvolveTest, CopyHoriz) { TEST_P(ConvolveTest, CopyHoriz) {
@ -574,11 +578,12 @@ TEST_P(ConvolveTest, CopyHoriz) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(out, y * kOutputStride + x), ASSERT_EQ(lookup(out, y * kOutputStride + x),
lookup(in, y * kInputStride + x)) lookup(in, y * kInputStride + x))
<< "(" << x << "," << y << ")"; << "(" << x << "," << y << ")";
}
} }
TEST_P(ConvolveTest, CopyVert) { TEST_P(ConvolveTest, CopyVert) {
@ -593,11 +598,12 @@ TEST_P(ConvolveTest, CopyVert) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(out, y * kOutputStride + x), ASSERT_EQ(lookup(out, y * kOutputStride + x),
lookup(in, y * kInputStride + x)) lookup(in, y * kInputStride + x))
<< "(" << x << "," << y << ")"; << "(" << x << "," << y << ")";
}
} }
TEST_P(ConvolveTest, Copy2D) { TEST_P(ConvolveTest, Copy2D) {
@ -612,11 +618,12 @@ TEST_P(ConvolveTest, Copy2D) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(out, y * kOutputStride + x), ASSERT_EQ(lookup(out, y * kOutputStride + x),
lookup(in, y * kInputStride + x)) lookup(in, y * kInputStride + x))
<< "(" << x << "," << y << ")"; << "(" << x << "," << y << ")";
}
} }
const int kNumFilterBanks = 4; const int kNumFilterBanks = 4;
@ -690,7 +697,7 @@ TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(ref, y * kOutputStride + x), ASSERT_EQ(lookup(ref, y * kOutputStride + x),
lookup(out, y * kOutputStride + x)) lookup(out, y * kOutputStride + x))
@ -700,6 +707,7 @@ TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) {
} }
} }
} }
}
} }
TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) { TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) {
@ -767,7 +775,7 @@ TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) {
CheckGuardBlocks(); CheckGuardBlocks();
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(ref, y * kOutputStride + x), ASSERT_EQ(lookup(ref, y * kOutputStride + x),
lookup(out, y * kOutputStride + x)) lookup(out, y * kOutputStride + x))
@ -777,6 +785,7 @@ TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) {
} }
} }
} }
}
} }
TEST_P(ConvolveTest, FilterExtremes) { TEST_P(ConvolveTest, FilterExtremes) {
@ -828,11 +837,12 @@ TEST_P(ConvolveTest, FilterExtremes) {
#endif #endif
if (axis) seed_val++; if (axis) seed_val++;
} }
if (axis) if (axis) {
seed_val -= 8; seed_val -= 8;
else } else {
seed_val++; seed_val++;
} }
}
if (axis) seed_val += 8; if (axis) seed_val += 8;
for (int filter_bank = 0; filter_bank < kNumFilterBanks; ++filter_bank) { for (int filter_bank = 0; filter_bank < kNumFilterBanks; ++filter_bank) {
@ -860,7 +870,7 @@ TEST_P(ConvolveTest, FilterExtremes) {
in, kInputStride, out, kOutputStride, kInvalidFilter, 0, in, kInputStride, out, kOutputStride, kInvalidFilter, 0,
kInvalidFilter, 0, Width(), Height())); kInvalidFilter, 0, Width(), Height()));
for (int y = 0; y < Height(); ++y) for (int y = 0; y < Height(); ++y) {
for (int x = 0; x < Width(); ++x) for (int x = 0; x < Width(); ++x)
ASSERT_EQ(lookup(ref, y * kOutputStride + x), ASSERT_EQ(lookup(ref, y * kOutputStride + x),
lookup(out, y * kOutputStride + x)) lookup(out, y * kOutputStride + x))
@ -872,6 +882,7 @@ TEST_P(ConvolveTest, FilterExtremes) {
} }
} }
} }
}
} }
/* This test exercises that enough rows and columns are filtered with every /* This test exercises that enough rows and columns are filtered with every

View File

@ -46,8 +46,9 @@ class DatarateTestLarge
virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
::libvpx_test::Encoder *encoder) { ::libvpx_test::Encoder *encoder) {
if (video->frame() == 0) if (video->frame() == 0) {
encoder->Control(VP8E_SET_NOISE_SENSITIVITY, denoiser_on_); encoder->Control(VP8E_SET_NOISE_SENSITIVITY, denoiser_on_);
}
if (denoiser_offon_test_) { if (denoiser_offon_test_) {
ASSERT_GT(denoiser_offon_period_, 0) ASSERT_GT(denoiser_offon_period_, 0)
@ -476,10 +477,11 @@ TEST_P(DatarateTestVP9Large, BasicRateTargetingVBRLagNonZero) {
cfg_.rc_end_usage = VPX_VBR; cfg_.rc_end_usage = VPX_VBR;
// For non-zero lag, rate control will work (be within bounds) for // For non-zero lag, rate control will work (be within bounds) for
// real-time mode. // real-time mode.
if (deadline_ == VPX_DL_REALTIME) if (deadline_ == VPX_DL_REALTIME) {
cfg_.g_lag_in_frames = 15; cfg_.g_lag_in_frames = 15;
else } else {
cfg_.g_lag_in_frames = 0; cfg_.g_lag_in_frames = 0;
}
::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288, ::libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352, 288,
30, 1, 0, 300); 30, 1, 0, 300);

View File

@ -386,8 +386,9 @@ class Trans16x16TestBase {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-mask_, mask_]. // Initialize a test block with input range [-mask_, mask_].
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_); input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_);
}
fwd_txfm_ref(input_block, output_ref_block, pitch_, tx_type_); fwd_txfm_ref(input_block, output_ref_block, pitch_, tx_type_);
ASM_REGISTER_STATE_CHECK(RunFwdTxfm(input_block, output_block, pitch_)); ASM_REGISTER_STATE_CHECK(RunFwdTxfm(input_block, output_block, pitch_));
@ -447,10 +448,12 @@ class Trans16x16TestBase {
for (int j = 0; j < kNumCoeffs; ++j) { for (int j = 0; j < kNumCoeffs; ++j) {
input_extreme_block[j] = rnd.Rand8() % 2 ? mask_ : -mask_; input_extreme_block[j] = rnd.Rand8() % 2 ? mask_ : -mask_;
} }
if (i == 0) if (i == 0) {
for (int j = 0; j < kNumCoeffs; ++j) input_extreme_block[j] = mask_; for (int j = 0; j < kNumCoeffs; ++j) input_extreme_block[j] = mask_;
if (i == 1) }
if (i == 1) {
for (int j = 0; j < kNumCoeffs; ++j) input_extreme_block[j] = -mask_; for (int j = 0; j < kNumCoeffs; ++j) input_extreme_block[j] = -mask_;
}
fwd_txfm_ref(input_extreme_block, output_ref_block, pitch_, tx_type_); fwd_txfm_ref(input_extreme_block, output_ref_block, pitch_, tx_type_);
@ -464,8 +467,9 @@ class Trans16x16TestBase {
// quantization with maximum allowed step sizes // quantization with maximum allowed step sizes
output_ref_block[0] = (output_ref_block[0] / dc_thred) * dc_thred; output_ref_block[0] = (output_ref_block[0] / dc_thred) * dc_thred;
for (int j = 1; j < kNumCoeffs; ++j) for (int j = 1; j < kNumCoeffs; ++j) {
output_ref_block[j] = (output_ref_block[j] / ac_thred) * ac_thred; output_ref_block[j] = (output_ref_block[j] / ac_thred) * ac_thred;
}
if (bit_depth_ == VPX_BITS_8) { if (bit_depth_ == VPX_BITS_8) {
inv_txfm_ref(output_ref_block, ref, pitch_, tx_type_); inv_txfm_ref(output_ref_block, ref, pitch_, tx_type_);
ASM_REGISTER_STATE_CHECK(RunInvTxfm(output_ref_block, dst, pitch_)); ASM_REGISTER_STATE_CHECK(RunInvTxfm(output_ref_block, dst, pitch_));
@ -518,8 +522,9 @@ class Trans16x16TestBase {
} }
reference_16x16_dct_2d(in, out_r); reference_16x16_dct_2d(in, out_r);
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
coeff[j] = static_cast<tran_low_t>(round(out_r[j])); coeff[j] = static_cast<tran_low_t>(round(out_r[j]));
}
if (bit_depth_ == VPX_BITS_8) { if (bit_depth_ == VPX_BITS_8) {
ASM_REGISTER_STATE_CHECK(RunInvTxfm(coeff, dst, 16)); ASM_REGISTER_STATE_CHECK(RunInvTxfm(coeff, dst, 16));

View File

@ -37,8 +37,9 @@ void reference_32x32_dct_1d(const double in[32], double out[32]) {
const double kInvSqrt2 = 0.707106781186547524400844362104; const double kInvSqrt2 = 0.707106781186547524400844362104;
for (int k = 0; k < 32; k++) { for (int k = 0; k < 32; k++) {
out[k] = 0.0; out[k] = 0.0;
for (int n = 0; n < 32; n++) for (int n = 0; n < 32; n++) {
out[k] += in[n] * cos(kPi * (2 * n + 1) * k / 64.0); out[k] += in[n] * cos(kPi * (2 * n + 1) * k / 64.0);
}
if (k == 0) out[k] = out[k] * kInvSqrt2; if (k == 0) out[k] = out[k] * kInvSqrt2;
} }
} }
@ -174,8 +175,9 @@ TEST_P(Trans32x32Test, CoeffCheck) {
DECLARE_ALIGNED(16, tran_low_t, output_block[kNumCoeffs]); DECLARE_ALIGNED(16, tran_low_t, output_block[kNumCoeffs]);
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_); input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_);
}
const int stride = 32; const int stride = 32;
vpx_fdct32x32_c(input_block, output_ref_block, stride); vpx_fdct32x32_c(input_block, output_ref_block, stride);
@ -266,8 +268,9 @@ TEST_P(Trans32x32Test, InverseAccuracy) {
} }
reference_32x32_dct_2d(in, out_r); reference_32x32_dct_2d(in, out_r);
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
coeff[j] = static_cast<tran_low_t>(round(out_r[j])); coeff[j] = static_cast<tran_low_t>(round(out_r[j]));
}
if (bit_depth_ == VPX_BITS_8) { if (bit_depth_ == VPX_BITS_8) {
ASM_REGISTER_STATE_CHECK(inv_txfm_(coeff, dst, 32)); ASM_REGISTER_STATE_CHECK(inv_txfm_(coeff, dst, 32));
#if CONFIG_VP9_HIGHBITDEPTH #if CONFIG_VP9_HIGHBITDEPTH

View File

@ -28,7 +28,6 @@ namespace {
#define VIDEO_NAME 0 #define VIDEO_NAME 0
#define THREADS 1 #define THREADS 1
const int kMaxPsnr = 100;
const double kUsecsInSec = 1000000.0; const double kUsecsInSec = 1000000.0;
const char kNewEncodeOutputFile[] = "new_encode.ivf"; const char kNewEncodeOutputFile[] = "new_encode.ivf";
@ -154,8 +153,9 @@ class VP9NewEncodeDecodePerfTest
virtual void EndPassHook() { virtual void EndPassHook() {
if (outfile_ != NULL) { if (outfile_ != NULL) {
if (!fseek(outfile_, 0, SEEK_SET)) if (!fseek(outfile_, 0, SEEK_SET)) {
ivf_write_file_header(outfile_, &cfg_, VP9_FOURCC, out_frames_); ivf_write_file_header(outfile_, &cfg_, VP9_FOURCC, out_frames_);
}
fclose(outfile_); fclose(outfile_);
outfile_ = NULL; outfile_ = NULL;
} }
@ -165,8 +165,9 @@ class VP9NewEncodeDecodePerfTest
++out_frames_; ++out_frames_;
// Write initial file header if first frame. // Write initial file header if first frame.
if (pkt->data.frame.pts == 0) if (pkt->data.frame.pts == 0) {
ivf_write_file_header(outfile_, &cfg_, VP9_FOURCC, out_frames_); ivf_write_file_header(outfile_, &cfg_, VP9_FOURCC, out_frames_);
}
// Write frame header and data. // Write frame header and data.
ivf_write_frame_header(outfile_, out_frames_, pkt->data.frame.sz); ivf_write_frame_header(outfile_, out_frames_, pkt->data.frame.sz);
@ -174,7 +175,7 @@ class VP9NewEncodeDecodePerfTest
pkt->data.frame.sz); pkt->data.frame.sz);
} }
virtual bool DoDecode() { return false; } virtual bool DoDecode() const { return false; }
void set_speed(unsigned int speed) { speed_ = speed; } void set_speed(unsigned int speed) { speed_ = speed; }

View File

@ -97,9 +97,10 @@ void DecoderTest::RunLoop(CompressedVideoSource *video,
const vpx_image_t *img = NULL; const vpx_image_t *img = NULL;
// Get decompressed data // Get decompressed data
while ((img = dec_iter.Next())) while ((img = dec_iter.Next())) {
DecompressedFrameHook(*img, video->frame_number()); DecompressedFrameHook(*img, video->frame_number());
} }
}
delete decoder; delete decoder;
} }

View File

@ -105,7 +105,7 @@ class VP9EncodePerfTest
} }
// for performance reasons don't decode // for performance reasons don't decode
virtual bool DoDecode() { return 0; } virtual bool DoDecode() const { return false; }
double min_psnr() const { return min_psnr_; } double min_psnr() const { return min_psnr_; }
@ -126,11 +126,12 @@ TEST_P(VP9EncodePerfTest, PerfTest) {
for (size_t j = 0; j < NELEMENTS(kEncodePerfTestSpeeds); ++j) { for (size_t j = 0; j < NELEMENTS(kEncodePerfTestSpeeds); ++j) {
for (size_t k = 0; k < NELEMENTS(kEncodePerfTestThreads); ++k) { for (size_t k = 0; k < NELEMENTS(kEncodePerfTestThreads); ++k) {
if (kVP9EncodePerfTestVectors[i].width < 512 && if (kVP9EncodePerfTestVectors[i].width < 512 &&
kEncodePerfTestThreads[k] > 1) kEncodePerfTestThreads[k] > 1) {
continue; continue;
else if (kVP9EncodePerfTestVectors[i].width < 1024 && } else if (kVP9EncodePerfTestVectors[i].width < 1024 &&
kEncodePerfTestThreads[k] > 2) kEncodePerfTestThreads[k] > 2) {
continue; continue;
}
set_threads(kEncodePerfTestThreads[k]); set_threads(kEncodePerfTestThreads[k]);
SetUp(); SetUp();

View File

@ -52,10 +52,11 @@ void Encoder::InitEncoder(VideoSource *video) {
} }
void Encoder::EncodeFrame(VideoSource *video, const unsigned long frame_flags) { void Encoder::EncodeFrame(VideoSource *video, const unsigned long frame_flags) {
if (video->img()) if (video->img()) {
EncodeFrameInternal(*video, frame_flags); EncodeFrameInternal(*video, frame_flags);
else } else {
Flush(); Flush();
}
// Handle twopass stats // Handle twopass stats
CxDataIterator iter = GetCxData(); CxDataIterator iter = GetCxData();
@ -115,10 +116,11 @@ void EncoderTest::SetMode(TestMode mode) {
default: ASSERT_TRUE(false) << "Unexpected mode " << mode; default: ASSERT_TRUE(false) << "Unexpected mode " << mode;
} }
if (mode == kTwoPassGood || mode == kTwoPassBest) if (mode == kTwoPassGood || mode == kTwoPassBest) {
passes_ = 2; passes_ = 2;
else } else {
passes_ = 1; passes_ = 1;
}
} }
// The function should return "true" most of the time, therefore no early // The function should return "true" most of the time, therefore no early
// break-out is implemented within the match checking process. // break-out is implemented within the match checking process.
@ -129,23 +131,26 @@ static bool compare_img(const vpx_image_t *img1, const vpx_image_t *img2) {
const unsigned int width_y = img1->d_w; const unsigned int width_y = img1->d_w;
const unsigned int height_y = img1->d_h; const unsigned int height_y = img1->d_h;
unsigned int i; unsigned int i;
for (i = 0; i < height_y; ++i) for (i = 0; i < height_y; ++i) {
match = (memcmp(img1->planes[VPX_PLANE_Y] + i * img1->stride[VPX_PLANE_Y], match = (memcmp(img1->planes[VPX_PLANE_Y] + i * img1->stride[VPX_PLANE_Y],
img2->planes[VPX_PLANE_Y] + i * img2->stride[VPX_PLANE_Y], img2->planes[VPX_PLANE_Y] + i * img2->stride[VPX_PLANE_Y],
width_y) == 0) && width_y) == 0) &&
match; match;
}
const unsigned int width_uv = (img1->d_w + 1) >> 1; const unsigned int width_uv = (img1->d_w + 1) >> 1;
const unsigned int height_uv = (img1->d_h + 1) >> 1; const unsigned int height_uv = (img1->d_h + 1) >> 1;
for (i = 0; i < height_uv; ++i) for (i = 0; i < height_uv; ++i) {
match = (memcmp(img1->planes[VPX_PLANE_U] + i * img1->stride[VPX_PLANE_U], match = (memcmp(img1->planes[VPX_PLANE_U] + i * img1->stride[VPX_PLANE_U],
img2->planes[VPX_PLANE_U] + i * img2->stride[VPX_PLANE_U], img2->planes[VPX_PLANE_U] + i * img2->stride[VPX_PLANE_U],
width_uv) == 0) && width_uv) == 0) &&
match; match;
for (i = 0; i < height_uv; ++i) }
for (i = 0; i < height_uv; ++i) {
match = (memcmp(img1->planes[VPX_PLANE_V] + i * img1->stride[VPX_PLANE_V], match = (memcmp(img1->planes[VPX_PLANE_V] + i * img1->stride[VPX_PLANE_V],
img2->planes[VPX_PLANE_V] + i * img2->stride[VPX_PLANE_V], img2->planes[VPX_PLANE_V] + i * img2->stride[VPX_PLANE_V],
width_uv) == 0) && width_uv) == 0) &&
match; match;
}
return match; return match;
} }
@ -163,12 +168,13 @@ void EncoderTest::RunLoop(VideoSource *video) {
for (unsigned int pass = 0; pass < passes_; pass++) { for (unsigned int pass = 0; pass < passes_; pass++) {
last_pts_ = 0; last_pts_ = 0;
if (passes_ == 1) if (passes_ == 1) {
cfg_.g_pass = VPX_RC_ONE_PASS; cfg_.g_pass = VPX_RC_ONE_PASS;
else if (pass == 0) } else if (pass == 0) {
cfg_.g_pass = VPX_RC_FIRST_PASS; cfg_.g_pass = VPX_RC_FIRST_PASS;
else } else {
cfg_.g_pass = VPX_RC_LAST_PASS; cfg_.g_pass = VPX_RC_LAST_PASS;
}
BeginPassHook(pass); BeginPassHook(pass);
testing::internal::scoped_ptr<Encoder> encoder( testing::internal::scoped_ptr<Encoder> encoder(
@ -182,8 +188,9 @@ void EncoderTest::RunLoop(VideoSource *video) {
unsigned long dec_init_flags = 0; // NOLINT unsigned long dec_init_flags = 0; // NOLINT
// Use fragment decoder if encoder outputs partitions. // Use fragment decoder if encoder outputs partitions.
// NOTE: fragment decoder and partition encoder are only supported by VP8. // NOTE: fragment decoder and partition encoder are only supported by VP8.
if (init_flags_ & VPX_CODEC_USE_OUTPUT_PARTITION) if (init_flags_ & VPX_CODEC_USE_OUTPUT_PARTITION) {
dec_init_flags |= VPX_CODEC_USE_INPUT_FRAGMENTS; dec_init_flags |= VPX_CODEC_USE_INPUT_FRAGMENTS;
}
testing::internal::scoped_ptr<Decoder> decoder( testing::internal::scoped_ptr<Decoder> decoder(
codec_->CreateDecoder(dec_cfg, dec_init_flags)); codec_->CreateDecoder(dec_cfg, dec_init_flags));
bool again; bool again;

View File

@ -152,24 +152,28 @@ class ErrorResilienceTestLarge
} }
void SetErrorFrames(int num, unsigned int *list) { void SetErrorFrames(int num, unsigned int *list) {
if (num > kMaxErrorFrames) if (num > kMaxErrorFrames) {
num = kMaxErrorFrames; num = kMaxErrorFrames;
else if (num < 0) } else if (num < 0) {
num = 0; num = 0;
}
error_nframes_ = num; error_nframes_ = num;
for (unsigned int i = 0; i < error_nframes_; ++i) for (unsigned int i = 0; i < error_nframes_; ++i) {
error_frames_[i] = list[i]; error_frames_[i] = list[i];
} }
}
void SetDroppableFrames(int num, unsigned int *list) { void SetDroppableFrames(int num, unsigned int *list) {
if (num > kMaxDroppableFrames) if (num > kMaxDroppableFrames) {
num = kMaxDroppableFrames; num = kMaxDroppableFrames;
else if (num < 0) } else if (num < 0) {
num = 0; num = 0;
}
droppable_nframes_ = num; droppable_nframes_ = num;
for (unsigned int i = 0; i < droppable_nframes_; ++i) for (unsigned int i = 0; i < droppable_nframes_; ++i) {
droppable_frames_[i] = list[i]; droppable_frames_[i] = list[i];
} }
}
unsigned int GetMismatchFrames() { return mismatch_nframes_; } unsigned int GetMismatchFrames() { return mismatch_nframes_; }

View File

@ -170,8 +170,9 @@ class Trans4x4TestBase {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-mask_, mask_]. // Initialize a test block with input range [-mask_, mask_].
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_); input_block[j] = (rnd.Rand16() & mask_) - (rnd.Rand16() & mask_);
}
fwd_txfm_ref(input_block, output_ref_block, pitch_, tx_type_); fwd_txfm_ref(input_block, output_ref_block, pitch_, tx_type_);
ASM_REGISTER_STATE_CHECK(RunFwdTxfm(input_block, output_block, pitch_)); ASM_REGISTER_STATE_CHECK(RunFwdTxfm(input_block, output_block, pitch_));

View File

@ -51,8 +51,9 @@ void reference_8x8_dct_1d(const double in[8], double out[8]) {
const double kInvSqrt2 = 0.707106781186547524400844362104; const double kInvSqrt2 = 0.707106781186547524400844362104;
for (int k = 0; k < 8; k++) { for (int k = 0; k < 8; k++) {
out[k] = 0.0; out[k] = 0.0;
for (int n = 0; n < 8; n++) for (int n = 0; n < 8; n++) {
out[k] += in[n] * cos(kPi * (2 * n + 1) * k / 16.0); out[k] += in[n] * cos(kPi * (2 * n + 1) * k / 16.0);
}
if (k == 0) out[k] = out[k] * kInvSqrt2; if (k == 0) out[k] = out[k] * kInvSqrt2;
} }
} }
@ -149,19 +150,21 @@ class FwdTrans8x8TestBase {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-255, 255]. // Initialize a test block with input range [-255, 255].
for (int j = 0; j < 64; ++j) for (int j = 0; j < 64; ++j) {
test_input_block[j] = ((rnd.Rand16() >> (16 - bit_depth_)) & mask_) - test_input_block[j] = ((rnd.Rand16() >> (16 - bit_depth_)) & mask_) -
((rnd.Rand16() >> (16 - bit_depth_)) & mask_); ((rnd.Rand16() >> (16 - bit_depth_)) & mask_);
}
ASM_REGISTER_STATE_CHECK( ASM_REGISTER_STATE_CHECK(
RunFwdTxfm(test_input_block, test_output_block, pitch_)); RunFwdTxfm(test_input_block, test_output_block, pitch_));
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
if (test_output_block[j] < 0) if (test_output_block[j] < 0) {
++count_sign_block[j][0]; ++count_sign_block[j][0];
else if (test_output_block[j] > 0) } else if (test_output_block[j] > 0) {
++count_sign_block[j][1]; ++count_sign_block[j][1];
} }
} }
}
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]); const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]);
@ -178,19 +181,21 @@ class FwdTrans8x8TestBase {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-mask_ / 16, mask_ / 16]. // Initialize a test block with input range [-mask_ / 16, mask_ / 16].
for (int j = 0; j < 64; ++j) for (int j = 0; j < 64; ++j) {
test_input_block[j] = test_input_block[j] =
((rnd.Rand16() & mask_) >> 4) - ((rnd.Rand16() & mask_) >> 4); ((rnd.Rand16() & mask_) >> 4) - ((rnd.Rand16() & mask_) >> 4);
}
ASM_REGISTER_STATE_CHECK( ASM_REGISTER_STATE_CHECK(
RunFwdTxfm(test_input_block, test_output_block, pitch_)); RunFwdTxfm(test_input_block, test_output_block, pitch_));
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
if (test_output_block[j] < 0) if (test_output_block[j] < 0) {
++count_sign_block[j][0]; ++count_sign_block[j][0];
else if (test_output_block[j] > 0) } else if (test_output_block[j] > 0) {
++count_sign_block[j][1]; ++count_sign_block[j][1];
} }
} }
}
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]); const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]);
@ -399,8 +404,9 @@ class FwdTrans8x8TestBase {
} }
reference_8x8_dct_2d(in, out_r); reference_8x8_dct_2d(in, out_r);
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
coeff[j] = static_cast<tran_low_t>(round(out_r[j])); coeff[j] = static_cast<tran_low_t>(round(out_r[j]));
}
if (bit_depth_ == VPX_BITS_8) { if (bit_depth_ == VPX_BITS_8) {
ASM_REGISTER_STATE_CHECK(RunInvTxfm(coeff, dst, pitch_)); ASM_REGISTER_STATE_CHECK(RunInvTxfm(coeff, dst, pitch_));
@ -436,13 +442,15 @@ class FwdTrans8x8TestBase {
double out_r[kNumCoeffs]; double out_r[kNumCoeffs];
// Initialize a test block with input range [-mask_, mask_]. // Initialize a test block with input range [-mask_, mask_].
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
in[j] = rnd.Rand8() % 2 == 0 ? mask_ : -mask_; in[j] = rnd.Rand8() % 2 == 0 ? mask_ : -mask_;
}
RunFwdTxfm(in, coeff, pitch_); RunFwdTxfm(in, coeff, pitch_);
reference_8x8_dct_2d(in, out_r); reference_8x8_dct_2d(in, out_r);
for (int j = 0; j < kNumCoeffs; ++j) for (int j = 0; j < kNumCoeffs; ++j) {
coeff_r[j] = static_cast<tran_low_t>(round(out_r[j])); coeff_r[j] = static_cast<tran_low_t>(round(out_r[j]));
}
for (int j = 0; j < kNumCoeffs; ++j) { for (int j = 0; j < kNumCoeffs; ++j) {
const int32_t diff = coeff[j] - coeff_r[j]; const int32_t diff = coeff[j] - coeff_r[j];

View File

@ -28,8 +28,9 @@ void reference_dct_1d(double input[8], double output[8]) {
const double kInvSqrt2 = 0.707106781186547524400844362104; const double kInvSqrt2 = 0.707106781186547524400844362104;
for (int k = 0; k < 8; k++) { for (int k = 0; k < 8; k++) {
output[k] = 0.0; output[k] = 0.0;
for (int n = 0; n < 8; n++) for (int n = 0; n < 8; n++) {
output[k] += input[n] * cos(kPi * (2 * n + 1) * k / 16.0); output[k] += input[n] * cos(kPi * (2 * n + 1) * k / 16.0);
}
if (k == 0) output[k] = output[k] * kInvSqrt2; if (k == 0) output[k] = output[k] * kInvSqrt2;
} }
} }
@ -70,8 +71,9 @@ TEST(VP9Idct8x8Test, AccuracyCheck) {
for (int j = 0; j < 64; ++j) input[j] = src[j] - dst[j]; for (int j = 0; j < 64; ++j) input[j] = src[j] - dst[j];
reference_dct_2d(input, output_r); reference_dct_2d(input, output_r);
for (int j = 0; j < 64; ++j) for (int j = 0; j < 64; ++j) {
coeff[j] = static_cast<tran_low_t>(round(output_r[j])); coeff[j] = static_cast<tran_low_t>(round(output_r[j]));
}
vpx_idct8x8_64_add_c(coeff, dst, 8); vpx_idct8x8_64_add_c(coeff, dst, 8);
for (int j = 0; j < 64; ++j) { for (int j = 0; j < 64; ++j) {
const int diff = dst[j] - src[j]; const int diff = dst[j] - src[j];

View File

@ -43,11 +43,12 @@ class IDCTTest : public ::testing::TestWithParam<IdctFunc> {
TEST_P(IDCTTest, TestGuardBlocks) { TEST_P(IDCTTest, TestGuardBlocks) {
int i; int i;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++) {
if ((i & 0xF) < 4 && i < 64) if ((i & 0xF) < 4 && i < 64)
EXPECT_EQ(0, output[i]) << i; EXPECT_EQ(0, output[i]) << i;
else else
EXPECT_EQ(255, output[i]); EXPECT_EQ(255, output[i]);
}
} }
TEST_P(IDCTTest, TestAllZeros) { TEST_P(IDCTTest, TestAllZeros) {
@ -55,11 +56,12 @@ TEST_P(IDCTTest, TestAllZeros) {
ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16));
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++) {
if ((i & 0xF) < 4 && i < 64) if ((i & 0xF) < 4 && i < 64)
EXPECT_EQ(0, output[i]) << "i==" << i; EXPECT_EQ(0, output[i]) << "i==" << i;
else else
EXPECT_EQ(255, output[i]) << "i==" << i; EXPECT_EQ(255, output[i]) << "i==" << i;
}
} }
TEST_P(IDCTTest, TestAllOnes) { TEST_P(IDCTTest, TestAllOnes) {
@ -68,11 +70,12 @@ TEST_P(IDCTTest, TestAllOnes) {
input[0] = 4; input[0] = 4;
ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16));
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++) {
if ((i & 0xF) < 4 && i < 64) if ((i & 0xF) < 4 && i < 64)
EXPECT_EQ(1, output[i]) << "i==" << i; EXPECT_EQ(1, output[i]) << "i==" << i;
else else
EXPECT_EQ(255, output[i]) << "i==" << i; EXPECT_EQ(255, output[i]) << "i==" << i;
}
} }
TEST_P(IDCTTest, TestAddOne) { TEST_P(IDCTTest, TestAddOne) {
@ -82,11 +85,12 @@ TEST_P(IDCTTest, TestAddOne) {
input[0] = 4; input[0] = 4;
ASM_REGISTER_STATE_CHECK(UUT(input, predict, 16, output, 16)); ASM_REGISTER_STATE_CHECK(UUT(input, predict, 16, output, 16));
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++) {
if ((i & 0xF) < 4 && i < 64) if ((i & 0xF) < 4 && i < 64)
EXPECT_EQ(i + 1, output[i]) << "i==" << i; EXPECT_EQ(i + 1, output[i]) << "i==" << i;
else else
EXPECT_EQ(255, output[i]) << "i==" << i; EXPECT_EQ(255, output[i]) << "i==" << i;
}
} }
TEST_P(IDCTTest, TestWithData) { TEST_P(IDCTTest, TestWithData) {
@ -96,7 +100,7 @@ TEST_P(IDCTTest, TestWithData) {
ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); ASM_REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16));
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++) {
if ((i & 0xF) > 3 || i > 63) if ((i & 0xF) > 3 || i > 63)
EXPECT_EQ(255, output[i]) << "i==" << i; EXPECT_EQ(255, output[i]) << "i==" << i;
else if (i == 0) else if (i == 0)
@ -107,6 +111,7 @@ TEST_P(IDCTTest, TestWithData) {
EXPECT_EQ(3, output[i]) << "i==" << i; EXPECT_EQ(3, output[i]) << "i==" << i;
else else
EXPECT_EQ(0, output[i]) << "i==" << i; EXPECT_EQ(0, output[i]) << "i==" << i;
}
} }
INSTANTIATE_TEST_CASE_P(C, IDCTTest, ::testing::Values(vp8_short_idct4x4llm_c)); INSTANTIATE_TEST_CASE_P(C, IDCTTest, ::testing::Values(vp8_short_idct4x4llm_c));

View File

@ -35,11 +35,13 @@ class KeyframeTest
virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video,
::libvpx_test::Encoder *encoder) { ::libvpx_test::Encoder *encoder) {
if (kf_do_force_kf_) if (kf_do_force_kf_) {
frame_flags_ = (video->frame() % 3) ? 0 : VPX_EFLAG_FORCE_KF; frame_flags_ = (video->frame() % 3) ? 0 : VPX_EFLAG_FORCE_KF;
if (set_cpu_used_ && video->frame() == 1) }
if (set_cpu_used_ && video->frame() == 1) {
encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_); encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_);
} }
}
virtual void FramePktHook(const vpx_codec_cx_pkt_t *pkt) { virtual void FramePktHook(const vpx_codec_cx_pkt_t *pkt) {
if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) { if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) {

View File

@ -100,10 +100,11 @@ TEST_P(PartialIDctTest, RunQuantCheck) {
// quantization with maximum allowed step sizes // quantization with maximum allowed step sizes
test_coef_block1[0] = (output_ref_block[0] / 1336) * 1336; test_coef_block1[0] = (output_ref_block[0] / 1336) * 1336;
for (int j = 1; j < last_nonzero_; ++j) for (int j = 1; j < last_nonzero_; ++j) {
test_coef_block1[vp9_default_scan_orders[tx_size_].scan[j]] = test_coef_block1[vp9_default_scan_orders[tx_size_].scan[j]] =
(output_ref_block[j] / 1828) * 1828; (output_ref_block[j] / 1828) * 1828;
} }
}
ASM_REGISTER_STATE_CHECK(full_itxfm_(test_coef_block1, dst1, size)); ASM_REGISTER_STATE_CHECK(full_itxfm_(test_coef_block1, dst1, size));
ASM_REGISTER_STATE_CHECK(partial_itxfm_(test_coef_block1, dst2, size)); ASM_REGISTER_STATE_CHECK(partial_itxfm_(test_coef_block1, dst2, size));

View File

@ -114,9 +114,10 @@ class SADTestBase : public ::testing::TestWithParam<ParamType> {
uint8_t *GetReference(int block_idx) const { uint8_t *GetReference(int block_idx) const {
#if CONFIG_VP9_HIGHBITDEPTH #if CONFIG_VP9_HIGHBITDEPTH
if (use_high_bit_depth_) if (use_high_bit_depth_) {
return CONVERT_TO_BYTEPTR(CONVERT_TO_SHORTPTR(reference_data_) + return CONVERT_TO_BYTEPTR(CONVERT_TO_SHORTPTR(reference_data_) +
block_idx * kDataBlockSize); block_idx * kDataBlockSize);
}
#endif // CONFIG_VP9_HIGHBITDEPTH #endif // CONFIG_VP9_HIGHBITDEPTH
return reference_data_ + block_idx * kDataBlockSize; return reference_data_ + block_idx * kDataBlockSize;
} }

View File

@ -146,10 +146,11 @@ TEST_P(SixtapPredictTest, TestWithPresetData) {
ASM_REGISTER_STATE_CHECK(sixtap_predict_(&src[kSrcStride * 2 + 2 + 1], ASM_REGISTER_STATE_CHECK(sixtap_predict_(&src[kSrcStride * 2 + 2 + 1],
kSrcStride, 2, 2, dst_, kDstStride)); kSrcStride, 2, 2, dst_, kDstStride));
for (int i = 0; i < height_; ++i) for (int i = 0; i < height_; ++i) {
for (int j = 0; j < width_; ++j) for (int j = 0; j < width_; ++j)
ASSERT_EQ(expected_dst[i * kDstStride + j], dst_[i * kDstStride + j]) ASSERT_EQ(expected_dst[i * kDstStride + j], dst_[i * kDstStride + j])
<< "i==" << (i * width_ + j); << "i==" << (i * width_ + j);
}
} }
using libvpx_test::ACMRandom; using libvpx_test::ACMRandom;
@ -172,12 +173,13 @@ TEST_P(SixtapPredictTest, TestWithRandomData) {
kSrcStride, xoffset, yoffset, kSrcStride, xoffset, yoffset,
dst_, kDstStride)); dst_, kDstStride));
for (int i = 0; i < height_; ++i) for (int i = 0; i < height_; ++i) {
for (int j = 0; j < width_; ++j) for (int j = 0; j < width_; ++j)
ASSERT_EQ(dst_c_[i * kDstStride + j], dst_[i * kDstStride + j]) ASSERT_EQ(dst_c_[i * kDstStride + j], dst_[i * kDstStride + j])
<< "i==" << (i * width_ + j); << "i==" << (i * width_ + j);
} }
} }
}
} }
using std::tr1::make_tuple; using std::tr1::make_tuple;

View File

@ -45,10 +45,12 @@ int main(int argc, char **argv) {
if (!(simd_caps & HAS_SSE)) append_negative_gtest_filter(":SSE.*:SSE/*"); if (!(simd_caps & HAS_SSE)) append_negative_gtest_filter(":SSE.*:SSE/*");
if (!(simd_caps & HAS_SSE2)) append_negative_gtest_filter(":SSE2.*:SSE2/*"); if (!(simd_caps & HAS_SSE2)) append_negative_gtest_filter(":SSE2.*:SSE2/*");
if (!(simd_caps & HAS_SSE3)) append_negative_gtest_filter(":SSE3.*:SSE3/*"); if (!(simd_caps & HAS_SSE3)) append_negative_gtest_filter(":SSE3.*:SSE3/*");
if (!(simd_caps & HAS_SSSE3)) if (!(simd_caps & HAS_SSSE3)) {
append_negative_gtest_filter(":SSSE3.*:SSSE3/*"); append_negative_gtest_filter(":SSSE3.*:SSSE3/*");
if (!(simd_caps & HAS_SSE4_1)) }
if (!(simd_caps & HAS_SSE4_1)) {
append_negative_gtest_filter(":SSE4_1.*:SSE4_1/*"); append_negative_gtest_filter(":SSE4_1.*:SSE4_1/*");
}
if (!(simd_caps & HAS_AVX)) append_negative_gtest_filter(":AVX.*:AVX/*"); if (!(simd_caps & HAS_AVX)) append_negative_gtest_filter(":AVX.*:AVX/*");
if (!(simd_caps & HAS_AVX2)) append_negative_gtest_filter(":AVX2.*:AVX2/*"); if (!(simd_caps & HAS_AVX2)) append_negative_gtest_filter(":AVX2.*:AVX2/*");
#endif // ARCH_X86 || ARCH_X86_64 #endif // ARCH_X86 || ARCH_X86_64

View File

@ -28,12 +28,13 @@ inline double compute_psnr(const vpx_image_t *img1, const vpx_image_t *img2) {
unsigned int i, j; unsigned int i, j;
int64_t sqrerr = 0; int64_t sqrerr = 0;
for (i = 0; i < height_y; ++i) for (i = 0; i < height_y; ++i) {
for (j = 0; j < width_y; ++j) { for (j = 0; j < width_y; ++j) {
int64_t d = img1->planes[VPX_PLANE_Y][i * img1->stride[VPX_PLANE_Y] + j] - int64_t d = img1->planes[VPX_PLANE_Y][i * img1->stride[VPX_PLANE_Y] + j] -
img2->planes[VPX_PLANE_Y][i * img2->stride[VPX_PLANE_Y] + j]; img2->planes[VPX_PLANE_Y][i * img2->stride[VPX_PLANE_Y] + j];
sqrerr += d * d; sqrerr += d * d;
} }
}
double mse = static_cast<double>(sqrerr) / (width_y * height_y); double mse = static_cast<double>(sqrerr) / (width_y * height_y);
double psnr = 100.0; double psnr = 100.0;
if (mse > 0.0) { if (mse > 0.0) {

View File

@ -218,12 +218,13 @@ class RandomVideoSource : public DummyVideoSource {
// than holding previous frames to encourage keyframes to be thrown. // than holding previous frames to encourage keyframes to be thrown.
virtual void FillFrame() { virtual void FillFrame() {
if (img_) { if (img_) {
if (frame_ % 30 < 15) if (frame_ % 30 < 15) {
for (size_t i = 0; i < raw_sz_; ++i) img_->img_data[i] = rnd_.Rand8(); for (size_t i = 0; i < raw_sz_; ++i) img_->img_data[i] = rnd_.Rand8();
else } else {
memset(img_->img_data, 0, raw_sz_); memset(img_->img_data, 0, raw_sz_);
} }
} }
}
ACMRandom rnd_; ACMRandom rnd_;
int seed_; int seed_;

View File

@ -80,24 +80,27 @@ TEST(VP8FdctTest, SignBiasCheck) {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-255, 255]. // Initialize a test block with input range [-255, 255].
for (int j = 0; j < 16; ++j) for (int j = 0; j < 16; ++j) {
test_input_block[j] = rnd.Rand8() - rnd.Rand8(); test_input_block[j] = rnd.Rand8() - rnd.Rand8();
}
vp8_short_fdct4x4_c(test_input_block, test_output_block, pitch); vp8_short_fdct4x4_c(test_input_block, test_output_block, pitch);
for (int j = 0; j < 16; ++j) { for (int j = 0; j < 16; ++j) {
if (test_output_block[j] < 0) if (test_output_block[j] < 0) {
++count_sign_block[j][0]; ++count_sign_block[j][0];
else if (test_output_block[j] > 0) } else if (test_output_block[j] > 0) {
++count_sign_block[j][1]; ++count_sign_block[j][1];
} }
} }
}
bool bias_acceptable = true; bool bias_acceptable = true;
for (int j = 0; j < 16; ++j) for (int j = 0; j < 16; ++j) {
bias_acceptable = bias_acceptable =
bias_acceptable && bias_acceptable &&
(abs(count_sign_block[j][0] - count_sign_block[j][1]) < 10000); (abs(count_sign_block[j][0] - count_sign_block[j][1]) < 10000);
}
EXPECT_EQ(true, bias_acceptable) EXPECT_EQ(true, bias_acceptable)
<< "Error: 4x4 FDCT has a sign bias > 1% for input range [-255, 255]"; << "Error: 4x4 FDCT has a sign bias > 1% for input range [-255, 255]";
@ -106,24 +109,27 @@ TEST(VP8FdctTest, SignBiasCheck) {
for (int i = 0; i < count_test_block; ++i) { for (int i = 0; i < count_test_block; ++i) {
// Initialize a test block with input range [-15, 15]. // Initialize a test block with input range [-15, 15].
for (int j = 0; j < 16; ++j) for (int j = 0; j < 16; ++j) {
test_input_block[j] = (rnd.Rand8() >> 4) - (rnd.Rand8() >> 4); test_input_block[j] = (rnd.Rand8() >> 4) - (rnd.Rand8() >> 4);
}
vp8_short_fdct4x4_c(test_input_block, test_output_block, pitch); vp8_short_fdct4x4_c(test_input_block, test_output_block, pitch);
for (int j = 0; j < 16; ++j) { for (int j = 0; j < 16; ++j) {
if (test_output_block[j] < 0) if (test_output_block[j] < 0) {
++count_sign_block[j][0]; ++count_sign_block[j][0];
else if (test_output_block[j] > 0) } else if (test_output_block[j] > 0) {
++count_sign_block[j][1]; ++count_sign_block[j][1];
} }
} }
}
bias_acceptable = true; bias_acceptable = true;
for (int j = 0; j < 16; ++j) for (int j = 0; j < 16; ++j) {
bias_acceptable = bias_acceptable =
bias_acceptable && bias_acceptable &&
(abs(count_sign_block[j][0] - count_sign_block[j][1]) < 100000); (abs(count_sign_block[j][0] - count_sign_block[j][1]) < 100000);
}
EXPECT_EQ(true, bias_acceptable) EXPECT_EQ(true, bias_acceptable)
<< "Error: 4x4 FDCT has a sign bias > 10% for input range [-15, 15]"; << "Error: 4x4 FDCT has a sign bias > 10% for input range [-15, 15]";
@ -140,8 +146,9 @@ TEST(VP8FdctTest, RoundTripErrorCheck) {
int16_t test_output_block[16]; int16_t test_output_block[16];
// Initialize a test block with input range [-255, 255]. // Initialize a test block with input range [-255, 255].
for (int j = 0; j < 16; ++j) for (int j = 0; j < 16; ++j) {
test_input_block[j] = rnd.Rand8() - rnd.Rand8(); test_input_block[j] = rnd.Rand8() - rnd.Rand8();
}
const int pitch = 8; const int pitch = 8;
vp8_short_fdct4x4_c(test_input_block, test_temp_block, pitch); vp8_short_fdct4x4_c(test_input_block, test_temp_block, pitch);

View File

@ -68,10 +68,11 @@ const int kMinArfVectors[] = {
int is_extension_y4m(const char *filename) { int is_extension_y4m(const char *filename) {
const char *dot = strrchr(filename, '.'); const char *dot = strrchr(filename, '.');
if (!dot || dot == filename) if (!dot || dot == filename) {
return 0; return 0;
else } else {
return !strcmp(dot, ".y4m"); return !strcmp(dot, ".y4m");
}
} }
class ArfFreqTest class ArfFreqTest
@ -161,14 +162,15 @@ class ArfFreqTest
int GetMinVisibleRun() const { return min_run_; } int GetMinVisibleRun() const { return min_run_; }
int GetMinArfDistanceRequested() const { int GetMinArfDistanceRequested() const {
if (min_arf_requested_) if (min_arf_requested_) {
return min_arf_requested_; return min_arf_requested_;
else } else {
return vp9_rc_get_default_min_gf_interval( return vp9_rc_get_default_min_gf_interval(
test_video_param_.width, test_video_param_.height, test_video_param_.width, test_video_param_.height,
(double)test_video_param_.framerate_num / (double)test_video_param_.framerate_num /
test_video_param_.framerate_den); test_video_param_.framerate_den);
} }
}
TestVideoParam test_video_param_; TestVideoParam test_video_param_;
TestEncodeParam test_encode_param_; TestEncodeParam test_encode_param_;

View File

@ -87,10 +87,11 @@ class VpxEncoderParmsGetToDecoder
encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7); encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7);
encoder->Control(VP8E_SET_ARNR_STRENGTH, 5); encoder->Control(VP8E_SET_ARNR_STRENGTH, 5);
encoder->Control(VP8E_SET_ARNR_TYPE, 3); encoder->Control(VP8E_SET_ARNR_TYPE, 3);
if (encode_parms.render_size[0] > 0 && encode_parms.render_size[1] > 0) if (encode_parms.render_size[0] > 0 && encode_parms.render_size[1] > 0) {
encoder->Control(VP9E_SET_RENDER_SIZE, encode_parms.render_size); encoder->Control(VP9E_SET_RENDER_SIZE, encode_parms.render_size);
} }
} }
}
virtual bool HandleDecodeResult(const vpx_codec_err_t res_dec, virtual bool HandleDecodeResult(const vpx_codec_err_t res_dec,
const libvpx_test::VideoSource & /*video*/, const libvpx_test::VideoSource & /*video*/,

View File

@ -67,10 +67,11 @@ const int kCpuUsedVectors[] = { 1, 2, 3, 5, 6 };
int is_extension_y4m(const char *filename) { int is_extension_y4m(const char *filename) {
const char *dot = strrchr(filename, '.'); const char *dot = strrchr(filename, '.');
if (!dot || dot == filename) if (!dot || dot == filename) {
return 0; return 0;
else } else {
return !strcmp(dot, ".y4m"); return !strcmp(dot, ".y4m");
}
} }
class EndToEndTestLarge class EndToEndTestLarge

View File

@ -45,8 +45,9 @@ class YUVVideoSource : public VideoSource {
input_file_ = OpenTestDataFile(file_name_); input_file_ = OpenTestDataFile(file_name_);
ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: " ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: "
<< file_name_; << file_name_;
if (start_) if (start_) {
fseek(input_file_, static_cast<unsigned>(raw_size_) * start_, SEEK_SET); fseek(input_file_, static_cast<unsigned>(raw_size_) * start_, SEEK_SET);
}
frame_ = start_; frame_ = start_;
FillFrame(); FillFrame();