mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2025-12-07 17:26:49 +08:00
move constants into common
R=harryjin@google.com BUG=libyuv:488 Review URL: https://codereview.chromium.org/1359443005 .
This commit is contained in:
parent
0381673d19
commit
62c49dc811
@ -1,6 +1,6 @@
|
||||
Name: libyuv
|
||||
URL: http://code.google.com/p/libyuv/
|
||||
Version: 1486
|
||||
Version: 1487
|
||||
License: BSD
|
||||
License File: LICENSE
|
||||
|
||||
|
||||
@ -456,6 +456,15 @@ struct YuvConstants {
|
||||
lvec16 kYToRgb;
|
||||
};
|
||||
|
||||
// Offsets into YuvConstants structure
|
||||
#define KUVTOB 0
|
||||
#define KUVTOG 32
|
||||
#define KUVTOR 64
|
||||
#define KUVBIASB 96
|
||||
#define KUVBIASG 128
|
||||
#define KUVBIASR 160
|
||||
#define KYTORGB 192
|
||||
|
||||
struct YuvConstantsNEON {
|
||||
uvec8 kUVToRB;
|
||||
uvec8 kUVToG;
|
||||
@ -463,6 +472,14 @@ struct YuvConstantsNEON {
|
||||
vec32 kYToRgb;
|
||||
};
|
||||
|
||||
extern struct YuvConstants kYuvConstants;
|
||||
extern struct YuvConstants kYvuConstants;
|
||||
extern struct YuvConstants kYuvJConstants;
|
||||
extern struct YuvConstants kYuvHConstants;
|
||||
extern struct YuvConstantsNEON kYuvConstantsNEON;
|
||||
extern struct YuvConstantsNEON kYuvJConstantsNEON;
|
||||
extern struct YuvConstantsNEON kYuvHConstantsNEON;
|
||||
|
||||
#if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__)
|
||||
#define OMITFP
|
||||
#else
|
||||
|
||||
@ -11,6 +11,6 @@
|
||||
#ifndef INCLUDE_LIBYUV_VERSION_H_ // NOLINT
|
||||
#define INCLUDE_LIBYUV_VERSION_H_
|
||||
|
||||
#define LIBYUV_VERSION 1486
|
||||
#define LIBYUV_VERSION 1487
|
||||
|
||||
#endif // INCLUDE_LIBYUV_VERSION_H_ NOLINT
|
||||
|
||||
@ -1000,7 +1000,6 @@ void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width) {
|
||||
// B = (Y - 16) * 1.164 - U * -2.018
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
|
||||
#define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
|
||||
|
||||
@ -1010,10 +1009,45 @@ void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width) {
|
||||
#define VG 52 /* round(0.813 * 64) */
|
||||
#define VR -102 /* round(-1.596 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V, with rounding.
|
||||
#define BB (UB * 128 + YGB)
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BB (UB * 128 + YGB)
|
||||
#define BG (UG * 128 + VG * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
|
||||
// BT601 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvConstants) = {
|
||||
{ UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0,
|
||||
UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 },
|
||||
{ UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG,
|
||||
UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG },
|
||||
{ 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR,
|
||||
0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
// BT601 constants for NV21 where chroma plane is VU instead of UV.
|
||||
YuvConstants SIMD_ALIGNED(kYvuConstants) = {
|
||||
{ 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB,
|
||||
0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB },
|
||||
{ VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG,
|
||||
VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG },
|
||||
{ VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0,
|
||||
VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvConstantsNEON) = {
|
||||
{ -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BB, BG, BR, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YG, 0, 0, 0 }
|
||||
};
|
||||
|
||||
// C reference code that mimics the YUV assembly.
|
||||
static __inline void YuvPixel(uint8 y, uint8 u, uint8 v,
|
||||
@ -1031,7 +1065,6 @@ static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) {
|
||||
*g = Clamp((int32)(y1 + YGB) >> 6);
|
||||
*r = Clamp((int32)(y1 + YGB) >> 6);
|
||||
}
|
||||
|
||||
#undef YG
|
||||
#undef YGB
|
||||
#undef UB
|
||||
@ -1048,7 +1081,6 @@ static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) {
|
||||
// * B = Y - U * -1.77200
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBJ 32 /* 64 / 2 */
|
||||
|
||||
@ -1058,10 +1090,38 @@ static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) {
|
||||
#define VGJ 46 /* round(0.71414 * 64) */
|
||||
#define VRJ -90 /* round(-1.40200 * 64) */
|
||||
|
||||
// Bias values to round Y and subtract 128 from U and V.
|
||||
#define BBJ (UBJ * 128 + YGBJ)
|
||||
// Bias values to round, and subtract 128 from U and V.
|
||||
#define BBJ (UBJ * 128 + YGBJ)
|
||||
#define BGJ (UGJ * 128 + VGJ * 128 + YGBJ)
|
||||
#define BRJ (VRJ * 128 + YGBJ)
|
||||
#define BRJ (VRJ * 128 + YGBJ)
|
||||
|
||||
// JPEG constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvJConstants) = {
|
||||
{ UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0,
|
||||
UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0 },
|
||||
{ UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ },
|
||||
{ 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ,
|
||||
0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ },
|
||||
{ BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ,
|
||||
BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ },
|
||||
{ BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ,
|
||||
BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ },
|
||||
{ BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ,
|
||||
BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ },
|
||||
{ YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ,
|
||||
YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ }
|
||||
};
|
||||
|
||||
// JPEG constants for YUV to RGB.
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvJConstantsNEON) = {
|
||||
{ -UBJ, -UBJ, -UBJ, -UBJ, -VRJ, -VRJ, -VRJ, -VRJ, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UGJ, UGJ, UGJ, UGJ, VGJ, VGJ, VGJ, VGJ, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BBJ, BGJ, BRJ, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YGJ, 0, 0, 0 }
|
||||
};
|
||||
|
||||
// C reference code that mimics the YUV assembly.
|
||||
static __inline void YuvJPixel(uint8 y, uint8 u, uint8 v,
|
||||
@ -1088,7 +1148,6 @@ static __inline void YuvJPixel(uint8 y, uint8 u, uint8 v,
|
||||
// * B = Y - U * -2.12798
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBH 32 /* 64 / 2 */
|
||||
|
||||
@ -1103,6 +1162,34 @@ static __inline void YuvJPixel(uint8 y, uint8 u, uint8 v,
|
||||
#define BGH (UGH * 128 + VGH * 128 + YGBH)
|
||||
#define BRH (VRH * 128 + YGBH)
|
||||
|
||||
// BT.709 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvHConstants) = {
|
||||
{ UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0,
|
||||
UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0 },
|
||||
{ UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH },
|
||||
{ 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH,
|
||||
0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH },
|
||||
{ BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH,
|
||||
BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH },
|
||||
{ BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH,
|
||||
BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH },
|
||||
{ BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH,
|
||||
BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH },
|
||||
{ YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH,
|
||||
YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH }
|
||||
};
|
||||
|
||||
// BT.709 constants for YUV to RGB.
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvHConstantsNEON) = {
|
||||
{ -UBH, -UBH, -UBH, -UBH, -VRH, -VRH, -VRH, -VRH, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UGH, UGH, UGH, UGH, VGH, VGH, VGH, VGH, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BBH, BGH, BRH, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YGH, 0, 0, 0 }
|
||||
};
|
||||
|
||||
// C reference code that mimics the YUV assembly.
|
||||
static __inline void YuvHPixel(uint8 y, uint8 u, uint8 v,
|
||||
uint8* b, uint8* g, uint8* r) {
|
||||
@ -2314,13 +2401,6 @@ void I422ToUYVYRow_C(const uint8* src_y,
|
||||
}
|
||||
}
|
||||
|
||||
extern struct YuvConstants kYuvConstants;
|
||||
extern struct YuvConstants kYuvJConstants;
|
||||
extern struct YuvConstants kYuvHConstants;
|
||||
extern struct YuvConstantsNEON kYuvConstantsNEON;
|
||||
extern struct YuvConstantsNEON kYuvJConstantsNEON;
|
||||
extern struct YuvConstantsNEON kYuvHConstantsNEON;
|
||||
|
||||
#define ANYYUV(NAMEANY, ANY_SIMD, YUVCONSTANTS) \
|
||||
void NAMEANY(const uint8* y_buf, \
|
||||
const uint8* u_buf, \
|
||||
|
||||
@ -1319,167 +1319,6 @@ void RGBAToUVRow_SSSE3(const uint8* src_rgba0, int src_stride_rgba,
|
||||
|
||||
#if defined(HAS_I422TOARGBROW_SSSE3) || defined(HAS_I422TOARGBROW_AVX2)
|
||||
|
||||
// BT.601 YUV to RGB reference
|
||||
// R = (Y - 16) * 1.164 - V * -1.596
|
||||
// G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813
|
||||
// B = (Y - 16) * 1.164 - U * -2.018
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
|
||||
#define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UB -128 /* max(-128, round(-2.018 * 64)) */
|
||||
#define UG 25 /* round(0.391 * 64) */
|
||||
#define VG 52 /* round(0.813 * 64) */
|
||||
#define VR -102 /* round(-1.596 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BB (UB * 128 + YGB)
|
||||
#define BG (UG * 128 + VG * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
|
||||
// BT601 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvConstants) = {
|
||||
{ UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0,
|
||||
UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 },
|
||||
{ UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG,
|
||||
UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG },
|
||||
{ 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR,
|
||||
0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
// BT601 constants for NV21 where chroma plane is VU instead of UV.
|
||||
YuvConstants SIMD_ALIGNED(kYvuConstants) = {
|
||||
{ 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB,
|
||||
0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB },
|
||||
{ VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG,
|
||||
VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG },
|
||||
{ VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0,
|
||||
VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
#undef YG
|
||||
#undef YGB
|
||||
#undef UB
|
||||
#undef UG
|
||||
#undef VG
|
||||
#undef VR
|
||||
#undef BB
|
||||
#undef BG
|
||||
#undef BR
|
||||
|
||||
// JPEG YUV to RGB reference
|
||||
// * R = Y - V * -1.40200
|
||||
// * G = Y - U * 0.34414 - V * 0.71414
|
||||
// * B = Y - U * -1.77200
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBJ 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBJ -113 /* round(-1.77200 * 64) */
|
||||
#define UGJ 22 /* round(0.34414 * 64) */
|
||||
#define VGJ 46 /* round(0.71414 * 64) */
|
||||
#define VRJ -90 /* round(-1.40200 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BBJ (UBJ * 128 + YGBJ)
|
||||
#define BGJ (UGJ * 128 + VGJ * 128 + YGBJ)
|
||||
#define BRJ (VRJ * 128 + YGBJ)
|
||||
|
||||
// JPEG constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvJConstants) = {
|
||||
{ UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0,
|
||||
UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0 },
|
||||
{ UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ },
|
||||
{ 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ,
|
||||
0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ },
|
||||
{ BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ,
|
||||
BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ },
|
||||
{ BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ,
|
||||
BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ },
|
||||
{ BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ,
|
||||
BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ },
|
||||
{ YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ,
|
||||
YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ }
|
||||
};
|
||||
|
||||
#undef YGJ
|
||||
#undef YGBJ
|
||||
#undef UBJ
|
||||
#undef UGJ
|
||||
#undef VGJ
|
||||
#undef VRJ
|
||||
#undef BBJ
|
||||
#undef BGJ
|
||||
#undef BRJ
|
||||
|
||||
// BT.709 YUV to RGB reference
|
||||
// * R = Y - V * -1.28033
|
||||
// * G = Y - U * 0.21482 - V * 0.38059
|
||||
// * B = Y - U * -2.12798
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBH 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBH -128 /* max(-128, round(-2.12798 * 64)) */
|
||||
#define UGH 14 /* round(0.21482 * 64) */
|
||||
#define VGH 24 /* round(0.38059 * 64) */
|
||||
#define VRH -82 /* round(-1.28033 * 64) */
|
||||
|
||||
// Bias values to round, and subtract 128 from U and V.
|
||||
#define BBH (UBH * 128 + YGBH)
|
||||
#define BGH (UGH * 128 + VGH * 128 + YGBH)
|
||||
#define BRH (VRH * 128 + YGBH)
|
||||
|
||||
// BT.709 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvHConstants) = {
|
||||
{ UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0,
|
||||
UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0 },
|
||||
{ UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH },
|
||||
{ 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH,
|
||||
0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH },
|
||||
{ BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH,
|
||||
BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH },
|
||||
{ BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH,
|
||||
BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH },
|
||||
{ BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH,
|
||||
BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH },
|
||||
{ YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH,
|
||||
YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH }
|
||||
};
|
||||
|
||||
#undef YGH
|
||||
#undef YGBH
|
||||
#undef UBH
|
||||
#undef UGH
|
||||
#undef VGH
|
||||
#undef VRH
|
||||
#undef BBH
|
||||
#undef BGH
|
||||
#undef BRH
|
||||
|
||||
// Read 8 UV from 411
|
||||
#define READYUV444 \
|
||||
"movq " MEMACCESS([u_buf]) ",%%xmm0 \n" \
|
||||
|
||||
@ -134,122 +134,6 @@ extern "C" {
|
||||
"vqshrun.s16 d22, q9, #6 \n" /* R */ \
|
||||
"vqshrun.s16 d21, q0, #6 \n" /* G */
|
||||
|
||||
// BT.601 YUV to RGB reference
|
||||
// R = (Y - 16) * 1.164 - V * -1.596
|
||||
// G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813
|
||||
// B = (Y - 16) * 1.164 - U * -2.018
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
|
||||
#define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UB -128 /* max(-128, round(-2.018 * 64)) */
|
||||
#define UG 25 /* round(0.391 * 64) */
|
||||
#define VG 52 /* round(0.813 * 64) */
|
||||
#define VR -102 /* round(-1.596 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BB (UB * 128 + YGB)
|
||||
#define BG (UG * 128 + VG * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvConstantsNEON) = {
|
||||
{ -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BB, BG, BR, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YG, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#undef YG
|
||||
#undef YGB
|
||||
#undef UB
|
||||
#undef UG
|
||||
#undef VG
|
||||
#undef VR
|
||||
#undef BB
|
||||
#undef BG
|
||||
#undef BR
|
||||
|
||||
// JPEG YUV to RGB reference
|
||||
// * R = Y - V * -1.40200
|
||||
// * G = Y - U * 0.34414 - V * 0.71414
|
||||
// * B = Y - U * -1.77200
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBJ 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBJ -113 /* round(-1.77200 * 64) */
|
||||
#define UGJ 22 /* round(0.34414 * 64) */
|
||||
#define VGJ 46 /* round(0.71414 * 64) */
|
||||
#define VRJ -90 /* round(-1.40200 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BBJ (UBJ * 128 + YGBJ)
|
||||
#define BGJ (UGJ * 128 + VGJ * 128 + YGBJ)
|
||||
#define BRJ (VRJ * 128 + YGBJ)
|
||||
|
||||
// JPEG constants for YUV to RGB.
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvJConstantsNEON) = {
|
||||
{ -UBJ, -UBJ, -UBJ, -UBJ, -VRJ, -VRJ, -VRJ, -VRJ, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UGJ, UGJ, UGJ, UGJ, VGJ, VGJ, VGJ, VGJ, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BBJ, BGJ, BRJ, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YGJ, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#undef YGJ
|
||||
#undef YGBJ
|
||||
#undef UBJ
|
||||
#undef UGJ
|
||||
#undef VGJ
|
||||
#undef VRJ
|
||||
#undef BBJ
|
||||
#undef BGJ
|
||||
#undef BRJ
|
||||
|
||||
// BT.709 YUV to RGB reference
|
||||
// * R = Y - V * -1.28033
|
||||
// * G = Y - U * 0.21482 - V * 0.38059
|
||||
// * B = Y - U * -2.12798
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBH 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBH -128 /* max(-128, round(-2.12798 * 64)) */
|
||||
#define UGH 14 /* round(0.21482 * 64) */
|
||||
#define VGH 24 /* round(0.38059 * 64) */
|
||||
#define VRH -82 /* round(-1.28033 * 64) */
|
||||
|
||||
// Bias values to round, and subtract 128 from U and V.
|
||||
#define BBH (UBH * 128 + YGBH)
|
||||
#define BGH (UGH * 128 + VGH * 128 + YGBH)
|
||||
#define BRH (VRH * 128 + YGBH)
|
||||
|
||||
// BT.709 constants for YUV to RGB.
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvHConstantsNEON) = {
|
||||
{ -UBH, -UBH, -UBH, -UBH, -VRH, -VRH, -VRH, -VRH, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UGH, UGH, UGH, UGH, VGH, VGH, VGH, VGH, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BBH, BGH, BRH, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YGH, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#undef YGH
|
||||
#undef YGBH
|
||||
#undef UBH
|
||||
#undef UGH
|
||||
#undef VGH
|
||||
#undef VRH
|
||||
#undef BBH
|
||||
#undef BGH
|
||||
#undef BRH
|
||||
|
||||
void I444ToARGBRow_NEON(const uint8* src_y,
|
||||
const uint8* src_u,
|
||||
const uint8* src_v,
|
||||
|
||||
@ -129,44 +129,6 @@ extern "C" {
|
||||
"sqshrun " #vG ".8b, " #vG ".8h, #6 \n" /* G */ \
|
||||
"sqshrun " #vR ".8b, " #vR ".8h, #6 \n" /* R */ \
|
||||
|
||||
// BT.601 YUV to RGB reference
|
||||
// R = (Y - 16) * 1.164 - V * -1.596
|
||||
// G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813
|
||||
// B = (Y - 16) * 1.164 - U * -2.018
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
|
||||
#define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UB -128 /* max(-128, round(-2.018 * 64)) */
|
||||
#define UG 25 /* round(0.391 * 64) */
|
||||
#define VG 52 /* round(0.813 * 64) */
|
||||
#define VR -102 /* round(-1.596 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BB (UB * 128 + YGB)
|
||||
#define BG (UG * 128 + VG * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
|
||||
YuvConstantsNEON SIMD_ALIGNED(kYuvConstantsNEON) = {
|
||||
{ -UB, -UB, -UB, -UB, -VR, -VR, -VR, -VR, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ UG, UG, UG, UG, VG, VG, VG, VG, 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ BB, BG, BR, 0, 0, 0, 0, 0 },
|
||||
{ 0x0101 * YG, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#undef YG
|
||||
#undef YGB
|
||||
#undef UB
|
||||
#undef UG
|
||||
#undef VG
|
||||
#undef VR
|
||||
#undef BB
|
||||
#undef BG
|
||||
#undef BR
|
||||
|
||||
// TODO(fbarchard): Use structure for constants like 32 bit code.
|
||||
#define RGBTOUV_SETUP_REG \
|
||||
"movi v20.8h, #56, lsl #0 \n" /* UB/VR coefficient (0.875) / 2 */ \
|
||||
|
||||
@ -25,175 +25,6 @@ extern "C" {
|
||||
#if !defined(LIBYUV_DISABLE_X86) && \
|
||||
(defined(_M_IX86) || (defined(_M_X64) && !defined(__clang__)))
|
||||
|
||||
#define KUVTOB 0
|
||||
#define KUVTOG 32
|
||||
#define KUVTOR 64
|
||||
#define KUVBIASB 96
|
||||
#define KUVBIASG 128
|
||||
#define KUVBIASR 160
|
||||
#define KYTORGB 192
|
||||
|
||||
// BT.601 YUV to RGB reference
|
||||
// R = (Y - 16) * 1.164 - V * -1.596
|
||||
// G = (Y - 16) * 1.164 - U * 0.391 - V * 0.813
|
||||
// B = (Y - 16) * 1.164 - U * -2.018
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YG 18997 /* round(1.164 * 64 * 256 * 256 / 257) */
|
||||
#define YGB -1160 /* 1.164 * 64 * -16 + 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UB -128 /* max(-128, round(-2.018 * 64)) */
|
||||
#define UG 25 /* round(0.391 * 64) */
|
||||
#define VG 52 /* round(0.813 * 64) */
|
||||
#define VR -102 /* round(-1.596 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BB (UB * 128 + YGB)
|
||||
#define BG (UG * 128 + VG * 128 + YGB)
|
||||
#define BR (VR * 128 + YGB)
|
||||
|
||||
// BT601 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvConstants) = {
|
||||
{ UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0,
|
||||
UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0 },
|
||||
{ UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG,
|
||||
UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG },
|
||||
{ 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR,
|
||||
0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
// BT601 constants for NV21 where chroma plane is VU instead of UV.
|
||||
YuvConstants SIMD_ALIGNED(kYvuConstants) = {
|
||||
{ 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB,
|
||||
0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB, 0, UB },
|
||||
{ VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG,
|
||||
VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG, VG, UG },
|
||||
{ VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0,
|
||||
VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0, VR, 0 },
|
||||
{ BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB, BB },
|
||||
{ BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG, BG },
|
||||
{ BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR, BR },
|
||||
{ YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG, YG }
|
||||
};
|
||||
|
||||
#undef YG
|
||||
#undef YGB
|
||||
#undef UB
|
||||
#undef UG
|
||||
#undef VG
|
||||
#undef VR
|
||||
#undef BB
|
||||
#undef BG
|
||||
#undef BR
|
||||
|
||||
// JPEG YUV to RGB reference
|
||||
// * R = Y - V * -1.40200
|
||||
// * G = Y - U * 0.34414 - V * 0.71414
|
||||
// * B = Y - U * -1.77200
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGJ 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBJ 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBJ -113 /* round(-1.77200 * 64) */
|
||||
#define UGJ 22 /* round(0.34414 * 64) */
|
||||
#define VGJ 46 /* round(0.71414 * 64) */
|
||||
#define VRJ -90 /* round(-1.40200 * 64) */
|
||||
|
||||
// Bias values to subtract 16 from Y and 128 from U and V.
|
||||
#define BBJ (UBJ * 128 + YGBJ)
|
||||
#define BGJ (UGJ * 128 + VGJ * 128 + YGBJ)
|
||||
#define BRJ (VRJ * 128 + YGBJ)
|
||||
|
||||
// JPEG constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvJConstants) = {
|
||||
{ UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0,
|
||||
UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0, UBJ, 0 },
|
||||
{ UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ,
|
||||
UGJ, VGJ, UGJ, VGJ, UGJ, VGJ, UGJ, VGJ },
|
||||
{ 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ,
|
||||
0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ, 0, VRJ },
|
||||
{ BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ,
|
||||
BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ, BBJ },
|
||||
{ BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ,
|
||||
BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ, BGJ },
|
||||
{ BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ,
|
||||
BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ, BRJ },
|
||||
{ YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ,
|
||||
YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ, YGJ }
|
||||
};
|
||||
|
||||
#undef YGJ
|
||||
#undef YGBJ
|
||||
#undef UBJ
|
||||
#undef UGJ
|
||||
#undef VGJ
|
||||
#undef VRJ
|
||||
#undef BBJ
|
||||
#undef BGJ
|
||||
#undef BRJ
|
||||
|
||||
// BT.709 YUV to RGB reference
|
||||
// * R = Y - V * -1.28033
|
||||
// * G = Y - U * 0.21482 - V * 0.38059
|
||||
// * B = Y - U * -2.12798
|
||||
|
||||
// Y contribution to R,G,B. Scale and bias.
|
||||
// TODO(fbarchard): Consider moving constants into a common header.
|
||||
#define YGH 16320 /* round(1.000 * 64 * 256 * 256 / 257) */
|
||||
#define YGBH 32 /* 64 / 2 */
|
||||
|
||||
// U and V contributions to R,G,B.
|
||||
#define UBH -128 /* max(-128, round(-2.12798 * 64)) */
|
||||
#define UGH 14 /* round(0.21482 * 64) */
|
||||
#define VGH 24 /* round(0.38059 * 64) */
|
||||
#define VRH -82 /* round(-1.28033 * 64) */
|
||||
|
||||
// Bias values to round, and subtract 128 from U and V.
|
||||
#define BBH (UBH * 128 + YGBH)
|
||||
#define BGH (UGH * 128 + VGH * 128 + YGBH)
|
||||
#define BRH (VRH * 128 + YGBH)
|
||||
|
||||
// BT.709 constants for YUV to RGB.
|
||||
YuvConstants SIMD_ALIGNED(kYuvHConstants) = {
|
||||
{ UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0,
|
||||
UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0, UBH, 0 },
|
||||
{ UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH,
|
||||
UGH, VGH, UGH, VGH, UGH, VGH, UGH, VGH },
|
||||
{ 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH,
|
||||
0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH, 0, VRH },
|
||||
{ BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH,
|
||||
BBH, BBH, BBH, BBH, BBH, BBH, BBH, BBH },
|
||||
{ BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH,
|
||||
BGH, BGH, BGH, BGH, BGH, BGH, BGH, BGH },
|
||||
{ BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH,
|
||||
BRH, BRH, BRH, BRH, BRH, BRH, BRH, BRH },
|
||||
{ YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH,
|
||||
YGH, YGH, YGH, YGH, YGH, YGH, YGH, YGH }
|
||||
};
|
||||
|
||||
#undef YGH
|
||||
#undef YGBH
|
||||
#undef UBH
|
||||
#undef UGH
|
||||
#undef VGH
|
||||
#undef VRH
|
||||
#undef BBH
|
||||
#undef BGH
|
||||
#undef BRH
|
||||
|
||||
// 64 bit
|
||||
#if defined(_M_X64)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user