Commit 042acf04 authored by fbarchard@google.com's avatar fbarchard@google.com

Reduce allowed error on simple conversions

BUG=none
TEST=unittests
Review URL: https://webrtc-codereview.appspot.com/917006

git-svn-id: http://libyuv.googlecode.com/svn/trunk@431 16f28f9a-4ce2-e073-06de-1de4eb20be90
parent d39ce16b
...@@ -290,8 +290,9 @@ TEST_F(libyuvTest, Psnr) { ...@@ -290,8 +290,9 @@ TEST_F(libyuvTest, Psnr) {
EXPECT_GT(err, 48.0); EXPECT_GT(err, 48.0);
EXPECT_LT(err, 49.0); EXPECT_LT(err, 49.0);
for (int i = 0; i < kSrcPlaneSize; ++i) for (int i = 0; i < kSrcPlaneSize; ++i) {
src_a[i] = i; src_a[i] = i;
}
err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride, err = CalcFramePsnr(src_a + kSrcStride * b + b, kSrcStride,
src_b + kSrcStride * b + b, kSrcStride, src_b + kSrcStride * b + b, kSrcStride,
...@@ -421,8 +422,9 @@ TEST_F(libyuvTest, Ssim) { ...@@ -421,8 +422,9 @@ TEST_F(libyuvTest, Ssim) {
EXPECT_GT(err, 0.8); EXPECT_GT(err, 0.8);
EXPECT_LT(err, 0.9); EXPECT_LT(err, 0.9);
for (int i = 0; i < kSrcPlaneSize; ++i) for (int i = 0; i < kSrcPlaneSize; ++i) {
src_a[i] = i; src_a[i] = i;
}
err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride, err = CalcFrameSsim(src_a + kSrcStride * b + b, kSrcStride,
src_b + kSrcStride * b + b, kSrcStride, src_b + kSrcStride * b + b, kSrcStride,
......
...@@ -83,7 +83,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -83,7 +83,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \ for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \
for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \ for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \
int abs_diff = \ int abs_diff = \
...@@ -94,7 +94,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -94,7 +94,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \ for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \
for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \ for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \
int abs_diff = \ int abs_diff = \
...@@ -105,7 +105,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -105,7 +105,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
free_aligned_buffer_16(dst_y_c) \ free_aligned_buffer_16(dst_y_c) \
free_aligned_buffer_16(dst_u_c) \ free_aligned_buffer_16(dst_u_c) \
free_aligned_buffer_16(dst_v_c) \ free_aligned_buffer_16(dst_v_c) \
...@@ -186,7 +186,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -186,7 +186,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \ for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \
for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \ for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \
int abs_diff = \ int abs_diff = \
...@@ -197,7 +197,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -197,7 +197,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \ for (int i = 0; i < kHeight / SUBSAMP_Y; ++i) { \
for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \ for (int j = 0; j < kWidth / SUBSAMP_X; ++j) { \
int abs_diff = \ int abs_diff = \
...@@ -208,7 +208,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \ ...@@ -208,7 +208,7 @@ TEST_F(libyuvTest, SRC_FMT_PLANAR##To##FMT_PLANAR##N) { \
} \ } \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, 1); \
free_aligned_buffer_16(dst_y_c) \ free_aligned_buffer_16(dst_y_c) \
free_aligned_buffer_16(dst_u_c) \ free_aligned_buffer_16(dst_u_c) \
free_aligned_buffer_16(dst_v_c) \ free_aligned_buffer_16(dst_v_c) \
...@@ -329,11 +329,11 @@ TESTPLANARTOB(I422, 2, 1, RGBA, 4, 4, 2) ...@@ -329,11 +329,11 @@ TESTPLANARTOB(I422, 2, 1, RGBA, 4, 4, 2)
TESTPLANARTOB(I411, 4, 1, ARGB, 4, 4, 2) TESTPLANARTOB(I411, 4, 1, ARGB, 4, 4, 2)
TESTPLANARTOB(I444, 1, 1, ARGB, 4, 4, 2) TESTPLANARTOB(I444, 1, 1, ARGB, 4, 4, 2)
// TODO(fbarchard): Fix TESTPLANARTOB(I420, 2, 2, V210, 16 / 6, 128) // TODO(fbarchard): Fix TESTPLANARTOB(I420, 2, 2, V210, 16 / 6, 128)
TESTPLANARTOB(I420, 2, 2, YUY2, 2, 4, 2) TESTPLANARTOB(I420, 2, 2, YUY2, 2, 4, 1)
TESTPLANARTOB(I420, 2, 2, UYVY, 2, 4, 2) TESTPLANARTOB(I420, 2, 2, UYVY, 2, 4, 1)
TESTPLANARTOB(I422, 2, 1, YUY2, 2, 4, 2) TESTPLANARTOB(I422, 2, 1, YUY2, 2, 4, 0)
TESTPLANARTOB(I422, 2, 1, UYVY, 2, 4, 2) TESTPLANARTOB(I422, 2, 1, UYVY, 2, 4, 0)
TESTPLANARTOB(I420, 2, 2, I400, 1, 1, 2) TESTPLANARTOB(I420, 2, 2, I400, 1, 1, 0)
TESTPLANARTOB(I420, 2, 2, BayerBGGR, 1, 1, 2) TESTPLANARTOB(I420, 2, 2, BayerBGGR, 1, 1, 2)
TESTPLANARTOB(I420, 2, 2, BayerRGGB, 1, 1, 2) TESTPLANARTOB(I420, 2, 2, BayerRGGB, 1, 1, 2)
TESTPLANARTOB(I420, 2, 2, BayerGBRG, 1, 1, 2) TESTPLANARTOB(I420, 2, 2, BayerGBRG, 1, 1, 2)
...@@ -520,7 +520,7 @@ TESTATOPLANAR(BayerRGGB, 1, I420, 2, 2) ...@@ -520,7 +520,7 @@ TESTATOPLANAR(BayerRGGB, 1, I420, 2, 2)
TESTATOPLANAR(BayerGBRG, 1, I420, 2, 2) TESTATOPLANAR(BayerGBRG, 1, I420, 2, 2)
TESTATOPLANAR(BayerGRBG, 1, I420, 2, 2) TESTATOPLANAR(BayerGRBG, 1, I420, 2, 2)
#define TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, W1280, N, NEG) \ #define TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, W1280, DIFF, N, NEG) \
TEST_F(libyuvTest, FMT_A##To##FMT_B##N) { \ TEST_F(libyuvTest, FMT_A##To##FMT_B##N) { \
const int kWidth = W1280; \ const int kWidth = W1280; \
const int kHeight = 720; \ const int kHeight = 720; \
...@@ -550,50 +550,50 @@ TEST_F(libyuvTest, FMT_A##To##FMT_B##N) { \ ...@@ -550,50 +550,50 @@ TEST_F(libyuvTest, FMT_A##To##FMT_B##N) { \
max_diff = abs_diff; \ max_diff = abs_diff; \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, DIFF); \
free_aligned_buffer_16(src_argb) \ free_aligned_buffer_16(src_argb) \
free_aligned_buffer_16(dst_argb_c) \ free_aligned_buffer_16(dst_argb_c) \
free_aligned_buffer_16(dst_argb_opt) \ free_aligned_buffer_16(dst_argb_opt) \
} }
#define TESTATOB(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B) \ #define TESTATOB(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, DIFF) \
TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, _Opt, +) \ TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, DIFF, _Opt, +) \
TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, _Invert, -) \ TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, DIFF, _Invert, -) \
TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, _Any, +) TESTATOBI(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, 1280, DIFF, _Any, +)
TESTATOB(ARGB, 4, 4, ARGB, 4) TESTATOB(ARGB, 4, 4, ARGB, 4, 0)
TESTATOB(ARGB, 4, 4, BGRA, 4) TESTATOB(ARGB, 4, 4, BGRA, 4, 0)
TESTATOB(ARGB, 4, 4, ABGR, 4) TESTATOB(ARGB, 4, 4, ABGR, 4, 0)
TESTATOB(ARGB, 4, 4, RGBA, 4) TESTATOB(ARGB, 4, 4, RGBA, 4, 0)
TESTATOB(ARGB, 4, 4, RAW, 3) TESTATOB(ARGB, 4, 4, RAW, 3, 0)
TESTATOB(ARGB, 4, 4, RGB24, 3) TESTATOB(ARGB, 4, 4, RGB24, 3, 0)
TESTATOB(ARGB, 4, 4, RGB565, 2) TESTATOB(ARGB, 4, 4, RGB565, 2, 0)
TESTATOB(ARGB, 4, 4, ARGB1555, 2) TESTATOB(ARGB, 4, 4, ARGB1555, 2, 0)
TESTATOB(ARGB, 4, 4, ARGB4444, 2) TESTATOB(ARGB, 4, 4, ARGB4444, 2, 0)
TESTATOB(ARGB, 4, 4, BayerBGGR, 1) TESTATOB(ARGB, 4, 4, BayerBGGR, 1, 0)
TESTATOB(ARGB, 4, 4, BayerRGGB, 1) TESTATOB(ARGB, 4, 4, BayerRGGB, 1, 0)
TESTATOB(ARGB, 4, 4, BayerGBRG, 1) TESTATOB(ARGB, 4, 4, BayerGBRG, 1, 0)
TESTATOB(ARGB, 4, 4, BayerGRBG, 1) TESTATOB(ARGB, 4, 4, BayerGRBG, 1, 0)
TESTATOB(ARGB, 4, 4, I400, 1) TESTATOB(ARGB, 4, 4, I400, 1, 2)
TESTATOB(BGRA, 4, 4, ARGB, 4) TESTATOB(BGRA, 4, 4, ARGB, 4, 0)
TESTATOB(ABGR, 4, 4, ARGB, 4) TESTATOB(ABGR, 4, 4, ARGB, 4, 0)
TESTATOB(RGBA, 4, 4, ARGB, 4) TESTATOB(RGBA, 4, 4, ARGB, 4, 0)
TESTATOB(RAW, 3, 3, ARGB, 4) TESTATOB(RAW, 3, 3, ARGB, 4, 0)
TESTATOB(RGB24, 3, 3, ARGB, 4) TESTATOB(RGB24, 3, 3, ARGB, 4, 0)
TESTATOB(RGB565, 2, 2, ARGB, 4) TESTATOB(RGB565, 2, 2, ARGB, 4, 0)
TESTATOB(ARGB1555, 2, 2, ARGB, 4) TESTATOB(ARGB1555, 2, 2, ARGB, 4, 0)
TESTATOB(ARGB4444, 2, 2, ARGB, 4) TESTATOB(ARGB4444, 2, 2, ARGB, 4, 0)
TESTATOB(YUY2, 2, 2, ARGB, 4) TESTATOB(YUY2, 2, 2, ARGB, 4, 0)
TESTATOB(UYVY, 2, 2, ARGB, 4) TESTATOB(UYVY, 2, 2, ARGB, 4, 0)
TESTATOB(M420, 3 / 2, 1, ARGB, 4) TESTATOB(M420, 3 / 2, 1, ARGB, 4, 0)
TESTATOB(BayerBGGR, 1, 1, ARGB, 4) TESTATOB(BayerBGGR, 1, 1, ARGB, 4, 0)
TESTATOB(BayerRGGB, 1, 1, ARGB, 4) TESTATOB(BayerRGGB, 1, 1, ARGB, 4, 0)
TESTATOB(BayerGBRG, 1, 1, ARGB, 4) TESTATOB(BayerGBRG, 1, 1, ARGB, 4, 0)
TESTATOB(BayerGRBG, 1, 1, ARGB, 4) TESTATOB(BayerGRBG, 1, 1, ARGB, 4, 0)
TESTATOB(I400, 1, 1, ARGB, 4) TESTATOB(I400, 1, 1, ARGB, 4, 0)
TESTATOB(I400, 1, 1, I400, 1) TESTATOB(I400, 1, 1, I400, 1, 0)
TESTATOB(ARGB, 4, 4, ARGBMirror, 4) TESTATOB(ARGB, 4, 4, ARGBMirror, 4, 0)
#define TESTATOBRANDOM(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, STRIDE_B) \ #define TESTATOBRANDOM(FMT_A, BPP_A, STRIDE_A, FMT_B, BPP_B, STRIDE_B, DIFF) \
TEST_F(libyuvTest, FMT_A##To##FMT_B##_Random) { \ TEST_F(libyuvTest, FMT_A##To##FMT_B##_Random) { \
srandom(time(NULL)); \ srandom(time(NULL)); \
for (int times = 0; times < benchmark_iterations_; ++times) { \ for (int times = 0; times < benchmark_iterations_; ++times) { \
...@@ -624,39 +624,39 @@ TEST_F(libyuvTest, FMT_A##To##FMT_B##_Random) { \ ...@@ -624,39 +624,39 @@ TEST_F(libyuvTest, FMT_A##To##FMT_B##_Random) { \
max_diff = abs_diff; \ max_diff = abs_diff; \
} \ } \
} \ } \
EXPECT_LE(max_diff, 2); \ EXPECT_LE(max_diff, DIFF); \
free_aligned_buffer_page_end(src_argb) \ free_aligned_buffer_page_end(src_argb) \
free_aligned_buffer_page_end(dst_argb_c) \ free_aligned_buffer_page_end(dst_argb_c) \
free_aligned_buffer_page_end(dst_argb_opt) \ free_aligned_buffer_page_end(dst_argb_opt) \
} \ } \
} }
TESTATOBRANDOM(ARGB, 4, 4, ARGB, 4, 4) TESTATOBRANDOM(ARGB, 4, 4, ARGB, 4, 4, 0)
TESTATOBRANDOM(ARGB, 4, 4, BGRA, 4, 4) TESTATOBRANDOM(ARGB, 4, 4, BGRA, 4, 4, 0)
TESTATOBRANDOM(ARGB, 4, 4, ABGR, 4, 4) TESTATOBRANDOM(ARGB, 4, 4, ABGR, 4, 4, 0)
TESTATOBRANDOM(ARGB, 4, 4, RGBA, 4, 4) TESTATOBRANDOM(ARGB, 4, 4, RGBA, 4, 4, 0)
TESTATOBRANDOM(ARGB, 4, 4, RAW, 3, 3) TESTATOBRANDOM(ARGB, 4, 4, RAW, 3, 3, 0)
TESTATOBRANDOM(ARGB, 4, 4, RGB24, 3, 3) TESTATOBRANDOM(ARGB, 4, 4, RGB24, 3, 3, 0)
TESTATOBRANDOM(ARGB, 4, 4, RGB565, 2, 2) TESTATOBRANDOM(ARGB, 4, 4, RGB565, 2, 2, 0)
TESTATOBRANDOM(ARGB, 4, 4, ARGB1555, 2, 2) TESTATOBRANDOM(ARGB, 4, 4, ARGB1555, 2, 2, 0)
TESTATOBRANDOM(ARGB, 4, 4, ARGB4444, 2, 2) TESTATOBRANDOM(ARGB, 4, 4, ARGB4444, 2, 2, 0)
TESTATOBRANDOM(ARGB, 4, 4, I400, 1, 1) TESTATOBRANDOM(ARGB, 4, 4, I400, 1, 1, 2)
// TODO(fbarchard): Implement YUY2 // TODO(fbarchard, 0): Implement YUY2
// TESTATOBRANDOM(ARGB, 4, 4, YUY2, 4, 2) // TESTATOBRANDOM(ARGB, 4, 4, YUY2, 4, 2, 0)
// TESTATOBRANDOM(ARGB, 4, 4, UYVY, 4, 2) // TESTATOBRANDOM(ARGB, 4, 4, UYVY, 4, 2, 0)
TESTATOBRANDOM(BGRA, 4, 4, ARGB, 4, 4) TESTATOBRANDOM(BGRA, 4, 4, ARGB, 4, 4, 0)
TESTATOBRANDOM(ABGR, 4, 4, ARGB, 4, 4) TESTATOBRANDOM(ABGR, 4, 4, ARGB, 4, 4, 0)
TESTATOBRANDOM(RGBA, 4, 4, ARGB, 4, 4) TESTATOBRANDOM(RGBA, 4, 4, ARGB, 4, 4, 0)
TESTATOBRANDOM(RAW, 3, 3, ARGB, 4, 4) TESTATOBRANDOM(RAW, 3, 3, ARGB, 4, 4, 0)
TESTATOBRANDOM(RGB24, 3, 3, ARGB, 4, 4) TESTATOBRANDOM(RGB24, 3, 3, ARGB, 4, 4, 0)
TESTATOBRANDOM(RGB565, 2, 2, ARGB, 4, 4) TESTATOBRANDOM(RGB565, 2, 2, ARGB, 4, 4, 0)
TESTATOBRANDOM(ARGB1555, 2, 2, ARGB, 4, 4) TESTATOBRANDOM(ARGB1555, 2, 2, ARGB, 4, 4, 0)
TESTATOBRANDOM(ARGB4444, 2, 2, ARGB, 4, 4) TESTATOBRANDOM(ARGB4444, 2, 2, ARGB, 4, 4, 0)
TESTATOBRANDOM(I400, 1, 1, ARGB, 4, 4) TESTATOBRANDOM(I400, 1, 1, ARGB, 4, 4, 0)
TESTATOBRANDOM(YUY2, 4, 2, ARGB, 4, 4) TESTATOBRANDOM(YUY2, 4, 2, ARGB, 4, 4, 0)
TESTATOBRANDOM(UYVY, 4, 2, ARGB, 4, 4) TESTATOBRANDOM(UYVY, 4, 2, ARGB, 4, 4, 0)
TESTATOBRANDOM(I400, 1, 1, I400, 1, 1) TESTATOBRANDOM(I400, 1, 1, I400, 1, 1, 0)
TESTATOBRANDOM(ARGB, 4, 4, ARGBMirror, 4, 4) TESTATOBRANDOM(ARGB, 4, 4, ARGBMirror, 4, 4, 0)
TEST_F(libyuvTest, Test565) { TEST_F(libyuvTest, Test565) {
SIMD_ALIGNED(uint8 orig_pixels[256][4]); SIMD_ALIGNED(uint8 orig_pixels[256][4]);
......
...@@ -85,8 +85,9 @@ static int ARGBTestRotate(int src_width, int src_height, ...@@ -85,8 +85,9 @@ static int ARGBTestRotate(int src_width, int src_height,
for (j = b * 4; j < (dst_width + b) * 4; ++j) { for (j = b * 4; j < (dst_width + b) * 4; ++j) {
int abs_diff = abs(dst_argb_c[(i * dst_stride_argb) + j] - int abs_diff = abs(dst_argb_c[(i * dst_stride_argb) + j] -
dst_argb_opt[(i * dst_stride_argb) + j]); dst_argb_opt[(i * dst_stride_argb) + j]);
if (abs_diff > max_diff) if (abs_diff > max_diff) {
max_diff = abs_diff; max_diff = abs_diff;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment