| Index: source/row_gcc.cc
|
| diff --git a/source/row_gcc.cc b/source/row_gcc.cc
|
| index 52046645ebc2f24234759e159b777e0787e01a70..94975032179279d0de90f587c7b533ee19202626 100644
|
| --- a/source/row_gcc.cc
|
| +++ b/source/row_gcc.cc
|
| @@ -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" \
|
|
|