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

Unified Diff: source/row_common.cc

Issue 1384323002: Pass yuvconstants to YUV conversions for neon 64 bit (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: bump version Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/libyuv/version.h ('k') | source/row_neon64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: source/row_common.cc
diff --git a/source/row_common.cc b/source/row_common.cc
index 0b236e72ea5813abfea22a6475afaba0d9f97312..24cd5c3a9b59614524f300166c1e031452c87d3d 100644
--- a/source/row_common.cc
+++ b/source/row_common.cc
@@ -1014,21 +1014,21 @@ void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width) {
#define BG (UG * 128 + VG * 128 + YGB)
#define BR (VR * 128 + YGB)
-#if defined(__arm__) || defined(__aarch64__)
+#if defined(__aarch64__)
YuvConstants SIMD_ALIGNED(kYuvConstants) = {
- { -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 },
+ { -UB, 0, -UB, 0, -UB, 0, -UB, 0, -VR, 0, -VR, 0, -VR, 0, -VR, 0 },
+ { UG, 0, UG, 0, UG, 0, UG, 0, VG, 0, VG, 0, VG, 0, VG, 0 },
{ BB, BG, BR, 0, 0, 0, 0, 0 },
{ 0x0101 * YG, 0, 0, 0 }
-};
+ };
-YuvConstants SIMD_ALIGNED(kYvuConstants) = {
- { -VR, -VR, -VR, -VR, -UB, -UB, -UB, -UB, 0, 0, 0, 0, 0, 0, 0, 0 },
- { VG, VG, VG, VG, UG, UG, UG, UG, 0, 0, 0, 0, 0, 0, 0, 0 },
+#elif defined(__arm__)
+YuvConstants SIMD_ALIGNED(kYuvConstants) = {
+ { -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 }
};
-
#else
// BT601 constants for YUV to RGB.
YuvConstants SIMD_ALIGNED(kYuvConstants) = {
@@ -1081,13 +1081,19 @@ static __inline void YPixel(uint8 y, uint8* b, uint8* g, uint8* r) {
static __inline void YuvPixel(uint8 y, uint8 u, uint8 v,
uint8* b, uint8* g, uint8* r,
struct YuvConstants* yuvconstants) {
-#if defined(__arm__) || defined(__aarch64__)
-
+#if defined(__aarch64__)
+ int UB = -yuvconstants->kUVToRB[0];
+ int UG = yuvconstants->kUVToG[0];
+ int VG = yuvconstants->kUVToG[8];
+ int VR = -yuvconstants->kUVToRB[8];
+ int BB = yuvconstants->kUVBiasBGR[0];
+ int BG = yuvconstants->kUVBiasBGR[1];
+ int BR = yuvconstants->kUVBiasBGR[2];
+ int YG = yuvconstants->kYToRgb[0];
+#elif defined(__arm__)
int UB = -yuvconstants->kUVToRB[0];
- int VB = 0;
int UG = yuvconstants->kUVToG[0];
int VG = yuvconstants->kUVToG[4];
- int UR = 0;
int VR = -yuvconstants->kUVToRB[4];
int BB = yuvconstants->kUVBiasBGR[0];
int BG = yuvconstants->kUVBiasBGR[1];
@@ -1095,10 +1101,8 @@ static __inline void YuvPixel(uint8 y, uint8 u, uint8 v,
int YG = yuvconstants->kYToRgb[0];
#else
int UB = yuvconstants->kUVToB[0];
- int VB = yuvconstants->kUVToB[1]; // usually 0
int UG = yuvconstants->kUVToG[0];
int VG = yuvconstants->kUVToG[1];
- int UR = yuvconstants->kUVToR[0]; // usually 0
int VR = yuvconstants->kUVToR[1];
int BB = yuvconstants->kUVBiasB[0];
int BG = yuvconstants->kUVBiasG[0];
@@ -1106,9 +1110,9 @@ static __inline void YuvPixel(uint8 y, uint8 u, uint8 v,
int YG = yuvconstants->kYToRgb[0];
#endif
uint32 y1 = (uint32)(y * 0x0101 * YG) >> 16;
- *b = Clamp((int32)(-(u * UB + v * VB) + y1 + BB) >> 6);
+ *b = Clamp((int32)(-(u * UB ) + y1 + BB) >> 6);
*g = Clamp((int32)(-(u * UG + v * VG) + y1 + BG) >> 6);
- *r = Clamp((int32)(-(u * UR + v * VR) + y1 + BR) >> 6);
+ *r = Clamp((int32)(-( v * VR) + y1 + BR) >> 6);
}
// JPEG YUV to RGB reference
« no previous file with comments | « include/libyuv/version.h ('k') | source/row_neon64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698