OLD | NEW |
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 1664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1675 free_aligned_buffer_64(orig_v); \ | 1675 free_aligned_buffer_64(orig_v); \ |
1676 free_aligned_buffer_64(dst_y_orig); \ | 1676 free_aligned_buffer_64(dst_y_orig); \ |
1677 free_aligned_buffer_64(dst_uv_orig); \ | 1677 free_aligned_buffer_64(dst_uv_orig); \ |
1678 free_aligned_buffer_64(dst_y); \ | 1678 free_aligned_buffer_64(dst_y); \ |
1679 free_aligned_buffer_64(dst_uv); \ | 1679 free_aligned_buffer_64(dst_uv); \ |
1680 } | 1680 } |
1681 | 1681 |
1682 TESTPTOB(TestYUY2ToNV12, YUY2ToI420, YUY2ToNV12) | 1682 TESTPTOB(TestYUY2ToNV12, YUY2ToI420, YUY2ToNV12) |
1683 TESTPTOB(TestUYVYToNV12, UYVYToI420, UYVYToNV12) | 1683 TESTPTOB(TestUYVYToNV12, UYVYToI420, UYVYToNV12) |
1684 | 1684 |
1685 #define TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1685 #define TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1686 W1280, N, NEG, OFF, FMT_C, BPP_C) \ | 1686 W1280, N, NEG, OFF, FMT_C, BPP_C) \ |
1687 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##_##FMT_C##N) { \ | 1687 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##_##FMT_C##N) { \ |
1688 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ | 1688 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ |
1689 const int kHeight = benchmark_height_; \ | 1689 const int kHeight = benchmark_height_; \ |
1690 const int kStrideB = kWidth * BPP_B; \ | 1690 const int kStrideB = SUBSAMPLE(kWidth, SUB_B) * BPP_B; \ |
1691 const int kStrideUV = SUBSAMPLE(kWidth, SUBSAMP_X); \ | 1691 const int kStrideUV = SUBSAMPLE(kWidth, SUBSAMP_X); \ |
1692 const int kSizeUV = kStrideUV * SUBSAMPLE(kHeight, SUBSAMP_Y); \ | 1692 const int kSizeUV = kStrideUV * SUBSAMPLE(kHeight, SUBSAMP_Y); \ |
1693 align_buffer_64(src_y, kWidth * kHeight + OFF); \ | 1693 align_buffer_64(src_y, kWidth * kHeight + OFF); \ |
1694 align_buffer_64(src_u, kSizeUV + OFF); \ | 1694 align_buffer_64(src_u, kSizeUV + OFF); \ |
1695 align_buffer_64(src_v, kSizeUV + OFF); \ | 1695 align_buffer_64(src_v, kSizeUV + OFF); \ |
1696 align_buffer_64(dst_argb_b, kStrideB * kHeight + OFF); \ | 1696 align_buffer_64(dst_argb_b, kStrideB * kHeight + OFF); \ |
1697 for (int i = 0; i < kWidth * kHeight; ++i) { \ | 1697 for (int i = 0; i < kWidth * kHeight; ++i) { \ |
1698 src_y[i + OFF] = (fastrand() & 0xff); \ | 1698 src_y[i + OFF] = (fastrand() & 0xff); \ |
1699 } \ | 1699 } \ |
1700 for (int i = 0; i < kSizeUV; ++i) { \ | 1700 for (int i = 0; i < kSizeUV; ++i) { \ |
(...skipping 27 matching lines...) Expand all Loading... |
1728 EXPECT_EQ(dst_argb_c[i + OFF], dst_argb_bc[i + OFF]); \ | 1728 EXPECT_EQ(dst_argb_c[i + OFF], dst_argb_bc[i + OFF]); \ |
1729 } \ | 1729 } \ |
1730 free_aligned_buffer_64(src_y); \ | 1730 free_aligned_buffer_64(src_y); \ |
1731 free_aligned_buffer_64(src_u); \ | 1731 free_aligned_buffer_64(src_u); \ |
1732 free_aligned_buffer_64(src_v); \ | 1732 free_aligned_buffer_64(src_v); \ |
1733 free_aligned_buffer_64(dst_argb_b); \ | 1733 free_aligned_buffer_64(dst_argb_b); \ |
1734 free_aligned_buffer_64(dst_argb_c); \ | 1734 free_aligned_buffer_64(dst_argb_c); \ |
1735 free_aligned_buffer_64(dst_argb_bc); \ | 1735 free_aligned_buffer_64(dst_argb_bc); \ |
1736 } | 1736 } |
1737 | 1737 |
1738 #define TESTPLANARTOE(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1738 #define TESTPLANARTOE(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1739 FMT_C, BPP_C) \ | 1739 FMT_C, BPP_C) \ |
1740 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1740 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1741 benchmark_width_ - 4, _Any, +, 0, FMT_C, BPP_C) \ | 1741 benchmark_width_ - 4, _Any, +, 0, FMT_C, BPP_C) \ |
1742 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1742 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1743 benchmark_width_, _Unaligned, +, 1, FMT_C, BPP_C) \ | 1743 benchmark_width_, _Unaligned, +, 1, FMT_C, BPP_C) \ |
1744 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1744 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1745 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C) \ | 1745 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C) \ |
1746 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1746 TESTPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1747 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C) | 1747 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C) |
1748 | 1748 |
1749 TESTPLANARTOE(I420, 2, 2, ARGB, 4, ABGR, 4) | 1749 TESTPLANARTOE(I420, 2, 2, ARGB, 1, 4, ABGR, 4) |
1750 TESTPLANARTOE(J420, 2, 2, ARGB, 4, ARGB, 4) | 1750 TESTPLANARTOE(J420, 2, 2, ARGB, 1, 4, ARGB, 4) |
1751 TESTPLANARTOE(J420, 2, 2, ABGR, 4, ARGB, 4) | 1751 TESTPLANARTOE(J420, 2, 2, ABGR, 1, 4, ARGB, 4) |
1752 TESTPLANARTOE(H420, 2, 2, ARGB, 4, ARGB, 4) | 1752 TESTPLANARTOE(H420, 2, 2, ARGB, 1, 4, ARGB, 4) |
1753 TESTPLANARTOE(H420, 2, 2, ABGR, 4, ARGB, 4) | 1753 TESTPLANARTOE(H420, 2, 2, ABGR, 1, 4, ARGB, 4) |
1754 TESTPLANARTOE(I420, 2, 2, BGRA, 4, ARGB, 4) | 1754 TESTPLANARTOE(I420, 2, 2, BGRA, 1, 4, ARGB, 4) |
1755 TESTPLANARTOE(I420, 2, 2, ABGR, 4, ARGB, 4) | 1755 TESTPLANARTOE(I420, 2, 2, ABGR, 1, 4, ARGB, 4) |
1756 TESTPLANARTOE(I420, 2, 2, RGBA, 4, ARGB, 4) | 1756 TESTPLANARTOE(I420, 2, 2, RGBA, 1, 4, ARGB, 4) |
1757 TESTPLANARTOE(I420, 2, 2, RGB24, 3, ARGB, 4) | 1757 TESTPLANARTOE(I420, 2, 2, RGB24, 1, 3, ARGB, 4) |
1758 TESTPLANARTOE(I420, 2, 2, RAW, 3, RGB24, 3) | 1758 TESTPLANARTOE(I420, 2, 2, RAW, 1, 3, RGB24, 3) |
1759 TESTPLANARTOE(I420, 2, 2, RGB24, 3, RAW, 3) | 1759 TESTPLANARTOE(I420, 2, 2, RGB24, 1, 3, RAW, 3) |
1760 TESTPLANARTOE(I420, 2, 2, ARGB, 4, RAW, 3) | 1760 TESTPLANARTOE(I420, 2, 2, ARGB, 1, 4, RAW, 3) |
1761 TESTPLANARTOE(I420, 2, 2, RAW, 3, ARGB, 4) | 1761 TESTPLANARTOE(I420, 2, 2, RAW, 1, 3, ARGB, 4) |
1762 TESTPLANARTOE(I420, 2, 2, ARGB, 4, RGB565, 2) | 1762 TESTPLANARTOE(I420, 2, 2, ARGB, 1, 4, RGB565, 2) |
1763 TESTPLANARTOE(I420, 2, 2, ARGB, 4, ARGB1555, 2) | 1763 TESTPLANARTOE(I420, 2, 2, ARGB, 1, 4, ARGB1555, 2) |
1764 TESTPLANARTOE(I420, 2, 2, ARGB, 4, ARGB4444, 2) | 1764 TESTPLANARTOE(I420, 2, 2, ARGB, 1, 4, ARGB4444, 2) |
1765 TESTPLANARTOE(I422, 2, 1, ARGB, 4, ARGB, 4) | 1765 TESTPLANARTOE(I422, 2, 1, ARGB, 1, 4, ARGB, 4) |
1766 TESTPLANARTOE(J422, 2, 1, ARGB, 4, ARGB, 4) | 1766 TESTPLANARTOE(J422, 2, 1, ARGB, 1, 4, ARGB, 4) |
1767 TESTPLANARTOE(J422, 2, 1, ABGR, 4, ARGB, 4) | 1767 TESTPLANARTOE(J422, 2, 1, ABGR, 1, 4, ARGB, 4) |
1768 TESTPLANARTOE(H422, 2, 1, ARGB, 4, ARGB, 4) | 1768 TESTPLANARTOE(H422, 2, 1, ARGB, 1, 4, ARGB, 4) |
1769 TESTPLANARTOE(H422, 2, 1, ABGR, 4, ARGB, 4) | 1769 TESTPLANARTOE(H422, 2, 1, ABGR, 1, 4, ARGB, 4) |
1770 TESTPLANARTOE(I422, 2, 1, BGRA, 4, ARGB, 4) | 1770 TESTPLANARTOE(I422, 2, 1, BGRA, 1, 4, ARGB, 4) |
1771 TESTPLANARTOE(I422, 2, 1, ABGR, 4, ARGB, 4) | 1771 TESTPLANARTOE(I422, 2, 1, ABGR, 1, 4, ARGB, 4) |
1772 TESTPLANARTOE(I422, 2, 1, RGBA, 4, ARGB, 4) | 1772 TESTPLANARTOE(I422, 2, 1, RGBA, 1, 4, ARGB, 4) |
1773 TESTPLANARTOE(I411, 4, 1, ARGB, 4, ARGB, 4) | 1773 TESTPLANARTOE(I411, 4, 1, ARGB, 1, 4, ARGB, 4) |
1774 TESTPLANARTOE(I444, 1, 1, ARGB, 4, ARGB, 4) | 1774 TESTPLANARTOE(I444, 1, 1, ARGB, 1, 4, ARGB, 4) |
1775 TESTPLANARTOE(J444, 1, 1, ARGB, 4, ARGB, 4) | 1775 TESTPLANARTOE(J444, 1, 1, ARGB, 1, 4, ARGB, 4) |
1776 TESTPLANARTOE(I444, 1, 1, ABGR, 4, ARGB, 4) | 1776 TESTPLANARTOE(I444, 1, 1, ABGR, 1, 4, ARGB, 4) |
1777 // TESTPLANARTOE(I420, 2, 2, YUY2, 2, ARGB, 4) | 1777 TESTPLANARTOE(I420, 2, 2, YUY2, 2, 4, ARGB, 4) |
1778 // TESTPLANARTOE(I420, 2, 2, UYVY, 2, ARGB, 4) | 1778 TESTPLANARTOE(I420, 2, 2, UYVY, 2, 4, ARGB, 4) |
1779 TESTPLANARTOE(I422, 2, 1, YUY2, 2, ARGB, 4) | 1779 TESTPLANARTOE(I422, 2, 1, YUY2, 2, 4, ARGB, 4) |
1780 TESTPLANARTOE(I422, 2, 1, UYVY, 2, ARGB, 4) | 1780 TESTPLANARTOE(I422, 2, 1, UYVY, 2, 4, ARGB, 4) |
1781 // TESTPLANARTOE(I420, 2, 2, ARGB, 4, I400, 1) | |
1782 // TESTPLANARTOE(J420, 2, 2, ARGB, 4, J400, 1) | |
1783 | 1781 |
1784 #define TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1782 #define TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1785 W1280, N, NEG, OFF, FMT_C, BPP_C, ATTEN) \ | 1783 W1280, N, NEG, OFF, FMT_C, BPP_C, ATTEN) \ |
1786 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##_##FMT_C##N) { \ | 1784 TEST_F(LibYUVConvertTest, FMT_PLANAR##To##FMT_B##_##FMT_C##N) { \ |
1787 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ | 1785 const int kWidth = ((W1280) > 0) ? (W1280) : 1; \ |
1788 const int kHeight = benchmark_height_; \ | 1786 const int kHeight = benchmark_height_; \ |
1789 const int kStrideB = kWidth * BPP_B; \ | 1787 const int kStrideB = SUBSAMPLE(kWidth, SUB_B) * BPP_B; \ |
1790 const int kSizeUV = \ | 1788 const int kSizeUV = \ |
1791 SUBSAMPLE(kWidth, SUBSAMP_X) * SUBSAMPLE(kHeight, SUBSAMP_Y); \ | 1789 SUBSAMPLE(kWidth, SUBSAMP_X) * SUBSAMPLE(kHeight, SUBSAMP_Y); \ |
1792 align_buffer_64(src_y, kWidth * kHeight + OFF); \ | 1790 align_buffer_64(src_y, kWidth * kHeight + OFF); \ |
1793 align_buffer_64(src_u, kSizeUV + OFF); \ | 1791 align_buffer_64(src_u, kSizeUV + OFF); \ |
1794 align_buffer_64(src_v, kSizeUV + OFF); \ | 1792 align_buffer_64(src_v, kSizeUV + OFF); \ |
1795 align_buffer_64(src_a, kWidth * kHeight + OFF); \ | 1793 align_buffer_64(src_a, kWidth * kHeight + OFF); \ |
1796 align_buffer_64(dst_argb_b, kStrideB * kHeight + OFF); \ | 1794 align_buffer_64(dst_argb_b, kStrideB * kHeight + OFF); \ |
1797 for (int i = 0; i < kWidth * kHeight; ++i) { \ | 1795 for (int i = 0; i < kWidth * kHeight; ++i) { \ |
1798 src_y[i + OFF] = (fastrand() & 0xff); \ | 1796 src_y[i + OFF] = (fastrand() & 0xff); \ |
1799 src_a[i + OFF] = (fastrand() & 0xff); \ | 1797 src_a[i + OFF] = (fastrand() & 0xff); \ |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1833 } \ | 1831 } \ |
1834 free_aligned_buffer_64(src_y); \ | 1832 free_aligned_buffer_64(src_y); \ |
1835 free_aligned_buffer_64(src_u); \ | 1833 free_aligned_buffer_64(src_u); \ |
1836 free_aligned_buffer_64(src_v); \ | 1834 free_aligned_buffer_64(src_v); \ |
1837 free_aligned_buffer_64(src_a); \ | 1835 free_aligned_buffer_64(src_a); \ |
1838 free_aligned_buffer_64(dst_argb_b); \ | 1836 free_aligned_buffer_64(dst_argb_b); \ |
1839 free_aligned_buffer_64(dst_argb_c); \ | 1837 free_aligned_buffer_64(dst_argb_c); \ |
1840 free_aligned_buffer_64(dst_argb_bc); \ | 1838 free_aligned_buffer_64(dst_argb_bc); \ |
1841 } | 1839 } |
1842 | 1840 |
1843 #define TESTQPLANARTOE(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1841 #define TESTQPLANARTOE(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1844 FMT_C, BPP_C) \ | 1842 FMT_C, BPP_C) \ |
1845 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1843 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1846 benchmark_width_ - 4, _Any, +, 0, FMT_C, BPP_C, 0) \ | 1844 benchmark_width_ - 4, _Any, +, 0, FMT_C, BPP_C, 0) \ |
1847 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1845 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1848 benchmark_width_, _Unaligned, +, 1, FMT_C, BPP_C, 0) \ | 1846 benchmark_width_, _Unaligned, +, 1, FMT_C, BPP_C, 0) \ |
1849 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1847 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1850 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \ | 1848 benchmark_width_, _Invert, -, 0, FMT_C, BPP_C, 0) \ |
1851 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1849 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1852 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \ | 1850 benchmark_width_, _Opt, +, 0, FMT_C, BPP_C, 0) \ |
1853 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, BPP_B, \ | 1851 TESTQPLANARTOEI(FMT_PLANAR, SUBSAMP_X, SUBSAMP_Y, FMT_B, SUB_B, BPP_B, \ |
1854 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1) | 1852 benchmark_width_, _Premult, +, 0, FMT_C, BPP_C, 1) |
1855 | 1853 |
1856 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 4, ABGR, 4) | 1854 TESTQPLANARTOE(I420Alpha, 2, 2, ARGB, 1, 4, ABGR, 4) |
1857 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 4, ARGB, 4) | 1855 TESTQPLANARTOE(I420Alpha, 2, 2, ABGR, 1, 4, ARGB, 4) |
1858 | 1856 |
1859 } // namespace libyuv | 1857 } // namespace libyuv |
OLD | NEW |