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

Side by Side Diff: source/row_common.cc

Issue 1359443005: move constants into common (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: fix up jpeg comments and remove todo to move to common Created 5 years, 3 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 | « include/libyuv/version.h ('k') | source/row_gcc.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 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 982 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 ++src_y; 993 ++src_y;
994 } 994 }
995 } 995 }
996 996
997 // BT.601 YUV to RGB reference 997 // BT.601 YUV to RGB reference
998 // R = (Y - 16) * 1.164 - V * -1.596 998 // R = (Y - 16) * 1.164 - V * -1.596
999 // G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813 999 // G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813
1000 // B = (Y - 16) * 1.164 - U * -2.018 1000 // B = (Y - 16) * 1.164 - U * -2.018
1001 1001
1002 // Y contribution to R,G,B. Scale and bias. 1002 // Y contribution to R,G,B. Scale and bias.
1003 // TODO(fbarchard): Consider moving constants into a common header.
1004 #define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */ 1003 #define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
1005 #define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */ 1004 #define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
1006 1005
1007 // U and V contributions to R,G,B. 1006 // U and V contributions to R,G,B.
1008 #define UB -128 /* max(-128, round(-2.018 * 64)) */ 1007 #define UB -128 /* max(-128, round(-2.018 * 64)) */
1009 #define UG 25 /* round(0.391 * 64) */ 1008 #define UG 25 /* round(0.391 * 64) */
1010 #define VG 52 /* round(0.813 * 64) */ 1009 #define VG 52 /* round(0.813 * 64) */
1011 #define VR -102 /* round(-1.596 * 64) */ 1010 #define VR -102 /* round(-1.596 * 64) */
1012 1011
1013 // Bias values to subtract 16 from Y and 128 from U and V, with rounding. 1012 // Bias values to subtract 16 from Y and 128 from U and V.
1014 #define BB (UB * 128 + YGB) 1013 #define BB (UB * 128 + YGB)
1015 #define BG (UG * 128 + VG * 128 + YGB) 1014 #define BG (UG * 128 + VG * 128 + YGB)
1016 #define BR (VR * 128 + YGB) 1015 #define BR (VR * 128 + YGB)
1016
1017 // BT601 constants for YUV to RGB.
1018 YuvConstants SIMD_ALIGNED(kYuvConstants) = {
1019 { UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0,
1020 UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 },
1021 { UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG,
1022 UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG },
1023 { 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR,
1024 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR },
1025 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
1026 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
1027 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
1028 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
1029 };
1030
1031 // BT601 constants for NV21 where chroma plane is VU instead of UV.
1032 YuvConstants SIMD_ALIGNED(kYvuConstants) = {
1033 { 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB,
1034 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB },
1035 { VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG,
1036 VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG },
1037 { VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0,
1038 VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 },
1039 { BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
1040 { BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
1041 { BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
1042 { YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
1043 };
1044
1045 YuvConstantsNEON SIMD_ALIGNED(kYuvConstantsNEON) = {
1046 { -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 },
1047 { UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 },
1048 { BB, BG, BR, 0, 0, 0, 0, 0 },
1049 { 0x0101 * YG, 0, 0, 0 }
1050 };
1017 1051
1018 // C reference code that mimics the YUV assembly. 1052 // C reference code that mimics the YUV assembly.
1019 static __inline void YuvPixel(uint8 y, uint8 u, uint8 v, 1053 static __inline void YuvPixel(uint8 y, uint8 u, uint8 v,
1020 uint8* b, uint8* g, uint8* r) { 1054 uint8* b, uint8* g, uint8* r) {
1021 uint32 y1 = (uint32)(y * 0x0101 * YG) >> 16; 1055 uint32 y1 = (uint32)(y * 0x0101 * YG) >> 16;
1022 *b = Clamp((int32)(-(u * UB) + y1 + BB) >> 6); 1056 *b = Clamp((int32)(-(u * UB) + y1 + BB) >> 6);
1023 *g = Clamp((int32)(-(v * VG + u * UG) + y1 + BG) >> 6); 1057 *g = Clamp((int32)(-(v * VG + u * UG) + y1 + BG) >> 6);
1024 *r = Clamp((int32)(-(v * VR)+ y1 + BR) >> 6); 1058 *r = Clamp((int32)(-(v * VR)+ y1 + BR) >> 6);
1025 } 1059 }
1026 1060
1027 // C reference code that mimics the YUV assembly. 1061 // C reference code that mimics the YUV assembly.
1028 static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) { 1062 static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) {
1029 uint32 y1 = (uint32)(y * 0x0101 * YG) >> 16; 1063 uint32 y1 = (uint32)(y * 0x0101 * YG) >> 16;
1030 *b = Clamp((int32)(y1 + YGB) >> 6); 1064 *b = Clamp((int32)(y1 + YGB) >> 6);
1031 *g = Clamp((int32)(y1 + YGB) >> 6); 1065 *g = Clamp((int32)(y1 + YGB) >> 6);
1032 *r = Clamp((int32)(y1 + YGB) >> 6); 1066 *r = Clamp((int32)(y1 + YGB) >> 6);
1033 } 1067 }
1034
1035 #undef YG 1068 #undef YG
1036 #undef YGB 1069 #undef YGB
1037 #undef UB 1070 #undef UB
1038 #undef UG 1071 #undef UG
1039 #undef VG 1072 #undef VG
1040 #undef VR 1073 #undef VR
1041 #undef BB 1074 #undef BB
1042 #undef BG 1075 #undef BG
1043 #undef BR 1076 #undef BR
1044 1077
1045 // JPEG YUV to RGB reference 1078 // JPEG YUV to RGB reference
1046 // * R = Y - V * -1.40200 1079 // * R = Y - V * -1.40200
1047 // * G = Y - U * 0.34414 - V * 0.71414 1080 // * G = Y - U * 0.34414 - V * 0.71414
1048 // * B = Y - U * -1.77200 1081 // * B = Y - U * -1.77200
1049 1082
1050 // Y contribution to R,G,B. Scale and bias. 1083 // Y contribution to R,G,B. Scale and bias.
1051 // TODO(fbarchard): Consider moving constants into a common header.
1052 #define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */ 1084 #define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
1053 #define YGBJ 32 /* 64 / 2 */ 1085 #define YGBJ 32 /* 64 / 2 */
1054 1086
1055 // U and V contributions to R,G,B. 1087 // U and V contributions to R,G,B.
1056 #define UBJ -113 /* round(-1.77200 * 64) */ 1088 #define UBJ -113 /* round(-1.77200 * 64) */
1057 #define UGJ 22 /* round(0.34414 * 64) */ 1089 #define UGJ 22 /* round(0.34414 * 64) */
1058 #define VGJ 46 /* round(0.71414 * 64) */ 1090 #define VGJ 46 /* round(0.71414 * 64) */
1059 #define VRJ -90 /* round(-1.40200 * 64) */ 1091 #define VRJ -90 /* round(-1.40200 * 64) */
1060 1092
1061 // Bias values to round Y and subtract 128 from U and V. 1093 // Bias values to round, and subtract 128 from U and V.
1062 #define BBJ (UBJ * 128 + YGBJ) 1094 #define BBJ (UBJ * 128 + YGBJ)
1063 #define BGJ (UGJ * 128 + VGJ * 128 + YGBJ) 1095 #define BGJ (UGJ * 128 + VGJ * 128 + YGBJ)
1064 #define BRJ (VRJ * 128 + YGBJ) 1096 #define BRJ (VRJ * 128 + YGBJ)
1097
1098 // JPEG constants for YUV to RGB.
1099 YuvConstants SIMD_ALIGNED(kYuvJConstants) = {
1100 { UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0,
1101 UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0 },
1102 { UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
1103 UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
1104 UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
1105 UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ },
1106 { 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ,
1107 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ },
1108 { BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ,
1109 BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ },
1110 { BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ,
1111 BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ },
1112 { BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ,
1113 BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ },
1114 { YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ,
1115 YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ }
1116 };
1117
1118 // JPEG constants for YUV to RGB.
1119 YuvConstantsNEON SIMD_ALIGNED(kYuvJConstantsNEON) = {
1120 { -UBJ, -UBJ, -UBJ, -UBJ, -VRJ, -VRJ, -VRJ, -VRJ, 0, 0, 0, 0, 0, 0, 0, 0 },
1121 { UGJ, UGJ, UGJ, UGJ, VGJ, VGJ, VGJ, VGJ, 0, 0, 0, 0, 0, 0, 0, 0 },
1122 { BBJ, BGJ, BRJ, 0, 0, 0, 0, 0 },
1123 { 0x0101 * YGJ, 0, 0, 0 }
1124 };
1065 1125
1066 // C reference code that mimics the YUV assembly. 1126 // C reference code that mimics the YUV assembly.
1067 static __inline void YuvJPixel(uint8 y, uint8 u, uint8 v, 1127 static __inline void YuvJPixel(uint8 y, uint8 u, uint8 v,
1068 uint8* b, uint8* g, uint8* r) { 1128 uint8* b, uint8* g, uint8* r) {
1069 uint32 y1 = (uint32)(y * 0x0101 * YGJ) >> 16; 1129 uint32 y1 = (uint32)(y * 0x0101 * YGJ) >> 16;
1070 *b = Clamp((int32)(-(u * UBJ) + y1 + BBJ) >> 6); 1130 *b = Clamp((int32)(-(u * UBJ) + y1 + BBJ) >> 6);
1071 *g = Clamp((int32)(-(v * VGJ + u * UGJ) + y1 + BGJ) >> 6); 1131 *g = Clamp((int32)(-(v * VGJ + u * UGJ) + y1 + BGJ) >> 6);
1072 *r = Clamp((int32)(-(v * VRJ) + y1 + BRJ) >> 6); 1132 *r = Clamp((int32)(-(v * VRJ) + y1 + BRJ) >> 6);
1073 } 1133 }
1074 1134
1075 #undef YGJ 1135 #undef YGJ
1076 #undef YGBJ 1136 #undef YGBJ
1077 #undef UBJ 1137 #undef UBJ
1078 #undef UGJ 1138 #undef UGJ
1079 #undef VGJ 1139 #undef VGJ
1080 #undef VRJ 1140 #undef VRJ
1081 #undef BBJ 1141 #undef BBJ
1082 #undef BGJ 1142 #undef BGJ
1083 #undef BRJ 1143 #undef BRJ
1084 1144
1085 // BT.709 YUV to RGB reference 1145 // BT.709 YUV to RGB reference
1086 // * R = Y - V * -1.28033 1146 // * R = Y - V * -1.28033
1087 // * G = Y - U * 0.21482 - V * 0.38059 1147 // * G = Y - U * 0.21482 - V * 0.38059
1088 // * B = Y - U * -2.12798 1148 // * B = Y - U * -2.12798
1089 1149
1090 // Y contribution to R,G,B. Scale and bias. 1150 // Y contribution to R,G,B. Scale and bias.
1091 // TODO(fbarchard): Consider moving constants into a common header.
1092 #define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */ 1151 #define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
1093 #define YGBH 32 /* 64 / 2 */ 1152 #define YGBH 32 /* 64 / 2 */
1094 1153
1095 // U and V contributions to R,G,B. 1154 // U and V contributions to R,G,B.
1096 #define UBH -128 /* max(-128, round(-2.12798 * 64)) */ 1155 #define UBH -128 /* max(-128, round(-2.12798 * 64)) */
1097 #define UGH 14 /* round(0.21482 * 64) */ 1156 #define UGH 14 /* round(0.21482 * 64) */
1098 #define VGH 24 /* round(0.38059 * 64) */ 1157 #define VGH 24 /* round(0.38059 * 64) */
1099 #define VRH -82 /* round(-1.28033 * 64) */ 1158 #define VRH -82 /* round(-1.28033 * 64) */
1100 1159
1101 // Bias values to round, and subtract 128 from U and V. 1160 // Bias values to round, and subtract 128 from U and V.
1102 #define BBH (UBH * 128 + YGBH) 1161 #define BBH (UBH * 128 + YGBH)
1103 #define BGH (UGH * 128 + VGH * 128 + YGBH) 1162 #define BGH (UGH * 128 + VGH * 128 + YGBH)
1104 #define BRH (VRH * 128 + YGBH) 1163 #define BRH (VRH * 128 + YGBH)
1105 1164
1165 // BT.709 constants for YUV to RGB.
1166 YuvConstants SIMD_ALIGNED(kYuvHConstants) = {
1167 { UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0,
1168 UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0 },
1169 { UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
1170 UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
1171 UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
1172 UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH },
1173 { 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH,
1174 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH },
1175 { BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH,
1176 BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH },
1177 { BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH,
1178 BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH },
1179 { BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH,
1180 BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH },
1181 { YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH,
1182 YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH }
1183 };
1184
1185 // BT.709 constants for YUV to RGB.
1186 YuvConstantsNEON SIMD_ALIGNED(kYuvHConstantsNEON) = {
1187 { -UBH, -UBH, -UBH, -UBH, -VRH, -VRH, -VRH, -VRH, 0, 0, 0, 0, 0, 0, 0, 0 },
1188 { UGH, UGH, UGH, UGH, VGH, VGH, VGH, VGH, 0, 0, 0, 0, 0, 0, 0, 0 },
1189 { BBH, BGH, BRH, 0, 0, 0, 0, 0 },
1190 { 0x0101 * YGH, 0, 0, 0 }
1191 };
1192
1106 // C reference code that mimics the YUV assembly. 1193 // C reference code that mimics the YUV assembly.
1107 static __inline void YuvHPixel(uint8 y, uint8 u, uint8 v, 1194 static __inline void YuvHPixel(uint8 y, uint8 u, uint8 v,
1108 uint8* b, uint8* g, uint8* r) { 1195 uint8* b, uint8* g, uint8* r) {
1109 uint32 y1 = (uint32)(y * 0x0101 * YGH) >> 16; 1196 uint32 y1 = (uint32)(y * 0x0101 * YGH) >> 16;
1110 *b = Clamp((int32)(-(u * UBH) + y1 + BBH) >> 6); 1197 *b = Clamp((int32)(-(u * UBH) + y1 + BBH) >> 6);
1111 *g = Clamp((int32)(-(v * VGH + u * UGH) + y1 + BGH) >> 6); 1198 *g = Clamp((int32)(-(v * VGH + u * UGH) + y1 + BGH) >> 6);
1112 *r = Clamp((int32)(-(v * VRH) + y1 + BRH) >> 6); 1199 *r = Clamp((int32)(-(v * VRH) + y1 + BRH) >> 6);
1113 } 1200 }
1114 1201
1115 #undef YGH 1202 #undef YGH
(...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after
2307 src_v += 1; 2394 src_v += 1;
2308 } 2395 }
2309 if (width & 1) { 2396 if (width & 1) {
2310 dst_frame[0] = src_u[0]; 2397 dst_frame[0] = src_u[0];
2311 dst_frame[1] = src_y[0]; 2398 dst_frame[1] = src_y[0];
2312 dst_frame[2] = src_v[0]; 2399 dst_frame[2] = src_v[0];
2313 dst_frame[3] = 0; 2400 dst_frame[3] = 0;
2314 } 2401 }
2315 } 2402 }
2316 2403
2317 extern struct YuvConstants kYuvConstants;
2318 extern struct YuvConstants kYuvJConstants;
2319 extern struct YuvConstants kYuvHConstants;
2320 extern struct YuvConstantsNEON kYuvConstantsNEON;
2321 extern struct YuvConstantsNEON kYuvJConstantsNEON;
2322 extern struct YuvConstantsNEON kYuvHConstantsNEON;
2323
2324 #define ANYYUV(NAMEANY, ANY_SIMD, YUVCONSTANTS) \ 2404 #define ANYYUV(NAMEANY, ANY_SIMD, YUVCONSTANTS) \
2325 void NAMEANY(const uint8* y_buf, \ 2405 void NAMEANY(const uint8* y_buf, \
2326 const uint8* u_buf, \ 2406 const uint8* u_buf, \
2327 const uint8* v_buf, \ 2407 const uint8* v_buf, \
2328 uint8* dst_argb, \ 2408 uint8* dst_argb, \
2329 int width) { \ 2409 int width) { \
2330 ANY_SIMD(y_buf, u_buf, v_buf, dst_argb, &YUVCONSTANTS, width); \ 2410 ANY_SIMD(y_buf, u_buf, v_buf, dst_argb, &YUVCONSTANTS, width); \
2331 } 2411 }
2332 2412
2333 #ifdef HAS_I422TOARGBMATRIXROW_NEON 2413 #ifdef HAS_I422TOARGBMATRIXROW_NEON
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
2785 } 2865 }
2786 if (width & 1) { 2866 if (width & 1) {
2787 dst[3] = src[0]; 2867 dst[3] = src[0];
2788 } 2868 }
2789 } 2869 }
2790 2870
2791 #ifdef __cplusplus 2871 #ifdef __cplusplus
2792 } // extern "C" 2872 } // extern "C"
2793 } // namespace libyuv 2873 } // namespace libyuv
2794 #endif 2874 #endif
OLDNEW
« no previous file with comments | « include/libyuv/version.h ('k') | source/row_gcc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698