| 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 |