| Index: source/row_neon.cc
|
| diff --git a/source/row_neon.cc b/source/row_neon.cc
|
| index fc243d9170800d40a44ec5365f69aa585fad5cad..a384eb6551134424c34105be58b26b960d38e1b1 100644
|
| --- a/source/row_neon.cc
|
| +++ b/source/row_neon.cc
|
| @@ -211,6 +211,44 @@ YuvConstantsNEON SIMD_ALIGNED(kYuvJConstantsNEON) = {
|
| #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,
|
|
|