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

Side by Side Diff: source/row_any.cc

Issue 2406123002: Remove I411 support, update doc and switch to side by side test (Closed)
Patch Set: bump version, disable a few lint warnings Created 4 years, 2 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/convert_to_i420.cc ('k') | source/row_common.cc » ('j') | 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 2012 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2012 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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 } \ 120 } \
121 ANY_SIMD(temp, temp + 64, temp + 128, temp + 192, \ 121 ANY_SIMD(temp, temp + 64, temp + 128, temp + 192, \
122 yuvconstants, MASK + 1); \ 122 yuvconstants, MASK + 1); \
123 memcpy(dst_ptr + (n >> DUVSHIFT) * BPP, temp + 192, \ 123 memcpy(dst_ptr + (n >> DUVSHIFT) * BPP, temp + 192, \
124 SS(r, DUVSHIFT) * BPP); \ 124 SS(r, DUVSHIFT) * BPP); \
125 } 125 }
126 126
127 #ifdef HAS_I422TOARGBROW_SSSE3 127 #ifdef HAS_I422TOARGBROW_SSSE3
128 ANY31C(I422ToARGBRow_Any_SSSE3, I422ToARGBRow_SSSE3, 1, 0, 4, 7) 128 ANY31C(I422ToARGBRow_Any_SSSE3, I422ToARGBRow_SSSE3, 1, 0, 4, 7)
129 #endif 129 #endif
130 #ifdef HAS_I411TOARGBROW_SSSE3
131 ANY31C(I411ToARGBRow_Any_SSSE3, I411ToARGBRow_SSSE3, 2, 0, 4, 7)
132 #endif
133 #ifdef HAS_I444TOARGBROW_SSSE3 130 #ifdef HAS_I444TOARGBROW_SSSE3
134 ANY31C(I444ToARGBRow_Any_SSSE3, I444ToARGBRow_SSSE3, 0, 0, 4, 7) 131 ANY31C(I444ToARGBRow_Any_SSSE3, I444ToARGBRow_SSSE3, 0, 0, 4, 7)
135 ANY31C(I422ToRGBARow_Any_SSSE3, I422ToRGBARow_SSSE3, 1, 0, 4, 7) 132 ANY31C(I422ToRGBARow_Any_SSSE3, I422ToRGBARow_SSSE3, 1, 0, 4, 7)
136 ANY31C(I422ToARGB4444Row_Any_SSSE3, I422ToARGB4444Row_SSSE3, 1, 0, 2, 7) 133 ANY31C(I422ToARGB4444Row_Any_SSSE3, I422ToARGB4444Row_SSSE3, 1, 0, 2, 7)
137 ANY31C(I422ToARGB1555Row_Any_SSSE3, I422ToARGB1555Row_SSSE3, 1, 0, 2, 7) 134 ANY31C(I422ToARGB1555Row_Any_SSSE3, I422ToARGB1555Row_SSSE3, 1, 0, 2, 7)
138 ANY31C(I422ToRGB565Row_Any_SSSE3, I422ToRGB565Row_SSSE3, 1, 0, 2, 7) 135 ANY31C(I422ToRGB565Row_Any_SSSE3, I422ToRGB565Row_SSSE3, 1, 0, 2, 7)
139 ANY31C(I422ToRGB24Row_Any_SSSE3, I422ToRGB24Row_SSSE3, 1, 0, 3, 7) 136 ANY31C(I422ToRGB24Row_Any_SSSE3, I422ToRGB24Row_SSSE3, 1, 0, 3, 7)
140 #endif // HAS_I444TOARGBROW_SSSE3 137 #endif // HAS_I444TOARGBROW_SSSE3
141 #ifdef HAS_I422TORGB24ROW_AVX2 138 #ifdef HAS_I422TORGB24ROW_AVX2
142 ANY31C(I422ToRGB24Row_Any_AVX2, I422ToRGB24Row_AVX2, 1, 0, 3, 15) 139 ANY31C(I422ToRGB24Row_Any_AVX2, I422ToRGB24Row_AVX2, 1, 0, 3, 15)
143 #endif 140 #endif
144 #ifdef HAS_I422TOARGBROW_AVX2 141 #ifdef HAS_I422TOARGBROW_AVX2
145 ANY31C(I422ToARGBRow_Any_AVX2, I422ToARGBRow_AVX2, 1, 0, 4, 15) 142 ANY31C(I422ToARGBRow_Any_AVX2, I422ToARGBRow_AVX2, 1, 0, 4, 15)
146 #endif 143 #endif
147 #ifdef HAS_I422TORGBAROW_AVX2 144 #ifdef HAS_I422TORGBAROW_AVX2
148 ANY31C(I422ToRGBARow_Any_AVX2, I422ToRGBARow_AVX2, 1, 0, 4, 15) 145 ANY31C(I422ToRGBARow_Any_AVX2, I422ToRGBARow_AVX2, 1, 0, 4, 15)
149 #endif 146 #endif
150 #ifdef HAS_I444TOARGBROW_AVX2 147 #ifdef HAS_I444TOARGBROW_AVX2
151 ANY31C(I444ToARGBRow_Any_AVX2, I444ToARGBRow_AVX2, 0, 0, 4, 15) 148 ANY31C(I444ToARGBRow_Any_AVX2, I444ToARGBRow_AVX2, 0, 0, 4, 15)
152 #endif 149 #endif
153 #ifdef HAS_I411TOARGBROW_AVX2
154 ANY31C(I411ToARGBRow_Any_AVX2, I411ToARGBRow_AVX2, 2, 0, 4, 15)
155 #endif
156 #ifdef HAS_I422TOARGB4444ROW_AVX2 150 #ifdef HAS_I422TOARGB4444ROW_AVX2
157 ANY31C(I422ToARGB4444Row_Any_AVX2, I422ToARGB4444Row_AVX2, 1, 0, 2, 7) 151 ANY31C(I422ToARGB4444Row_Any_AVX2, I422ToARGB4444Row_AVX2, 1, 0, 2, 7)
158 #endif 152 #endif
159 #ifdef HAS_I422TOARGB1555ROW_AVX2 153 #ifdef HAS_I422TOARGB1555ROW_AVX2
160 ANY31C(I422ToARGB1555Row_Any_AVX2, I422ToARGB1555Row_AVX2, 1, 0, 2, 7) 154 ANY31C(I422ToARGB1555Row_Any_AVX2, I422ToARGB1555Row_AVX2, 1, 0, 2, 7)
161 #endif 155 #endif
162 #ifdef HAS_I422TORGB565ROW_AVX2 156 #ifdef HAS_I422TORGB565ROW_AVX2
163 ANY31C(I422ToRGB565Row_Any_AVX2, I422ToRGB565Row_AVX2, 1, 0, 2, 7) 157 ANY31C(I422ToRGB565Row_Any_AVX2, I422ToRGB565Row_AVX2, 1, 0, 2, 7)
164 #endif 158 #endif
165 #ifdef HAS_I422TOARGBROW_NEON 159 #ifdef HAS_I422TOARGBROW_NEON
166 ANY31C(I444ToARGBRow_Any_NEON, I444ToARGBRow_NEON, 0, 0, 4, 7) 160 ANY31C(I444ToARGBRow_Any_NEON, I444ToARGBRow_NEON, 0, 0, 4, 7)
167 ANY31C(I422ToARGBRow_Any_NEON, I422ToARGBRow_NEON, 1, 0, 4, 7) 161 ANY31C(I422ToARGBRow_Any_NEON, I422ToARGBRow_NEON, 1, 0, 4, 7)
168 ANY31C(I411ToARGBRow_Any_NEON, I411ToARGBRow_NEON, 2, 0, 4, 7)
169 ANY31C(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, 1, 0, 4, 7) 162 ANY31C(I422ToRGBARow_Any_NEON, I422ToRGBARow_NEON, 1, 0, 4, 7)
170 ANY31C(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, 1, 0, 3, 7) 163 ANY31C(I422ToRGB24Row_Any_NEON, I422ToRGB24Row_NEON, 1, 0, 3, 7)
171 ANY31C(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, 1, 0, 2, 7) 164 ANY31C(I422ToARGB4444Row_Any_NEON, I422ToARGB4444Row_NEON, 1, 0, 2, 7)
172 ANY31C(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, 1, 0, 2, 7) 165 ANY31C(I422ToARGB1555Row_Any_NEON, I422ToARGB1555Row_NEON, 1, 0, 2, 7)
173 ANY31C(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, 1, 0, 2, 7) 166 ANY31C(I422ToRGB565Row_Any_NEON, I422ToRGB565Row_NEON, 1, 0, 2, 7)
174 #endif 167 #endif
175 #undef ANY31C 168 #undef ANY31C
176 169
177 // Any 2 planes to 1. 170 // Any 2 planes to 1.
178 #define ANY21(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \ 171 #define ANY21(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 #define ANY12(NAMEANY, ANY_SIMD, UVSHIFT, BPP, DUVSHIFT, MASK) \ 706 #define ANY12(NAMEANY, ANY_SIMD, UVSHIFT, BPP, DUVSHIFT, MASK) \
714 void NAMEANY(const uint8* src_ptr, uint8* dst_u, uint8* dst_v, int width) {\ 707 void NAMEANY(const uint8* src_ptr, uint8* dst_u, uint8* dst_v, int width) {\
715 SIMD_ALIGNED(uint8 temp[128 * 3]); \ 708 SIMD_ALIGNED(uint8 temp[128 * 3]); \
716 memset(temp, 0, 128); /* for msan */ \ 709 memset(temp, 0, 128); /* for msan */ \
717 int r = width & MASK; \ 710 int r = width & MASK; \
718 int n = width & ~MASK; \ 711 int n = width & ~MASK; \
719 if (n > 0) { \ 712 if (n > 0) { \
720 ANY_SIMD(src_ptr, dst_u, dst_v, n); \ 713 ANY_SIMD(src_ptr, dst_u, dst_v, n); \
721 } \ 714 } \
722 memcpy(temp, src_ptr + (n >> UVSHIFT) * BPP, SS(r, UVSHIFT) * BPP); \ 715 memcpy(temp, src_ptr + (n >> UVSHIFT) * BPP, SS(r, UVSHIFT) * BPP); \
723 /* repeat last 4 - 12 bytes for 411 subsampler */ \
724 if (((width & 3) == 1) && BPP == 4 && DUVSHIFT == 2) { \
725 memcpy(temp + SS(r, UVSHIFT) * BPP, \
726 temp + SS(r, UVSHIFT) * BPP - BPP, BPP); \
727 memcpy(temp + SS(r, UVSHIFT) * BPP + BPP, \
728 temp + SS(r, UVSHIFT) * BPP - BPP, BPP * 2); \
729 } \
730 if (((width & 3) == 2) && BPP == 4 && DUVSHIFT == 2) { \
731 memcpy(temp + SS(r, UVSHIFT) * BPP, \
732 temp + SS(r, UVSHIFT) * BPP - BPP * 2, BPP * 2); \
733 } \
734 if (((width & 3) == 3) && BPP == 4 && DUVSHIFT == 2) { \
735 memcpy(temp + SS(r, UVSHIFT) * BPP, \
736 temp + SS(r, UVSHIFT) * BPP - BPP, BPP); \
737 } \
738 ANY_SIMD(temp, temp + 128, temp + 256, MASK + 1); \ 716 ANY_SIMD(temp, temp + 128, temp + 256, MASK + 1); \
739 memcpy(dst_u + (n >> DUVSHIFT), temp + 128, SS(r, DUVSHIFT)); \ 717 memcpy(dst_u + (n >> DUVSHIFT), temp + 128, SS(r, DUVSHIFT)); \
740 memcpy(dst_v + (n >> DUVSHIFT), temp + 256, SS(r, DUVSHIFT)); \ 718 memcpy(dst_v + (n >> DUVSHIFT), temp + 256, SS(r, DUVSHIFT)); \
741 } 719 }
742 720
743 #ifdef HAS_SPLITUVROW_SSE2 721 #ifdef HAS_SPLITUVROW_SSE2
744 ANY12(SplitUVRow_Any_SSE2, SplitUVRow_SSE2, 0, 2, 0, 15) 722 ANY12(SplitUVRow_Any_SSE2, SplitUVRow_SSE2, 0, 2, 0, 15)
745 #endif 723 #endif
746 #ifdef HAS_SPLITUVROW_AVX2 724 #ifdef HAS_SPLITUVROW_AVX2
747 ANY12(SplitUVRow_Any_AVX2, SplitUVRow_AVX2, 0, 2, 0, 31) 725 ANY12(SplitUVRow_Any_AVX2, SplitUVRow_AVX2, 0, 2, 0, 31)
(...skipping 10 matching lines...) Expand all
758 #ifdef HAS_YUY2TOUV422ROW_AVX2 736 #ifdef HAS_YUY2TOUV422ROW_AVX2
759 ANY12(YUY2ToUV422Row_Any_AVX2, YUY2ToUV422Row_AVX2, 1, 4, 1, 31) 737 ANY12(YUY2ToUV422Row_Any_AVX2, YUY2ToUV422Row_AVX2, 1, 4, 1, 31)
760 ANY12(UYVYToUV422Row_Any_AVX2, UYVYToUV422Row_AVX2, 1, 4, 1, 31) 738 ANY12(UYVYToUV422Row_Any_AVX2, UYVYToUV422Row_AVX2, 1, 4, 1, 31)
761 #endif 739 #endif
762 #ifdef HAS_YUY2TOUV422ROW_SSE2 740 #ifdef HAS_YUY2TOUV422ROW_SSE2
763 ANY12(YUY2ToUV422Row_Any_SSE2, YUY2ToUV422Row_SSE2, 1, 4, 1, 15) 741 ANY12(YUY2ToUV422Row_Any_SSE2, YUY2ToUV422Row_SSE2, 1, 4, 1, 15)
764 ANY12(UYVYToUV422Row_Any_SSE2, UYVYToUV422Row_SSE2, 1, 4, 1, 15) 742 ANY12(UYVYToUV422Row_Any_SSE2, UYVYToUV422Row_SSE2, 1, 4, 1, 15)
765 #endif 743 #endif
766 #ifdef HAS_YUY2TOUV422ROW_NEON 744 #ifdef HAS_YUY2TOUV422ROW_NEON
767 ANY12(ARGBToUV444Row_Any_NEON, ARGBToUV444Row_NEON, 0, 4, 0, 7) 745 ANY12(ARGBToUV444Row_Any_NEON, ARGBToUV444Row_NEON, 0, 4, 0, 7)
768 ANY12(ARGBToUV411Row_Any_NEON, ARGBToUV411Row_NEON, 0, 4, 2, 31)
769 ANY12(YUY2ToUV422Row_Any_NEON, YUY2ToUV422Row_NEON, 1, 4, 1, 15) 746 ANY12(YUY2ToUV422Row_Any_NEON, YUY2ToUV422Row_NEON, 1, 4, 1, 15)
770 ANY12(UYVYToUV422Row_Any_NEON, UYVYToUV422Row_NEON, 1, 4, 1, 15) 747 ANY12(UYVYToUV422Row_Any_NEON, UYVYToUV422Row_NEON, 1, 4, 1, 15)
771 #endif 748 #endif
772 #ifdef HAS_YUY2TOUV422ROW_MSA 749 #ifdef HAS_YUY2TOUV422ROW_MSA
773 ANY12(YUY2ToUV422Row_Any_MSA, YUY2ToUV422Row_MSA, 1, 4, 1, 31) 750 ANY12(YUY2ToUV422Row_Any_MSA, YUY2ToUV422Row_MSA, 1, 4, 1, 31)
774 ANY12(UYVYToUV422Row_Any_MSA, UYVYToUV422Row_MSA, 1, 4, 1, 31) 751 ANY12(UYVYToUV422Row_Any_MSA, UYVYToUV422Row_MSA, 1, 4, 1, 31)
775 #endif 752 #endif
776 #undef ANY12 753 #undef ANY12
777 754
778 // Any 1 to 2 with source stride (2 rows of source). Outputs UV planes. 755 // Any 1 to 2 with source stride (2 rows of source). Outputs UV planes.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 #endif 840 #endif
864 #ifdef HAS_UYVYTOUVROW_MSA 841 #ifdef HAS_UYVYTOUVROW_MSA
865 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31) 842 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31)
866 #endif 843 #endif
867 #undef ANY12S 844 #undef ANY12S
868 845
869 #ifdef __cplusplus 846 #ifdef __cplusplus
870 } // extern "C" 847 } // extern "C"
871 } // namespace libyuv 848 } // namespace libyuv
872 #endif 849 #endif
OLDNEW
« no previous file with comments | « source/convert_to_i420.cc ('k') | source/row_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698