Skip to content

Commit 99e928f

Browse files
committed
xx
1 parent 703c0fa commit 99e928f

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

libfreerdp/primitives/sse/prim_YUV_sse4.1.c

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,33 @@ static inline __m128i sse41_yuv2b(const __m128i Y[2], __m128i U, __m128i V)
294294
return sse41_yuv2x(Y, U, V, 475, 0);
295295
}
296296

297+
static inline void print_single(const char* prefix, const uint8_t* array, size_t len) {
298+
printf("%s={", prefix);
299+
for (size_t x=0;x<len;x++) {
300+
printf("0x%02" PRIx8 ", ", array[x]);
301+
}
302+
printf("}\n");
303+
}
304+
static inline void print_values(
305+
const uint8_t* y,
306+
const uint8_t* u,
307+
const uint8_t* v
308+
)
309+
{
310+
print_single("Y", y, 16);
311+
print_single("U", u, 16);
312+
print_single("V", v, 16);
313+
fflush(stdout);
314+
}
315+
297316
static inline void sse41_BGRX_fillRGB_pixel(BYTE* WINPR_RESTRICT pRGB, __m128i Y, __m128i U,
298317
__m128i V)
299318
{
319+
//print_values(&Y, &U, &V);
320+
Y = mm_set_epu8(0x31, 0x8f, 0x29, 0x00, 0x50, 0x59, 0x6a, 0xa2, 0xe7, 0x46, 0x64, 0x73, 0x85, 0x8c, 0x07, 0x30);
321+
U = mm_set_epu8(0x73, 0x3c, 0xd0, 0x45, 0x2e, 0xff, 0x29, 0xcb, 0x22, 0xe7, 0x88, 0x04, 0x94, 0x81, 0xeb, 0xe1);
322+
V = mm_set_epu8(0x15, 0x0d, 0xb6, 0x95, 0x8e, 0xb9, 0xb7, 0x7c, 0xb2, 0xfd, 0xef, 0x54, 0xd2, 0x22, 0xe2, 0xaa);
323+
300324
const __m128i zero = _mm_set1_epi8(0);
301325
/* Y * 256 */
302326
const __m128i yY[] = { _mm_unpackhi_epi8(zero, Y), _mm_unpacklo_epi8(zero, Y) };
@@ -319,6 +343,29 @@ static inline void sse41_BGRX_fillRGB_pixel(BYTE* WINPR_RESTRICT pRGB, __m128i Y
319343
_mm_maskmoveu_si128(bgrx2, mask, (char*)&rgb[2]);
320344
const __m128i bgrx3 = _mm_unpacklo_epi16(bg[1], rx[1]);
321345
_mm_maskmoveu_si128(bgrx3, mask, (char*)&rgb[3]);
346+
347+
uint8_t cmprgb[16*4] = { 0};
348+
const char* py = &Y;
349+
const char* pu = &U;
350+
const char* pv = &V;
351+
for (size_t x=0; x<16; x++) {
352+
uint8_t y = py[x];
353+
uint8_t u = pu[x];
354+
uint8_t v = pv[x];
355+
uint8_t r = YUV2R(y, u, v);
356+
uint8_t g = YUV2G(y, u, v);
357+
uint8_t b = YUV2B(y, u, v);
358+
359+
cmprgb[4*x + 0] = b;
360+
cmprgb[4*x + 1] = g;
361+
cmprgb[4*x + 2] = r;
362+
}
363+
364+
if (memcmp(cmprgb, pRGB, sizeof(cmprgb)) != 0) {
365+
WLog_WARN("ccc", "xxxx:");
366+
print_single("cmp", cmprgb, sizeof(cmprgb));
367+
print_single("rgb", pRGB, sizeof(cmprgb));
368+
}
322369
}
323370

324371
static void sse41_BGRX_fillRGB(BYTE* WINPR_RESTRICT pRGB[2], const __m128i pY[2],

0 commit comments

Comments
 (0)