From 01ca0712c75f3f2b8134c9aa225692767ba8d498 Mon Sep 17 00:00:00 2001 From: "fbarchard@google.com" Date: Tue, 2 Jun 2015 22:42:45 +0000 Subject: [PATCH] Test rotation with negative height BUG=446 TESTED=libyuvTest.NV12Rotate180_Inverted R=bcornell@google.com Review URL: https://webrtc-codereview.appspot.com/51169004 git-svn-id: http://libyuv.googlecode.com/svn/trunk@1420 16f28f9a-4ce2-e073-06de-1de4eb20be90 --- unit_test/rotate_argb_test.cc | 2 +- unit_test/rotate_test.cc | 40 +++++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/unit_test/rotate_argb_test.cc b/unit_test/rotate_argb_test.cc index 85f4b15a5..5cd7b0ad6 100644 --- a/unit_test/rotate_argb_test.cc +++ b/unit_test/rotate_argb_test.cc @@ -35,7 +35,7 @@ void TestRotateBpp(int src_width, int src_height, dst_height = 1; } int src_stride_argb = src_width * kBpp; - int src_argb_plane_size = src_stride_argb * src_height; + int src_argb_plane_size = src_stride_argb * abs(src_height); align_buffer_64(src_argb, src_argb_plane_size); for (int i = 0; i < src_argb_plane_size; ++i) { src_argb[i] = random() & 0xff; diff --git a/unit_test/rotate_test.cc b/unit_test/rotate_test.cc index de90eb1bf..109fdbcc9 100644 --- a/unit_test/rotate_test.cc +++ b/unit_test/rotate_test.cc @@ -24,7 +24,7 @@ static void I420TestRotate(int src_width, int src_height, if (src_width < 1) { src_width = 1; } - if (src_height < 1) { + if (src_height == 0) { src_height = 1; } if (dst_width < 1) { @@ -33,8 +33,8 @@ static void I420TestRotate(int src_width, int src_height, if (dst_height < 1) { dst_height = 1; } - int src_i420_y_size = src_width * src_height; - int src_i420_uv_size = ((src_width + 1) / 2) * ((src_height + 1) / 2); + int src_i420_y_size = src_width * Abs(src_height); + int src_i420_uv_size = ((src_width + 1) / 2) * ((Abs(src_height) + 1) / 2); int src_i420_size = src_i420_y_size + src_i420_uv_size * 2; align_buffer_64(src_i420, src_i420_size); for (int i = 0; i < src_i420_size; ++i) { @@ -137,7 +137,7 @@ static void NV12TestRotate(int src_width, int src_height, if (src_width < 1) { src_width = 1; } - if (src_height < 1) { + if (src_height == 0) { // allow negative for inversion test. src_height = 1; } if (dst_width < 1) { @@ -146,8 +146,8 @@ static void NV12TestRotate(int src_width, int src_height, if (dst_height < 1) { dst_height = 1; } - int src_nv12_y_size = src_width * src_height; - int src_nv12_uv_size = ((src_width + 1) / 2) * ((src_height + 1) / 2) * 2; + int src_nv12_y_size = src_width * Abs(src_height); + int src_nv12_uv_size = ((src_width + 1) / 2) * ((Abs(src_height) + 1) / 2) * 2; int src_nv12_size = src_nv12_y_size + src_nv12_uv_size; align_buffer_64(src_nv12, src_nv12_size); for (int i = 0; i < src_nv12_size; ++i) { @@ -240,4 +240,32 @@ TEST_F(libyuvTest, NV12Rotate270_Odd) { kRotate270, benchmark_iterations_, disable_cpu_flags_); } +TEST_F(libyuvTest, NV12Rotate0_Inverted) { + NV12TestRotate(benchmark_width_, -benchmark_height_, + benchmark_width_, benchmark_height_, + kRotate0, benchmark_iterations_, disable_cpu_flags_); +} + +TEST_F(libyuvTest, NV12Rotate90_Inverted) { + NV12TestRotate(benchmark_width_, -benchmark_height_, + benchmark_height_, benchmark_width_, + kRotate90, benchmark_iterations_, disable_cpu_flags_); +} + +TEST_F(libyuvTest, NV12Rotate180_Inverted) { + NV12TestRotate(benchmark_width_, -benchmark_height_, + benchmark_width_, benchmark_height_, + kRotate180, benchmark_iterations_, disable_cpu_flags_); +} + +TEST_F(libyuvTest, NV12Rotate270_Inverted) { + NV12TestRotate(benchmark_width_, -benchmark_height_, + benchmark_height_, benchmark_width_, + kRotate270, benchmark_iterations_, disable_cpu_flags_); +} + + + + + } // namespace libyuv