Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: unit_test/convert_test.cc

Issue 1593833002: Fix memory overwrite in YUY2ToNV12 odd wdiths (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: add note about odd width Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/planar_functions.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 TESTATOPLANAR(ARGB, 4, 1, I411, 4, 1, 4) 783 TESTATOPLANAR(ARGB, 4, 1, I411, 4, 1, 4)
784 TESTATOPLANAR(ARGB, 4, 1, I422, 2, 1, 2) 784 TESTATOPLANAR(ARGB, 4, 1, I422, 2, 1, 2)
785 TESTATOPLANAR(ARGB, 4, 1, I444, 1, 1, 2) 785 TESTATOPLANAR(ARGB, 4, 1, I444, 1, 1, 2)
786 TESTATOPLANAR(YUY2, 2, 1, I420, 2, 2, 2) 786 TESTATOPLANAR(YUY2, 2, 1, I420, 2, 2, 2)
787 TESTATOPLANAR(UYVY, 2, 1, I420, 2, 2, 2) 787 TESTATOPLANAR(UYVY, 2, 1, I420, 2, 2, 2)
788 TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 2) 788 TESTATOPLANAR(YUY2, 2, 1, I422, 2, 1, 2)
789 TESTATOPLANAR(UYVY, 2, 1, I422, 2, 1, 2) 789 TESTATOPLANAR(UYVY, 2, 1, I422, 2, 1, 2)
790 TESTATOPLANAR(I400, 1, 1, I420, 2, 2, 2) 790 TESTATOPLANAR(I400, 1, 1, I420, 2, 2, 2)
791 TESTATOPLANAR(J400, 1, 1, J420, 2, 2, 2) 791 TESTATOPLANAR(J400, 1, 1, J420, 2, 2, 2)
792 792
793 #define TESTATOBIPLANARI(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 793 #define TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y,\
794 W1280, N, NEG, OFF) \ 794 W1280, N, NEG, OFF) \
795 TEST_F(LibYUVConvertTest, FMT_A##To##FMT_PLANAR##N) { \ 795 TEST_F(LibYUVConvertTest, FMT_A##To##FMT_PLANAR##N) { \
796 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ 796 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \
797 const int kHeight = benchmark_height_; \ 797 const int kHeight = benchmark_height_; \
798 const int kStride = (kWidth * 8 * BPP_A + 7) / 8; \ 798 const int kStride = SUBSAMPLE(kWidth, SUB_A) * BPP_A; \
799 const int kStrideUV = SUBSAMPLE(kWidth, SUBSAMP_X); \ 799 const int kStrideUV = SUBSAMPLE(kWidth, SUBSAMP_X); \
800 align_buffer_64(src_argb, kStride * kHeight + OFF); \ 800 align_buffer_64(src_argb, kStride * kHeight + OFF); \
801 align_buffer_64(dst_y_c, kWidth * kHeight); \ 801 align_buffer_64(dst_y_c, kWidth * kHeight); \
802 align_buffer_64(dst_uv_c, kStrideUV * 2 * SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 802 align_buffer_64(dst_uv_c, kStrideUV * 2 * SUBSAMPLE(kHeight, SUBSAMP_Y)); \
803 align_buffer_64(dst_y_opt, kWidth * kHeight); \ 803 align_buffer_64(dst_y_opt, kWidth * kHeight); \
804 align_buffer_64(dst_uv_opt, kStrideUV * 2 * SUBSAMPLE(kHeight, SUBSAMP_Y)); \ 804 align_buffer_64(dst_uv_opt, kStrideUV * 2 * SUBSAMPLE(kHeight, SUBSAMP_Y)); \
805 for (int i = 0; i < kHeight; ++i) \ 805 for (int i = 0; i < kHeight; ++i) \
806 for (int j = 0; j < kStride; ++j) \ 806 for (int j = 0; j < kStride; ++j) \
807 src_argb[(i * kStride) + j + OFF] = (fastrand() & 0xff); \ 807 src_argb[(i * kStride) + j + OFF] = (fastrand() & 0xff); \
808 memset(dst_y_c, 1, kWidth * kHeight); \ 808 memset(dst_y_c, 1, kWidth * kHeight); \
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 } \ 842 } \
843 } \ 843 } \
844 EXPECT_LE(max_diff, 4); \ 844 EXPECT_LE(max_diff, 4); \
845 free_aligned_buffer_64(dst_y_c); \ 845 free_aligned_buffer_64(dst_y_c); \
846 free_aligned_buffer_64(dst_uv_c); \ 846 free_aligned_buffer_64(dst_uv_c); \
847 free_aligned_buffer_64(dst_y_opt); \ 847 free_aligned_buffer_64(dst_y_opt); \
848 free_aligned_buffer_64(dst_uv_opt); \ 848 free_aligned_buffer_64(dst_uv_opt); \
849 free_aligned_buffer_64(src_argb); \ 849 free_aligned_buffer_64(src_argb); \
850 } 850 }
851 851
852 #define TESTATOBIPLANAR(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y) \ 852 #define TESTATOBIPLANAR(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y) \
853 TESTATOBIPLANARI(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 853 TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
854 benchmark_width_ - 4, _Any, +, 0) \ 854 benchmark_width_ - 4, _Any, +, 0) \
855 TESTATOBIPLANARI(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 855 TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
856 benchmark_width_, _Unaligned, +, 1) \ 856 benchmark_width_, _Unaligned, +, 1) \
857 TESTATOBIPLANARI(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 857 TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
858 benchmark_width_, _Invert, -, 0) \ 858 benchmark_width_, _Invert, -, 0) \
859 TESTATOBIPLANARI(FMT_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \ 859 TESTATOBIPLANARI(FMT_A, SUB_A, BPP_A, FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, \
860 benchmark_width_, _Opt, +, 0) 860 benchmark_width_, _Opt, +, 0)
861 861
862 TESTATOBIPLANAR(ARGB, 4, NV12, 2, 2) 862 TESTATOBIPLANAR(ARGB, 1, 4, NV12, 2, 2)
863 TESTATOBIPLANAR(ARGB, 4, NV21, 2, 2) 863 TESTATOBIPLANAR(ARGB, 1, 4, NV21, 2, 2)
864 TESTATOBIPLANAR(YUY2, 2, NV12, 2, 2) 864 TESTATOBIPLANAR(YUY2, 2, 4, NV12, 2, 2)
865 TESTATOBIPLANAR(UYVY, 2, NV12, 2, 2) 865 TESTATOBIPLANAR(UYVY, 2, 4, NV12, 2, 2)
866 866
867 #define TESTATOBI(FMT_A, BPP_A, STRIDE_A, HEIGHT_A, \ 867 #define TESTATOBI(FMT_A, BPP_A, STRIDE_A, HEIGHT_A, \
868 FMT_B, BPP_B, STRIDE_B, HEIGHT_B, \ 868 FMT_B, BPP_B, STRIDE_B, HEIGHT_B, \
869 W1280, DIFF, N, NEG, OFF) \ 869 W1280, DIFF, N, NEG, OFF) \
870 TEST_F(LibYUVConvertTest, FMT_A##To##FMT_B##N) { \ 870 TEST_F(LibYUVConvertTest, FMT_A##To##FMT_B##N) { \
871 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ 871 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \
872 const int kHeight = benchmark_height_; \ 872 const int kHeight = benchmark_height_; \
873 const int kHeightA = (kHeight + HEIGHT_A - 1) / HEIGHT_A * HEIGHT_A; \ 873 const int kHeightA = (kHeight + HEIGHT_A - 1) / HEIGHT_A * HEIGHT_A; \
874 const int kHeightB = (kHeight + HEIGHT_B - 1) / HEIGHT_B * HEIGHT_B; \ 874 const int kHeightB = (kHeight + HEIGHT_B - 1) / HEIGHT_B * HEIGHT_B; \
875 const int kStrideA = (kWidth * BPP_A + STRIDE_A - 1) / STRIDE_A * STRIDE_A; \ 875 const int kStrideA = (kWidth * BPP_A + STRIDE_A - 1) / STRIDE_A * STRIDE_A; \
(...skipping 974 matching lines...) Expand 10 before | Expand all | Expand 10 after
1850 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \ 1850 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \
1851 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ 1851 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \
1852 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \ 1852 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \
1853 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ 1853 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \
1854 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1) 1854 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1)
1855 1855
1856 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 1, 4, ABGR, 4) 1856 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 1, 4, ABGR, 4)
1857 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 1, 4, ARGB, 4) 1857 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 1, 4, ARGB, 4)
1858 1858
1859 } // namespace libyuv 1859 } // namespace libyuv
OLDNEW
« no previous file with comments | « source/planar_functions.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698