2 /* autogenerated from blendorc.orc */
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
85 void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n);
86 void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
87 const guint32 * ORC_RESTRICT s1, int n);
88 void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
89 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
90 void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
91 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
92 void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
93 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
94 void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
95 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
96 void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
97 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
100 /* begin Orc C target preamble */
101 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
102 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
103 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
104 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
105 #define ORC_SB_MAX 127
106 #define ORC_SB_MIN (-1-ORC_SB_MAX)
107 #define ORC_UB_MAX 255
109 #define ORC_SW_MAX 32767
110 #define ORC_SW_MIN (-1-ORC_SW_MAX)
111 #define ORC_UW_MAX 65535
113 #define ORC_SL_MAX 2147483647
114 #define ORC_SL_MIN (-1-ORC_SL_MAX)
115 #define ORC_UL_MAX 4294967295U
117 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
118 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
119 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
120 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
121 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
122 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
123 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
124 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
125 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
126 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
127 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
128 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
129 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
130 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
132 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
133 #define ORC_RESTRICT restrict
134 #elif defined(__GNUC__) && __GNUC__ >= 4
135 #define ORC_RESTRICT __restrict__
140 /* end Orc C target preamble */
144 /* video_mixer_orc_splat_u32 */
147 video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
150 orc_union32 *ORC_RESTRICT ptr0;
154 ptr0 = (orc_union32 *) d1;
159 for (i = 0; i < n; i++) {
170 _backup_video_mixer_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
174 orc_union32 *ORC_RESTRICT ptr0;
178 ptr0 = (orc_union32 *) ex->arrays[0];
181 var32.i = ex->params[24];
183 for (i = 0; i < n; i++) {
193 video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
195 OrcExecutor _ex, *ex = &_ex;
196 static volatile int p_inited = 0;
197 static OrcCode *c = 0;
198 void (*func) (OrcExecutor *);
201 orc_once_mutex_lock ();
205 p = orc_program_new ();
206 orc_program_set_name (p, "video_mixer_orc_splat_u32");
207 orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32);
208 orc_program_add_destination (p, 4, "d1");
209 orc_program_add_parameter (p, 4, "p1");
211 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
214 orc_program_compile (p);
215 c = orc_program_take_code (p);
216 orc_program_free (p);
219 orc_once_mutex_unlock ();
221 ex->arrays[ORC_VAR_A2] = c;
225 ex->arrays[ORC_VAR_D1] = d1;
226 ex->params[ORC_VAR_P1] = p1;
234 /* video_mixer_orc_memcpy_u32 */
237 video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
238 const guint32 * ORC_RESTRICT s1, int n)
241 orc_union32 *ORC_RESTRICT ptr0;
242 const orc_union32 *ORC_RESTRICT ptr4;
246 ptr0 = (orc_union32 *) d1;
247 ptr4 = (orc_union32 *) s1;
250 for (i = 0; i < n; i++) {
263 _backup_video_mixer_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex)
267 orc_union32 *ORC_RESTRICT ptr0;
268 const orc_union32 *ORC_RESTRICT ptr4;
272 ptr0 = (orc_union32 *) ex->arrays[0];
273 ptr4 = (orc_union32 *) ex->arrays[4];
276 for (i = 0; i < n; i++) {
288 video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
289 const guint32 * ORC_RESTRICT s1, int n)
291 OrcExecutor _ex, *ex = &_ex;
292 static volatile int p_inited = 0;
293 static OrcCode *c = 0;
294 void (*func) (OrcExecutor *);
297 orc_once_mutex_lock ();
301 p = orc_program_new ();
302 orc_program_set_name (p, "video_mixer_orc_memcpy_u32");
303 orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32);
304 orc_program_add_destination (p, 4, "d1");
305 orc_program_add_source (p, 4, "s1");
307 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
310 orc_program_compile (p);
311 c = orc_program_take_code (p);
312 orc_program_free (p);
315 orc_once_mutex_unlock ();
317 ex->arrays[ORC_VAR_A2] = c;
321 ex->arrays[ORC_VAR_D1] = d1;
322 ex->arrays[ORC_VAR_S1] = (void *) s1;
330 /* video_mixer_orc_blend_u8 */
333 video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
334 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
338 orc_int8 *ORC_RESTRICT ptr0;
339 const orc_int8 *ORC_RESTRICT ptr4;
352 for (j = 0; j < m; j++) {
353 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
354 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
359 for (i = 0; i < n; i++) {
363 var38.i = (orc_uint8) var34;
367 var39.i = (orc_uint8) var35;
369 var40.i = var39.i - var38.i;
371 var41.i = (var40.i * var36.i) & 0xffff;
373 var42.i = var38.i << 8;
375 var43.i = var42.i + var41.i;
377 var44.i = ((orc_uint16) var43.i) >> 8;
379 var37 = ORC_CLAMP_UB (var44.i);
389 _backup_video_mixer_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex)
394 int m = ex->params[ORC_VAR_A1];
395 orc_int8 *ORC_RESTRICT ptr0;
396 const orc_int8 *ORC_RESTRICT ptr4;
409 for (j = 0; j < m; j++) {
410 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
411 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
414 var36.i = ex->params[24];
416 for (i = 0; i < n; i++) {
420 var38.i = (orc_uint8) var34;
424 var39.i = (orc_uint8) var35;
426 var40.i = var39.i - var38.i;
428 var41.i = (var40.i * var36.i) & 0xffff;
430 var42.i = var38.i << 8;
432 var43.i = var42.i + var41.i;
434 var44.i = ((orc_uint16) var43.i) >> 8;
436 var37 = ORC_CLAMP_UB (var44.i);
445 video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
446 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
448 OrcExecutor _ex, *ex = &_ex;
449 static volatile int p_inited = 0;
450 static OrcCode *c = 0;
451 void (*func) (OrcExecutor *);
454 orc_once_mutex_lock ();
458 p = orc_program_new ();
459 orc_program_set_2d (p);
460 orc_program_set_name (p, "video_mixer_orc_blend_u8");
461 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8);
462 orc_program_add_destination (p, 1, "d1");
463 orc_program_add_source (p, 1, "s1");
464 orc_program_add_constant (p, 1, 0x00000008, "c1");
465 orc_program_add_parameter (p, 2, "p1");
466 orc_program_add_temporary (p, 2, "t1");
467 orc_program_add_temporary (p, 2, "t2");
469 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
471 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
473 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
475 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
477 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
479 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2,
481 orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
483 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
484 ORC_VAR_D1, ORC_VAR_D1);
486 orc_program_compile (p);
487 c = orc_program_take_code (p);
488 orc_program_free (p);
491 orc_once_mutex_unlock ();
493 ex->arrays[ORC_VAR_A2] = c;
497 ORC_EXECUTOR_M (ex) = m;
498 ex->arrays[ORC_VAR_D1] = d1;
499 ex->params[ORC_VAR_D1] = d1_stride;
500 ex->arrays[ORC_VAR_S1] = (void *) s1;
501 ex->params[ORC_VAR_S1] = s1_stride;
502 ex->params[ORC_VAR_P1] = p1;
510 /* video_mixer_orc_blend_argb */
513 video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
514 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
518 orc_union32 *ORC_RESTRICT ptr0;
519 const orc_union32 *ORC_RESTRICT ptr4;
539 for (j = 0; j < m; j++) {
540 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
541 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
549 var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
551 for (i = 0; i < n; i++) {
560 ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) <<
563 var45.x4[0] = (orc_uint8) var44.x4[0];
564 var45.x4[1] = (orc_uint8) var44.x4[1];
565 var45.x4[2] = (orc_uint8) var44.x4[2];
566 var45.x4[3] = (orc_uint8) var44.x4[3];
568 var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff;
569 var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff;
570 var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff;
571 var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff;
573 var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
574 var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
575 var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
576 var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
578 var48.x4[0] = (orc_uint8) var41.x4[0];
579 var48.x4[1] = (orc_uint8) var41.x4[1];
580 var48.x4[2] = (orc_uint8) var41.x4[2];
581 var48.x4[3] = (orc_uint8) var41.x4[3];
585 var50.x4[0] = (orc_uint8) var49.x4[0];
586 var50.x4[1] = (orc_uint8) var49.x4[1];
587 var50.x4[2] = (orc_uint8) var49.x4[2];
588 var50.x4[3] = (orc_uint8) var49.x4[3];
590 var51.x4[0] = var48.x4[0] - var50.x4[0];
591 var51.x4[1] = var48.x4[1] - var50.x4[1];
592 var51.x4[2] = var48.x4[2] - var50.x4[2];
593 var51.x4[3] = var48.x4[3] - var50.x4[3];
595 var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
596 var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
597 var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
598 var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
601 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
602 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
604 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
605 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
607 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
608 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
610 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
611 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
613 var54.x4[0] = var50.x4[0] + var53.x4[0];
614 var54.x4[1] = var50.x4[1] + var53.x4[1];
615 var54.x4[2] = var50.x4[2] + var53.x4[2];
616 var54.x4[3] = var50.x4[3] + var53.x4[3];
618 var55.x4[0] = var54.x4[0];
619 var55.x4[1] = var54.x4[1];
620 var55.x4[2] = var54.x4[2];
621 var55.x4[3] = var54.x4[3];
623 var56.i = var55.i | var40.i;
633 _backup_video_mixer_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex)
638 int m = ex->params[ORC_VAR_A1];
639 orc_union32 *ORC_RESTRICT ptr0;
640 const orc_union32 *ORC_RESTRICT ptr4;
660 for (j = 0; j < m; j++) {
661 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
662 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
665 var39.x4[0] = ex->params[24];
666 var39.x4[1] = ex->params[24];
667 var39.x4[2] = ex->params[24];
668 var39.x4[3] = ex->params[24];
670 var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
672 for (i = 0; i < n; i++) {
681 ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) <<
684 var45.x4[0] = (orc_uint8) var44.x4[0];
685 var45.x4[1] = (orc_uint8) var44.x4[1];
686 var45.x4[2] = (orc_uint8) var44.x4[2];
687 var45.x4[3] = (orc_uint8) var44.x4[3];
689 var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff;
690 var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff;
691 var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff;
692 var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff;
694 var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
695 var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
696 var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
697 var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
699 var48.x4[0] = (orc_uint8) var41.x4[0];
700 var48.x4[1] = (orc_uint8) var41.x4[1];
701 var48.x4[2] = (orc_uint8) var41.x4[2];
702 var48.x4[3] = (orc_uint8) var41.x4[3];
706 var50.x4[0] = (orc_uint8) var49.x4[0];
707 var50.x4[1] = (orc_uint8) var49.x4[1];
708 var50.x4[2] = (orc_uint8) var49.x4[2];
709 var50.x4[3] = (orc_uint8) var49.x4[3];
711 var51.x4[0] = var48.x4[0] - var50.x4[0];
712 var51.x4[1] = var48.x4[1] - var50.x4[1];
713 var51.x4[2] = var48.x4[2] - var50.x4[2];
714 var51.x4[3] = var48.x4[3] - var50.x4[3];
716 var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
717 var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
718 var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
719 var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
722 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
723 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
725 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
726 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
728 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
729 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
731 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
732 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
734 var54.x4[0] = var50.x4[0] + var53.x4[0];
735 var54.x4[1] = var50.x4[1] + var53.x4[1];
736 var54.x4[2] = var50.x4[2] + var53.x4[2];
737 var54.x4[3] = var50.x4[3] + var53.x4[3];
739 var55.x4[0] = var54.x4[0];
740 var55.x4[1] = var54.x4[1];
741 var55.x4[2] = var54.x4[2];
742 var55.x4[3] = var54.x4[3];
744 var56.i = var55.i | var40.i;
753 video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
754 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
756 OrcExecutor _ex, *ex = &_ex;
757 static volatile int p_inited = 0;
758 static OrcCode *c = 0;
759 void (*func) (OrcExecutor *);
762 orc_once_mutex_lock ();
766 p = orc_program_new ();
767 orc_program_set_2d (p);
768 orc_program_set_name (p, "video_mixer_orc_blend_argb");
769 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb);
770 orc_program_add_destination (p, 4, "d1");
771 orc_program_add_source (p, 4, "s1");
772 orc_program_add_constant (p, 4, 0x000000ff, "c1");
773 orc_program_add_constant (p, 4, 0x00000008, "c2");
774 orc_program_add_parameter (p, 2, "p1");
775 orc_program_add_temporary (p, 4, "t1");
776 orc_program_add_temporary (p, 2, "t2");
777 orc_program_add_temporary (p, 1, "t3");
778 orc_program_add_temporary (p, 4, "t4");
779 orc_program_add_temporary (p, 8, "t5");
780 orc_program_add_temporary (p, 8, "t6");
781 orc_program_add_temporary (p, 8, "t7");
783 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
785 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
787 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
789 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
791 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
793 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1,
795 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
797 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
799 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
801 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
803 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
805 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
807 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
809 orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
811 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
813 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
815 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
818 orc_program_compile (p);
819 c = orc_program_take_code (p);
820 orc_program_free (p);
823 orc_once_mutex_unlock ();
825 ex->arrays[ORC_VAR_A2] = c;
829 ORC_EXECUTOR_M (ex) = m;
830 ex->arrays[ORC_VAR_D1] = d1;
831 ex->params[ORC_VAR_D1] = d1_stride;
832 ex->arrays[ORC_VAR_S1] = (void *) s1;
833 ex->params[ORC_VAR_S1] = s1_stride;
834 ex->params[ORC_VAR_P1] = p1;
842 /* video_mixer_orc_blend_bgra */
845 video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
846 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
850 orc_union32 *ORC_RESTRICT ptr0;
851 const orc_union32 *ORC_RESTRICT ptr4;
872 for (j = 0; j < m; j++) {
873 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
874 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
882 var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
884 for (i = 0; i < n; i++) {
888 var43.i = ((orc_uint32) var42.i) >> 24;
895 ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) <<
898 var47.x4[0] = (orc_uint8) var46.x4[0];
899 var47.x4[1] = (orc_uint8) var46.x4[1];
900 var47.x4[2] = (orc_uint8) var46.x4[2];
901 var47.x4[3] = (orc_uint8) var46.x4[3];
903 var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff;
904 var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff;
905 var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff;
906 var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff;
908 var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8;
909 var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8;
910 var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8;
911 var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8;
913 var50.x4[0] = (orc_uint8) var42.x4[0];
914 var50.x4[1] = (orc_uint8) var42.x4[1];
915 var50.x4[2] = (orc_uint8) var42.x4[2];
916 var50.x4[3] = (orc_uint8) var42.x4[3];
920 var52.x4[0] = (orc_uint8) var51.x4[0];
921 var52.x4[1] = (orc_uint8) var51.x4[1];
922 var52.x4[2] = (orc_uint8) var51.x4[2];
923 var52.x4[3] = (orc_uint8) var51.x4[3];
925 var53.x4[0] = var50.x4[0] - var52.x4[0];
926 var53.x4[1] = var50.x4[1] - var52.x4[1];
927 var53.x4[2] = var50.x4[2] - var52.x4[2];
928 var53.x4[3] = var50.x4[3] - var52.x4[3];
930 var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff;
931 var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff;
932 var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff;
933 var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff;
936 ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) +
937 (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8;
939 ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) +
940 (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8;
942 ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) +
943 (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8;
945 ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) +
946 (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8;
948 var56.x4[0] = var52.x4[0] + var55.x4[0];
949 var56.x4[1] = var52.x4[1] + var55.x4[1];
950 var56.x4[2] = var52.x4[2] + var55.x4[2];
951 var56.x4[3] = var52.x4[3] + var55.x4[3];
953 var57.x4[0] = var56.x4[0];
954 var57.x4[1] = var56.x4[1];
955 var57.x4[2] = var56.x4[2];
956 var57.x4[3] = var56.x4[3];
958 var58.i = var57.i | var41.i;
968 _backup_video_mixer_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex)
973 int m = ex->params[ORC_VAR_A1];
974 orc_union32 *ORC_RESTRICT ptr0;
975 const orc_union32 *ORC_RESTRICT ptr4;
996 for (j = 0; j < m; j++) {
997 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
998 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1001 var40.x4[0] = ex->params[24];
1002 var40.x4[1] = ex->params[24];
1003 var40.x4[2] = ex->params[24];
1004 var40.x4[3] = ex->params[24];
1006 var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
1008 for (i = 0; i < n; i++) {
1012 var43.i = ((orc_uint32) var42.i) >> 24;
1019 ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) <<
1020 8) | (var45 & 0xff);
1022 var47.x4[0] = (orc_uint8) var46.x4[0];
1023 var47.x4[1] = (orc_uint8) var46.x4[1];
1024 var47.x4[2] = (orc_uint8) var46.x4[2];
1025 var47.x4[3] = (orc_uint8) var46.x4[3];
1027 var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff;
1028 var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff;
1029 var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff;
1030 var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff;
1032 var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8;
1033 var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8;
1034 var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8;
1035 var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8;
1037 var50.x4[0] = (orc_uint8) var42.x4[0];
1038 var50.x4[1] = (orc_uint8) var42.x4[1];
1039 var50.x4[2] = (orc_uint8) var42.x4[2];
1040 var50.x4[3] = (orc_uint8) var42.x4[3];
1044 var52.x4[0] = (orc_uint8) var51.x4[0];
1045 var52.x4[1] = (orc_uint8) var51.x4[1];
1046 var52.x4[2] = (orc_uint8) var51.x4[2];
1047 var52.x4[3] = (orc_uint8) var51.x4[3];
1049 var53.x4[0] = var50.x4[0] - var52.x4[0];
1050 var53.x4[1] = var50.x4[1] - var52.x4[1];
1051 var53.x4[2] = var50.x4[2] - var52.x4[2];
1052 var53.x4[3] = var50.x4[3] - var52.x4[3];
1054 var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff;
1055 var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff;
1056 var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff;
1057 var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff;
1060 ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) +
1061 (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8;
1063 ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) +
1064 (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8;
1066 ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) +
1067 (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8;
1069 ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) +
1070 (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8;
1072 var56.x4[0] = var52.x4[0] + var55.x4[0];
1073 var56.x4[1] = var52.x4[1] + var55.x4[1];
1074 var56.x4[2] = var52.x4[2] + var55.x4[2];
1075 var56.x4[3] = var52.x4[3] + var55.x4[3];
1077 var57.x4[0] = var56.x4[0];
1078 var57.x4[1] = var56.x4[1];
1079 var57.x4[2] = var56.x4[2];
1080 var57.x4[3] = var56.x4[3];
1082 var58.i = var57.i | var41.i;
1091 video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1092 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1094 OrcExecutor _ex, *ex = &_ex;
1095 static volatile int p_inited = 0;
1096 static OrcCode *c = 0;
1097 void (*func) (OrcExecutor *);
1100 orc_once_mutex_lock ();
1104 p = orc_program_new ();
1105 orc_program_set_2d (p);
1106 orc_program_set_name (p, "video_mixer_orc_blend_bgra");
1107 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra);
1108 orc_program_add_destination (p, 4, "d1");
1109 orc_program_add_source (p, 4, "s1");
1110 orc_program_add_constant (p, 4, 0xff000000, "c1");
1111 orc_program_add_constant (p, 4, 0x00000018, "c2");
1112 orc_program_add_constant (p, 4, 0x00000008, "c3");
1113 orc_program_add_parameter (p, 2, "p1");
1114 orc_program_add_temporary (p, 4, "t1");
1115 orc_program_add_temporary (p, 4, "t2");
1116 orc_program_add_temporary (p, 2, "t3");
1117 orc_program_add_temporary (p, 1, "t4");
1118 orc_program_add_temporary (p, 4, "t5");
1119 orc_program_add_temporary (p, 8, "t6");
1120 orc_program_add_temporary (p, 8, "t7");
1121 orc_program_add_temporary (p, 8, "t8");
1123 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1125 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
1127 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1129 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1131 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1133 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
1135 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1,
1137 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3,
1139 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
1141 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1143 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1145 orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
1147 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
1149 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
1151 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1153 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
1155 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1157 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1160 orc_program_compile (p);
1161 c = orc_program_take_code (p);
1162 orc_program_free (p);
1165 orc_once_mutex_unlock ();
1167 ex->arrays[ORC_VAR_A2] = c;
1171 ORC_EXECUTOR_M (ex) = m;
1172 ex->arrays[ORC_VAR_D1] = d1;
1173 ex->params[ORC_VAR_D1] = d1_stride;
1174 ex->arrays[ORC_VAR_S1] = (void *) s1;
1175 ex->params[ORC_VAR_S1] = s1_stride;
1176 ex->params[ORC_VAR_P1] = p1;
1184 /* video_mixer_orc_overlay_argb */
1187 video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1188 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1192 orc_union32 *ORC_RESTRICT ptr0;
1193 const orc_union32 *ORC_RESTRICT ptr4;
1227 for (j = 0; j < m; j++) {
1228 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1229 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1237 var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1239 var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */
1241 var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
1243 for (i = 0; i < n; i++) {
1252 ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) <<
1253 8) | (var46 & 0xff);
1255 var48.x4[0] = (orc_uint8) var47.x4[0];
1256 var48.x4[1] = (orc_uint8) var47.x4[1];
1257 var48.x4[2] = (orc_uint8) var47.x4[2];
1258 var48.x4[3] = (orc_uint8) var47.x4[3];
1260 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
1261 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
1262 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
1263 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
1265 var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8;
1266 var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8;
1267 var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8;
1268 var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8;
1270 var51.x4[0] = (orc_uint8) var44.x4[0];
1271 var51.x4[1] = (orc_uint8) var44.x4[1];
1272 var51.x4[2] = (orc_uint8) var44.x4[2];
1273 var51.x4[3] = (orc_uint8) var44.x4[3];
1275 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1276 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1277 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1278 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1280 var54.x4[0] = (orc_uint8) var53.x4[0];
1281 var54.x4[1] = (orc_uint8) var53.x4[1];
1282 var54.x4[2] = (orc_uint8) var53.x4[2];
1283 var54.x4[3] = (orc_uint8) var53.x4[3];
1285 var55.x4[0] = var54.x4[0] - var50.x4[0];
1286 var55.x4[1] = var54.x4[1] - var50.x4[1];
1287 var55.x4[2] = var54.x4[2] - var50.x4[2];
1288 var55.x4[3] = var54.x4[3] - var50.x4[3];
1297 ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) <<
1298 8) | (var58 & 0xff);
1300 var60.x4[0] = (orc_uint8) var59.x4[0];
1301 var60.x4[1] = (orc_uint8) var59.x4[1];
1302 var60.x4[2] = (orc_uint8) var59.x4[2];
1303 var60.x4[3] = (orc_uint8) var59.x4[3];
1305 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
1306 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
1307 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
1308 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
1311 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
1312 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
1314 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
1315 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
1317 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
1318 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
1320 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
1321 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
1323 var63.x4[0] = (orc_uint8) var56.x4[0];
1324 var63.x4[1] = (orc_uint8) var56.x4[1];
1325 var63.x4[2] = (orc_uint8) var56.x4[2];
1326 var63.x4[3] = (orc_uint8) var56.x4[3];
1328 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
1329 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
1330 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
1331 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
1333 var65.x4[0] = var64.x4[0] + var52.x4[0];
1334 var65.x4[1] = var64.x4[1] + var52.x4[1];
1335 var65.x4[2] = var64.x4[2] + var52.x4[2];
1336 var65.x4[3] = var64.x4[3] + var52.x4[3];
1338 var66.x4[0] = var62.x4[0] + var50.x4[0];
1339 var66.x4[1] = var62.x4[1] + var50.x4[1];
1340 var66.x4[2] = var62.x4[2] + var50.x4[2];
1341 var66.x4[3] = var62.x4[3] + var50.x4[3];
1344 ((var66.x4[0] & 0xff) ==
1345 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
1346 ((orc_uint16) var66.x4[0] & 0xff));
1348 ((var66.x4[1] & 0xff) ==
1349 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
1350 ((orc_uint16) var66.x4[1] & 0xff));
1352 ((var66.x4[2] & 0xff) ==
1353 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
1354 ((orc_uint16) var66.x4[2] & 0xff));
1356 ((var66.x4[3] & 0xff) ==
1357 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
1358 ((orc_uint16) var66.x4[3] & 0xff));
1360 var68.x4[0] = var67.x4[0];
1361 var68.x4[1] = var67.x4[1];
1362 var68.x4[2] = var67.x4[2];
1363 var68.x4[3] = var67.x4[3];
1365 var69.i = var68.i & var42.i;
1367 var70.x4[0] = var66.x4[0];
1368 var70.x4[1] = var66.x4[1];
1369 var70.x4[2] = var66.x4[2];
1370 var70.x4[3] = var66.x4[3];
1372 var71.i = var70.i & var43.i;
1374 var72.i = var69.i | var71.i;
1384 _backup_video_mixer_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex)
1389 int m = ex->params[ORC_VAR_A1];
1390 orc_union32 *ORC_RESTRICT ptr0;
1391 const orc_union32 *ORC_RESTRICT ptr4;
1425 for (j = 0; j < m; j++) {
1426 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1427 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1430 var41.x4[0] = ex->params[24];
1431 var41.x4[1] = ex->params[24];
1432 var41.x4[2] = ex->params[24];
1433 var41.x4[3] = ex->params[24];
1435 var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1437 var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */
1439 var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
1441 for (i = 0; i < n; i++) {
1450 ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) <<
1451 8) | (var46 & 0xff);
1453 var48.x4[0] = (orc_uint8) var47.x4[0];
1454 var48.x4[1] = (orc_uint8) var47.x4[1];
1455 var48.x4[2] = (orc_uint8) var47.x4[2];
1456 var48.x4[3] = (orc_uint8) var47.x4[3];
1458 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
1459 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
1460 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
1461 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
1463 var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8;
1464 var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8;
1465 var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8;
1466 var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8;
1468 var51.x4[0] = (orc_uint8) var44.x4[0];
1469 var51.x4[1] = (orc_uint8) var44.x4[1];
1470 var51.x4[2] = (orc_uint8) var44.x4[2];
1471 var51.x4[3] = (orc_uint8) var44.x4[3];
1473 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1474 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1475 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1476 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1478 var54.x4[0] = (orc_uint8) var53.x4[0];
1479 var54.x4[1] = (orc_uint8) var53.x4[1];
1480 var54.x4[2] = (orc_uint8) var53.x4[2];
1481 var54.x4[3] = (orc_uint8) var53.x4[3];
1483 var55.x4[0] = var54.x4[0] - var50.x4[0];
1484 var55.x4[1] = var54.x4[1] - var50.x4[1];
1485 var55.x4[2] = var54.x4[2] - var50.x4[2];
1486 var55.x4[3] = var54.x4[3] - var50.x4[3];
1495 ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) <<
1496 8) | (var58 & 0xff);
1498 var60.x4[0] = (orc_uint8) var59.x4[0];
1499 var60.x4[1] = (orc_uint8) var59.x4[1];
1500 var60.x4[2] = (orc_uint8) var59.x4[2];
1501 var60.x4[3] = (orc_uint8) var59.x4[3];
1503 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
1504 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
1505 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
1506 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
1509 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
1510 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
1512 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
1513 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
1515 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
1516 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
1518 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
1519 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
1521 var63.x4[0] = (orc_uint8) var56.x4[0];
1522 var63.x4[1] = (orc_uint8) var56.x4[1];
1523 var63.x4[2] = (orc_uint8) var56.x4[2];
1524 var63.x4[3] = (orc_uint8) var56.x4[3];
1526 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
1527 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
1528 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
1529 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
1531 var65.x4[0] = var64.x4[0] + var52.x4[0];
1532 var65.x4[1] = var64.x4[1] + var52.x4[1];
1533 var65.x4[2] = var64.x4[2] + var52.x4[2];
1534 var65.x4[3] = var64.x4[3] + var52.x4[3];
1536 var66.x4[0] = var62.x4[0] + var50.x4[0];
1537 var66.x4[1] = var62.x4[1] + var50.x4[1];
1538 var66.x4[2] = var62.x4[2] + var50.x4[2];
1539 var66.x4[3] = var62.x4[3] + var50.x4[3];
1542 ((var66.x4[0] & 0xff) ==
1543 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
1544 ((orc_uint16) var66.x4[0] & 0xff));
1546 ((var66.x4[1] & 0xff) ==
1547 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
1548 ((orc_uint16) var66.x4[1] & 0xff));
1550 ((var66.x4[2] & 0xff) ==
1551 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
1552 ((orc_uint16) var66.x4[2] & 0xff));
1554 ((var66.x4[3] & 0xff) ==
1555 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
1556 ((orc_uint16) var66.x4[3] & 0xff));
1558 var68.x4[0] = var67.x4[0];
1559 var68.x4[1] = var67.x4[1];
1560 var68.x4[2] = var67.x4[2];
1561 var68.x4[3] = var67.x4[3];
1563 var69.i = var68.i & var42.i;
1565 var70.x4[0] = var66.x4[0];
1566 var70.x4[1] = var66.x4[1];
1567 var70.x4[2] = var66.x4[2];
1568 var70.x4[3] = var66.x4[3];
1570 var71.i = var70.i & var43.i;
1572 var72.i = var69.i | var71.i;
1581 video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1582 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1584 OrcExecutor _ex, *ex = &_ex;
1585 static volatile int p_inited = 0;
1586 static OrcCode *c = 0;
1587 void (*func) (OrcExecutor *);
1590 orc_once_mutex_lock ();
1594 p = orc_program_new ();
1595 orc_program_set_2d (p);
1596 orc_program_set_name (p, "video_mixer_orc_overlay_argb");
1597 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb);
1598 orc_program_add_destination (p, 4, "d1");
1599 orc_program_add_source (p, 4, "s1");
1600 orc_program_add_constant (p, 4, 0xffffffff, "c1");
1601 orc_program_add_constant (p, 4, 0x000000ff, "c2");
1602 orc_program_add_constant (p, 4, 0xffffff00, "c3");
1603 orc_program_add_constant (p, 4, 0x00000008, "c4");
1604 orc_program_add_parameter (p, 2, "p1");
1605 orc_program_add_temporary (p, 4, "t1");
1606 orc_program_add_temporary (p, 2, "t2");
1607 orc_program_add_temporary (p, 1, "t3");
1608 orc_program_add_temporary (p, 8, "t4");
1609 orc_program_add_temporary (p, 8, "t5");
1610 orc_program_add_temporary (p, 8, "t6");
1611 orc_program_add_temporary (p, 4, "t7");
1612 orc_program_add_temporary (p, 8, "t8");
1613 orc_program_add_temporary (p, 8, "t9");
1615 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1617 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
1619 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1621 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
1623 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1,
1625 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1,
1627 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
1629 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
1631 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4,
1633 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1,
1635 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1,
1637 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
1639 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1641 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
1643 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1645 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
1647 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1,
1649 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
1651 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
1653 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1,
1655 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
1657 orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9,
1659 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4,
1661 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
1663 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1,
1665 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
1667 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1,
1669 orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
1671 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7,
1673 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1676 orc_program_compile (p);
1677 c = orc_program_take_code (p);
1678 orc_program_free (p);
1681 orc_once_mutex_unlock ();
1683 ex->arrays[ORC_VAR_A2] = c;
1687 ORC_EXECUTOR_M (ex) = m;
1688 ex->arrays[ORC_VAR_D1] = d1;
1689 ex->params[ORC_VAR_D1] = d1_stride;
1690 ex->arrays[ORC_VAR_S1] = (void *) s1;
1691 ex->params[ORC_VAR_S1] = s1_stride;
1692 ex->params[ORC_VAR_P1] = p1;
1700 /* video_mixer_orc_overlay_bgra */
1703 video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1704 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1708 orc_union32 *ORC_RESTRICT ptr0;
1709 const orc_union32 *ORC_RESTRICT ptr4;
1745 for (j = 0; j < m; j++) {
1746 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1747 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1755 var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1757 var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */
1759 var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
1761 for (i = 0; i < n; i++) {
1765 var46.i = ((orc_uint32) var45.i) >> 24;
1772 ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) <<
1773 8) | (var48 & 0xff);
1775 var50.x4[0] = (orc_uint8) var49.x4[0];
1776 var50.x4[1] = (orc_uint8) var49.x4[1];
1777 var50.x4[2] = (orc_uint8) var49.x4[2];
1778 var50.x4[3] = (orc_uint8) var49.x4[3];
1780 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
1781 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
1782 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
1783 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
1785 var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8;
1786 var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8;
1787 var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8;
1788 var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8;
1790 var53.x4[0] = (orc_uint8) var45.x4[0];
1791 var53.x4[1] = (orc_uint8) var45.x4[1];
1792 var53.x4[2] = (orc_uint8) var45.x4[2];
1793 var53.x4[3] = (orc_uint8) var45.x4[3];
1795 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
1796 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
1797 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
1798 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
1800 var56.x4[0] = (orc_uint8) var55.x4[0];
1801 var56.x4[1] = (orc_uint8) var55.x4[1];
1802 var56.x4[2] = (orc_uint8) var55.x4[2];
1803 var56.x4[3] = (orc_uint8) var55.x4[3];
1805 var57.x4[0] = var56.x4[0] - var52.x4[0];
1806 var57.x4[1] = var56.x4[1] - var52.x4[1];
1807 var57.x4[2] = var56.x4[2] - var52.x4[2];
1808 var57.x4[3] = var56.x4[3] - var52.x4[3];
1812 var59.i = ((orc_uint32) var58.i) >> 24;
1819 ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) <<
1820 8) | (var61 & 0xff);
1822 var63.x4[0] = (orc_uint8) var62.x4[0];
1823 var63.x4[1] = (orc_uint8) var62.x4[1];
1824 var63.x4[2] = (orc_uint8) var62.x4[2];
1825 var63.x4[3] = (orc_uint8) var62.x4[3];
1827 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
1828 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
1829 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
1830 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
1833 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
1834 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
1836 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
1837 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
1839 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
1840 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
1842 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
1843 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
1845 var66.x4[0] = (orc_uint8) var58.x4[0];
1846 var66.x4[1] = (orc_uint8) var58.x4[1];
1847 var66.x4[2] = (orc_uint8) var58.x4[2];
1848 var66.x4[3] = (orc_uint8) var58.x4[3];
1850 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
1851 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
1852 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
1853 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
1855 var68.x4[0] = var67.x4[0] + var54.x4[0];
1856 var68.x4[1] = var67.x4[1] + var54.x4[1];
1857 var68.x4[2] = var67.x4[2] + var54.x4[2];
1858 var68.x4[3] = var67.x4[3] + var54.x4[3];
1860 var69.x4[0] = var65.x4[0] + var52.x4[0];
1861 var69.x4[1] = var65.x4[1] + var52.x4[1];
1862 var69.x4[2] = var65.x4[2] + var52.x4[2];
1863 var69.x4[3] = var65.x4[3] + var52.x4[3];
1866 ((var69.x4[0] & 0xff) ==
1867 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
1868 ((orc_uint16) var69.x4[0] & 0xff));
1870 ((var69.x4[1] & 0xff) ==
1871 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
1872 ((orc_uint16) var69.x4[1] & 0xff));
1874 ((var69.x4[2] & 0xff) ==
1875 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
1876 ((orc_uint16) var69.x4[2] & 0xff));
1878 ((var69.x4[3] & 0xff) ==
1879 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
1880 ((orc_uint16) var69.x4[3] & 0xff));
1882 var71.x4[0] = var70.x4[0];
1883 var71.x4[1] = var70.x4[1];
1884 var71.x4[2] = var70.x4[2];
1885 var71.x4[3] = var70.x4[3];
1887 var72.i = var71.i & var43.i;
1889 var73.x4[0] = var69.x4[0];
1890 var73.x4[1] = var69.x4[1];
1891 var73.x4[2] = var69.x4[2];
1892 var73.x4[3] = var69.x4[3];
1894 var74.i = var73.i & var44.i;
1896 var75.i = var72.i | var74.i;
1906 _backup_video_mixer_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex)
1911 int m = ex->params[ORC_VAR_A1];
1912 orc_union32 *ORC_RESTRICT ptr0;
1913 const orc_union32 *ORC_RESTRICT ptr4;
1949 for (j = 0; j < m; j++) {
1950 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1951 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1954 var42.x4[0] = ex->params[24];
1955 var42.x4[1] = ex->params[24];
1956 var42.x4[2] = ex->params[24];
1957 var42.x4[3] = ex->params[24];
1959 var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1961 var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */
1963 var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
1965 for (i = 0; i < n; i++) {
1969 var46.i = ((orc_uint32) var45.i) >> 24;
1976 ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) <<
1977 8) | (var48 & 0xff);
1979 var50.x4[0] = (orc_uint8) var49.x4[0];
1980 var50.x4[1] = (orc_uint8) var49.x4[1];
1981 var50.x4[2] = (orc_uint8) var49.x4[2];
1982 var50.x4[3] = (orc_uint8) var49.x4[3];
1984 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
1985 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
1986 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
1987 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
1989 var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8;
1990 var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8;
1991 var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8;
1992 var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8;
1994 var53.x4[0] = (orc_uint8) var45.x4[0];
1995 var53.x4[1] = (orc_uint8) var45.x4[1];
1996 var53.x4[2] = (orc_uint8) var45.x4[2];
1997 var53.x4[3] = (orc_uint8) var45.x4[3];
1999 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
2000 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
2001 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
2002 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
2004 var56.x4[0] = (orc_uint8) var55.x4[0];
2005 var56.x4[1] = (orc_uint8) var55.x4[1];
2006 var56.x4[2] = (orc_uint8) var55.x4[2];
2007 var56.x4[3] = (orc_uint8) var55.x4[3];
2009 var57.x4[0] = var56.x4[0] - var52.x4[0];
2010 var57.x4[1] = var56.x4[1] - var52.x4[1];
2011 var57.x4[2] = var56.x4[2] - var52.x4[2];
2012 var57.x4[3] = var56.x4[3] - var52.x4[3];
2016 var59.i = ((orc_uint32) var58.i) >> 24;
2023 ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) <<
2024 8) | (var61 & 0xff);
2026 var63.x4[0] = (orc_uint8) var62.x4[0];
2027 var63.x4[1] = (orc_uint8) var62.x4[1];
2028 var63.x4[2] = (orc_uint8) var62.x4[2];
2029 var63.x4[3] = (orc_uint8) var62.x4[3];
2031 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
2032 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
2033 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
2034 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
2037 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
2038 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
2040 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
2041 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
2043 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
2044 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
2046 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
2047 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
2049 var66.x4[0] = (orc_uint8) var58.x4[0];
2050 var66.x4[1] = (orc_uint8) var58.x4[1];
2051 var66.x4[2] = (orc_uint8) var58.x4[2];
2052 var66.x4[3] = (orc_uint8) var58.x4[3];
2054 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
2055 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
2056 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
2057 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
2059 var68.x4[0] = var67.x4[0] + var54.x4[0];
2060 var68.x4[1] = var67.x4[1] + var54.x4[1];
2061 var68.x4[2] = var67.x4[2] + var54.x4[2];
2062 var68.x4[3] = var67.x4[3] + var54.x4[3];
2064 var69.x4[0] = var65.x4[0] + var52.x4[0];
2065 var69.x4[1] = var65.x4[1] + var52.x4[1];
2066 var69.x4[2] = var65.x4[2] + var52.x4[2];
2067 var69.x4[3] = var65.x4[3] + var52.x4[3];
2070 ((var69.x4[0] & 0xff) ==
2071 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
2072 ((orc_uint16) var69.x4[0] & 0xff));
2074 ((var69.x4[1] & 0xff) ==
2075 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
2076 ((orc_uint16) var69.x4[1] & 0xff));
2078 ((var69.x4[2] & 0xff) ==
2079 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
2080 ((orc_uint16) var69.x4[2] & 0xff));
2082 ((var69.x4[3] & 0xff) ==
2083 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
2084 ((orc_uint16) var69.x4[3] & 0xff));
2086 var71.x4[0] = var70.x4[0];
2087 var71.x4[1] = var70.x4[1];
2088 var71.x4[2] = var70.x4[2];
2089 var71.x4[3] = var70.x4[3];
2091 var72.i = var71.i & var43.i;
2093 var73.x4[0] = var69.x4[0];
2094 var73.x4[1] = var69.x4[1];
2095 var73.x4[2] = var69.x4[2];
2096 var73.x4[3] = var69.x4[3];
2098 var74.i = var73.i & var44.i;
2100 var75.i = var72.i | var74.i;
2109 video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
2110 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
2112 OrcExecutor _ex, *ex = &_ex;
2113 static volatile int p_inited = 0;
2114 static OrcCode *c = 0;
2115 void (*func) (OrcExecutor *);
2118 orc_once_mutex_lock ();
2122 p = orc_program_new ();
2123 orc_program_set_2d (p);
2124 orc_program_set_name (p, "video_mixer_orc_overlay_bgra");
2125 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra);
2126 orc_program_add_destination (p, 4, "d1");
2127 orc_program_add_source (p, 4, "s1");
2128 orc_program_add_constant (p, 4, 0xffffffff, "c1");
2129 orc_program_add_constant (p, 4, 0xff000000, "c2");
2130 orc_program_add_constant (p, 4, 0x00ffffff, "c3");
2131 orc_program_add_constant (p, 4, 0x00000018, "c4");
2132 orc_program_add_constant (p, 4, 0x00000008, "c5");
2133 orc_program_add_parameter (p, 2, "p1");
2134 orc_program_add_temporary (p, 4, "t1");
2135 orc_program_add_temporary (p, 4, "t2");
2136 orc_program_add_temporary (p, 2, "t3");
2137 orc_program_add_temporary (p, 1, "t4");
2138 orc_program_add_temporary (p, 8, "t5");
2139 orc_program_add_temporary (p, 8, "t6");
2140 orc_program_add_temporary (p, 8, "t7");
2141 orc_program_add_temporary (p, 4, "t8");
2142 orc_program_add_temporary (p, 8, "t9");
2143 orc_program_add_temporary (p, 8, "t10");
2145 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2147 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
2149 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2151 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
2153 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
2155 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1,
2157 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
2159 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5,
2161 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1,
2162 ORC_VAR_D1, ORC_VAR_D1);
2163 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5,
2165 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1,
2167 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1,
2169 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
2171 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2173 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
2175 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2177 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
2179 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
2181 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1,
2183 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
2185 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
2187 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
2189 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
2191 orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10,
2193 orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
2195 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
2197 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1,
2199 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
2201 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1,
2203 orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2,
2205 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8,
2207 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
2210 orc_program_compile (p);
2211 c = orc_program_take_code (p);
2212 orc_program_free (p);
2215 orc_once_mutex_unlock ();
2217 ex->arrays[ORC_VAR_A2] = c;
2221 ORC_EXECUTOR_M (ex) = m;
2222 ex->arrays[ORC_VAR_D1] = d1;
2223 ex->params[ORC_VAR_D1] = d1_stride;
2224 ex->arrays[ORC_VAR_S1] = (void *) s1;
2225 ex->params[ORC_VAR_S1] = s1_stride;
2226 ex->params[ORC_VAR_P1] = p1;