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__
83 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
84 #define ORC_INTERNAL __attribute__((visibility("hidden")))
85 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
86 #define ORC_INTERNAL __hidden
87 #elif defined (__GNUC__)
88 #define ORC_INTERNAL __attribute__((visibility("hidden")))
98 void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n);
99 void video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
100 const guint32 * ORC_RESTRICT s1, int n);
101 void video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
102 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
103 void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
104 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
105 void video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
106 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
107 void video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
108 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
109 void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
110 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
113 /* begin Orc C target preamble */
114 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
115 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
116 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
117 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
118 #define ORC_SB_MAX 127
119 #define ORC_SB_MIN (-1-ORC_SB_MAX)
120 #define ORC_UB_MAX 255
122 #define ORC_SW_MAX 32767
123 #define ORC_SW_MIN (-1-ORC_SW_MAX)
124 #define ORC_UW_MAX 65535
126 #define ORC_SL_MAX 2147483647
127 #define ORC_SL_MIN (-1-ORC_SL_MAX)
128 #define ORC_UL_MAX 4294967295U
130 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
131 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
132 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
133 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
134 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
135 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
136 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
137 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
138 #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))
139 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
140 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
141 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
142 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
143 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
145 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
146 #define ORC_RESTRICT restrict
147 #elif defined(__GNUC__) && __GNUC__ >= 4
148 #define ORC_RESTRICT __restrict__
153 /* end Orc C target preamble */
157 /* video_mixer_orc_splat_u32 */
160 video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
163 orc_union32 *ORC_RESTRICT ptr0;
167 ptr0 = (orc_union32 *) d1;
172 for (i = 0; i < n; i++) {
183 _backup_video_mixer_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
187 orc_union32 *ORC_RESTRICT ptr0;
191 ptr0 = (orc_union32 *) ex->arrays[0];
194 var32.i = ex->params[24];
196 for (i = 0; i < n; i++) {
206 video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
208 OrcExecutor _ex, *ex = &_ex;
209 static volatile int p_inited = 0;
210 static OrcCode *c = 0;
211 void (*func) (OrcExecutor *);
214 orc_once_mutex_lock ();
219 static const orc_uint8 bc[] = {
220 1, 9, 25, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111,
221 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16,
224 p = orc_program_new_from_static_bytecode (bc);
225 orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32);
227 p = orc_program_new ();
228 orc_program_set_name (p, "video_mixer_orc_splat_u32");
229 orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32);
230 orc_program_add_destination (p, 4, "d1");
231 orc_program_add_parameter (p, 4, "p1");
233 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
237 orc_program_compile (p);
238 c = orc_program_take_code (p);
239 orc_program_free (p);
242 orc_once_mutex_unlock ();
244 ex->arrays[ORC_VAR_A2] = c;
248 ex->arrays[ORC_VAR_D1] = d1;
249 ex->params[ORC_VAR_P1] = p1;
257 /* video_mixer_orc_memcpy_u32 */
260 video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
261 const guint32 * ORC_RESTRICT s1, int n)
264 orc_union32 *ORC_RESTRICT ptr0;
265 const orc_union32 *ORC_RESTRICT ptr4;
269 ptr0 = (orc_union32 *) d1;
270 ptr4 = (orc_union32 *) s1;
273 for (i = 0; i < n; i++) {
286 _backup_video_mixer_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex)
290 orc_union32 *ORC_RESTRICT ptr0;
291 const orc_union32 *ORC_RESTRICT ptr4;
295 ptr0 = (orc_union32 *) ex->arrays[0];
296 ptr4 = (orc_union32 *) ex->arrays[4];
299 for (i = 0; i < n; i++) {
311 video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
312 const guint32 * ORC_RESTRICT s1, int n)
314 OrcExecutor _ex, *ex = &_ex;
315 static volatile int p_inited = 0;
316 static OrcCode *c = 0;
317 void (*func) (OrcExecutor *);
320 orc_once_mutex_lock ();
325 static const orc_uint8 bc[] = {
326 1, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111,
327 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4,
328 12, 4, 4, 112, 0, 4, 2, 0,
330 p = orc_program_new_from_static_bytecode (bc);
331 orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32);
333 p = orc_program_new ();
334 orc_program_set_name (p, "video_mixer_orc_memcpy_u32");
335 orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32);
336 orc_program_add_destination (p, 4, "d1");
337 orc_program_add_source (p, 4, "s1");
339 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
343 orc_program_compile (p);
344 c = orc_program_take_code (p);
345 orc_program_free (p);
348 orc_once_mutex_unlock ();
350 ex->arrays[ORC_VAR_A2] = c;
354 ex->arrays[ORC_VAR_D1] = d1;
355 ex->arrays[ORC_VAR_S1] = (void *) s1;
363 /* video_mixer_orc_blend_u8 */
366 video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
367 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
371 orc_int8 *ORC_RESTRICT ptr0;
372 const orc_int8 *ORC_RESTRICT ptr4;
385 for (j = 0; j < m; j++) {
386 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
387 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
392 for (i = 0; i < n; i++) {
396 var38.i = (orc_uint8) var34;
400 var39.i = (orc_uint8) var35;
402 var40.i = var39.i - var38.i;
404 var41.i = (var40.i * var36.i) & 0xffff;
406 var42.i = var38.i << 8;
408 var43.i = var42.i + var41.i;
410 var44.i = ((orc_uint16) var43.i) >> 8;
412 var37 = ORC_CLAMP_UB (var44.i);
422 _backup_video_mixer_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex)
427 int m = ex->params[ORC_VAR_A1];
428 orc_int8 *ORC_RESTRICT ptr0;
429 const orc_int8 *ORC_RESTRICT ptr4;
442 for (j = 0; j < m; j++) {
443 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
444 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
447 var36.i = ex->params[24];
449 for (i = 0; i < n; i++) {
453 var38.i = (orc_uint8) var34;
457 var39.i = (orc_uint8) var35;
459 var40.i = var39.i - var38.i;
461 var41.i = (var40.i * var36.i) & 0xffff;
463 var42.i = var38.i << 8;
465 var43.i = var42.i + var41.i;
467 var44.i = ((orc_uint16) var43.i) >> 8;
469 var37 = ORC_CLAMP_UB (var44.i);
478 video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
479 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
481 OrcExecutor _ex, *ex = &_ex;
482 static volatile int p_inited = 0;
483 static OrcCode *c = 0;
484 void (*func) (OrcExecutor *);
487 orc_once_mutex_lock ();
492 static const orc_uint8 bc[] = {
493 1, 7, 9, 24, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
494 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12,
495 1, 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32,
496 0, 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16,
497 70, 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0,
499 p = orc_program_new_from_static_bytecode (bc);
500 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8);
502 p = orc_program_new ();
503 orc_program_set_2d (p);
504 orc_program_set_name (p, "video_mixer_orc_blend_u8");
505 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8);
506 orc_program_add_destination (p, 1, "d1");
507 orc_program_add_source (p, 1, "s1");
508 orc_program_add_constant (p, 1, 0x00000008, "c1");
509 orc_program_add_parameter (p, 2, "p1");
510 orc_program_add_temporary (p, 2, "t1");
511 orc_program_add_temporary (p, 2, "t2");
513 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
515 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
517 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
519 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
521 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
523 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2,
525 orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
527 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
528 ORC_VAR_D1, ORC_VAR_D1);
531 orc_program_compile (p);
532 c = orc_program_take_code (p);
533 orc_program_free (p);
536 orc_once_mutex_unlock ();
538 ex->arrays[ORC_VAR_A2] = c;
542 ORC_EXECUTOR_M (ex) = m;
543 ex->arrays[ORC_VAR_D1] = d1;
544 ex->params[ORC_VAR_D1] = d1_stride;
545 ex->arrays[ORC_VAR_S1] = (void *) s1;
546 ex->params[ORC_VAR_S1] = s1_stride;
547 ex->params[ORC_VAR_P1] = p1;
555 /* video_mixer_orc_blend_argb */
558 video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
559 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
563 orc_union32 *ORC_RESTRICT ptr0;
564 const orc_union32 *ORC_RESTRICT ptr4;
566 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
567 volatile orc_union32 var40;
588 for (j = 0; j < m; j++) {
589 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
590 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
598 var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
600 for (i = 0; i < n; i++) {
609 ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) <<
612 var45.x4[0] = (orc_uint8) var44.x4[0];
613 var45.x4[1] = (orc_uint8) var44.x4[1];
614 var45.x4[2] = (orc_uint8) var44.x4[2];
615 var45.x4[3] = (orc_uint8) var44.x4[3];
617 var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff;
618 var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff;
619 var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff;
620 var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff;
622 var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
623 var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
624 var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
625 var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
627 var48.x4[0] = (orc_uint8) var41.x4[0];
628 var48.x4[1] = (orc_uint8) var41.x4[1];
629 var48.x4[2] = (orc_uint8) var41.x4[2];
630 var48.x4[3] = (orc_uint8) var41.x4[3];
634 var50.x4[0] = (orc_uint8) var49.x4[0];
635 var50.x4[1] = (orc_uint8) var49.x4[1];
636 var50.x4[2] = (orc_uint8) var49.x4[2];
637 var50.x4[3] = (orc_uint8) var49.x4[3];
639 var51.x4[0] = var48.x4[0] - var50.x4[0];
640 var51.x4[1] = var48.x4[1] - var50.x4[1];
641 var51.x4[2] = var48.x4[2] - var50.x4[2];
642 var51.x4[3] = var48.x4[3] - var50.x4[3];
644 var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
645 var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
646 var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
647 var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
650 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
651 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
653 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
654 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
656 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
657 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
659 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
660 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
662 var54.x4[0] = var50.x4[0] + var53.x4[0];
663 var54.x4[1] = var50.x4[1] + var53.x4[1];
664 var54.x4[2] = var50.x4[2] + var53.x4[2];
665 var54.x4[3] = var50.x4[3] + var53.x4[3];
667 var55.x4[0] = var54.x4[0];
668 var55.x4[1] = var54.x4[1];
669 var55.x4[2] = var54.x4[2];
670 var55.x4[3] = var54.x4[3];
672 var56.i = var55.i | var40.i;
682 _backup_video_mixer_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex)
687 int m = ex->params[ORC_VAR_A1];
688 orc_union32 *ORC_RESTRICT ptr0;
689 const orc_union32 *ORC_RESTRICT ptr4;
691 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
692 volatile orc_union32 var40;
713 for (j = 0; j < m; j++) {
714 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
715 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
718 var39.x4[0] = ex->params[24];
719 var39.x4[1] = ex->params[24];
720 var39.x4[2] = ex->params[24];
721 var39.x4[3] = ex->params[24];
723 var40.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
725 for (i = 0; i < n; i++) {
734 ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) <<
737 var45.x4[0] = (orc_uint8) var44.x4[0];
738 var45.x4[1] = (orc_uint8) var44.x4[1];
739 var45.x4[2] = (orc_uint8) var44.x4[2];
740 var45.x4[3] = (orc_uint8) var44.x4[3];
742 var46.x4[0] = (var45.x4[0] * var39.x4[0]) & 0xffff;
743 var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff;
744 var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff;
745 var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff;
747 var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
748 var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
749 var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
750 var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
752 var48.x4[0] = (orc_uint8) var41.x4[0];
753 var48.x4[1] = (orc_uint8) var41.x4[1];
754 var48.x4[2] = (orc_uint8) var41.x4[2];
755 var48.x4[3] = (orc_uint8) var41.x4[3];
759 var50.x4[0] = (orc_uint8) var49.x4[0];
760 var50.x4[1] = (orc_uint8) var49.x4[1];
761 var50.x4[2] = (orc_uint8) var49.x4[2];
762 var50.x4[3] = (orc_uint8) var49.x4[3];
764 var51.x4[0] = var48.x4[0] - var50.x4[0];
765 var51.x4[1] = var48.x4[1] - var50.x4[1];
766 var51.x4[2] = var48.x4[2] - var50.x4[2];
767 var51.x4[3] = var48.x4[3] - var50.x4[3];
769 var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
770 var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
771 var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
772 var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
775 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
776 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
778 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
779 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
781 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
782 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
784 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
785 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
787 var54.x4[0] = var50.x4[0] + var53.x4[0];
788 var54.x4[1] = var50.x4[1] + var53.x4[1];
789 var54.x4[2] = var50.x4[2] + var53.x4[2];
790 var54.x4[3] = var50.x4[3] + var53.x4[3];
792 var55.x4[0] = var54.x4[0];
793 var55.x4[1] = var54.x4[1];
794 var55.x4[2] = var54.x4[2];
795 var55.x4[3] = var54.x4[3];
797 var56.i = var55.i | var40.i;
806 video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
807 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
809 OrcExecutor _ex, *ex = &_ex;
810 static volatile int p_inited = 0;
811 static OrcCode *c = 0;
812 void (*func) (OrcExecutor *);
815 orc_once_mutex_lock ();
820 static const orc_uint8 bc[] = {
821 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
822 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4,
823 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 4, 8, 0, 0, 0,
824 16, 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8,
825 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38,
826 35, 21, 2, 89, 38, 38, 24, 21, 2, 95, 38, 38, 17, 21, 2, 150,
827 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, 37, 37, 36,
828 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, 70, 36, 36,
829 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, 2, 0,
831 p = orc_program_new_from_static_bytecode (bc);
832 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb);
834 p = orc_program_new ();
835 orc_program_set_2d (p);
836 orc_program_set_name (p, "video_mixer_orc_blend_argb");
837 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb);
838 orc_program_add_destination (p, 4, "d1");
839 orc_program_add_source (p, 4, "s1");
840 orc_program_add_constant (p, 4, 0x000000ff, "c1");
841 orc_program_add_constant (p, 4, 0x00000008, "c2");
842 orc_program_add_parameter (p, 2, "p1");
843 orc_program_add_temporary (p, 4, "t1");
844 orc_program_add_temporary (p, 2, "t2");
845 orc_program_add_temporary (p, 1, "t3");
846 orc_program_add_temporary (p, 4, "t4");
847 orc_program_add_temporary (p, 8, "t5");
848 orc_program_add_temporary (p, 8, "t6");
849 orc_program_add_temporary (p, 8, "t7");
851 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
853 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
855 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
857 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
859 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
861 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1,
863 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
865 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
867 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
869 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
871 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
873 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
875 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
877 orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
879 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
881 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
883 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
887 orc_program_compile (p);
888 c = orc_program_take_code (p);
889 orc_program_free (p);
892 orc_once_mutex_unlock ();
894 ex->arrays[ORC_VAR_A2] = c;
898 ORC_EXECUTOR_M (ex) = m;
899 ex->arrays[ORC_VAR_D1] = d1;
900 ex->params[ORC_VAR_D1] = d1_stride;
901 ex->arrays[ORC_VAR_S1] = (void *) s1;
902 ex->params[ORC_VAR_S1] = s1_stride;
903 ex->params[ORC_VAR_P1] = p1;
911 /* video_mixer_orc_blend_bgra */
914 video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
915 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
919 orc_union32 *ORC_RESTRICT ptr0;
920 const orc_union32 *ORC_RESTRICT ptr4;
922 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
923 volatile orc_union32 var41;
945 for (j = 0; j < m; j++) {
946 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
947 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
955 var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
957 for (i = 0; i < n; i++) {
961 var43.i = ((orc_uint32) var42.i) >> 24;
968 ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) <<
971 var47.x4[0] = (orc_uint8) var46.x4[0];
972 var47.x4[1] = (orc_uint8) var46.x4[1];
973 var47.x4[2] = (orc_uint8) var46.x4[2];
974 var47.x4[3] = (orc_uint8) var46.x4[3];
976 var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff;
977 var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff;
978 var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff;
979 var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff;
981 var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8;
982 var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8;
983 var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8;
984 var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8;
986 var50.x4[0] = (orc_uint8) var42.x4[0];
987 var50.x4[1] = (orc_uint8) var42.x4[1];
988 var50.x4[2] = (orc_uint8) var42.x4[2];
989 var50.x4[3] = (orc_uint8) var42.x4[3];
993 var52.x4[0] = (orc_uint8) var51.x4[0];
994 var52.x4[1] = (orc_uint8) var51.x4[1];
995 var52.x4[2] = (orc_uint8) var51.x4[2];
996 var52.x4[3] = (orc_uint8) var51.x4[3];
998 var53.x4[0] = var50.x4[0] - var52.x4[0];
999 var53.x4[1] = var50.x4[1] - var52.x4[1];
1000 var53.x4[2] = var50.x4[2] - var52.x4[2];
1001 var53.x4[3] = var50.x4[3] - var52.x4[3];
1003 var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff;
1004 var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff;
1005 var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff;
1006 var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff;
1009 ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) +
1010 (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8;
1012 ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) +
1013 (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8;
1015 ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) +
1016 (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8;
1018 ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) +
1019 (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8;
1021 var56.x4[0] = var52.x4[0] + var55.x4[0];
1022 var56.x4[1] = var52.x4[1] + var55.x4[1];
1023 var56.x4[2] = var52.x4[2] + var55.x4[2];
1024 var56.x4[3] = var52.x4[3] + var55.x4[3];
1026 var57.x4[0] = var56.x4[0];
1027 var57.x4[1] = var56.x4[1];
1028 var57.x4[2] = var56.x4[2];
1029 var57.x4[3] = var56.x4[3];
1031 var58.i = var57.i | var41.i;
1041 _backup_video_mixer_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex)
1046 int m = ex->params[ORC_VAR_A1];
1047 orc_union32 *ORC_RESTRICT ptr0;
1048 const orc_union32 *ORC_RESTRICT ptr4;
1050 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1051 volatile orc_union32 var41;
1073 for (j = 0; j < m; j++) {
1074 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1075 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1078 var40.x4[0] = ex->params[24];
1079 var40.x4[1] = ex->params[24];
1080 var40.x4[2] = ex->params[24];
1081 var40.x4[3] = ex->params[24];
1083 var41.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
1085 for (i = 0; i < n; i++) {
1089 var43.i = ((orc_uint32) var42.i) >> 24;
1096 ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) <<
1097 8) | (var45 & 0xff);
1099 var47.x4[0] = (orc_uint8) var46.x4[0];
1100 var47.x4[1] = (orc_uint8) var46.x4[1];
1101 var47.x4[2] = (orc_uint8) var46.x4[2];
1102 var47.x4[3] = (orc_uint8) var46.x4[3];
1104 var48.x4[0] = (var47.x4[0] * var40.x4[0]) & 0xffff;
1105 var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff;
1106 var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff;
1107 var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff;
1109 var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8;
1110 var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8;
1111 var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8;
1112 var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8;
1114 var50.x4[0] = (orc_uint8) var42.x4[0];
1115 var50.x4[1] = (orc_uint8) var42.x4[1];
1116 var50.x4[2] = (orc_uint8) var42.x4[2];
1117 var50.x4[3] = (orc_uint8) var42.x4[3];
1121 var52.x4[0] = (orc_uint8) var51.x4[0];
1122 var52.x4[1] = (orc_uint8) var51.x4[1];
1123 var52.x4[2] = (orc_uint8) var51.x4[2];
1124 var52.x4[3] = (orc_uint8) var51.x4[3];
1126 var53.x4[0] = var50.x4[0] - var52.x4[0];
1127 var53.x4[1] = var50.x4[1] - var52.x4[1];
1128 var53.x4[2] = var50.x4[2] - var52.x4[2];
1129 var53.x4[3] = var50.x4[3] - var52.x4[3];
1131 var54.x4[0] = (var53.x4[0] * var49.x4[0]) & 0xffff;
1132 var54.x4[1] = (var53.x4[1] * var49.x4[1]) & 0xffff;
1133 var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff;
1134 var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff;
1137 ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) +
1138 (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8;
1140 ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) +
1141 (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8;
1143 ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) +
1144 (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8;
1146 ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) +
1147 (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8;
1149 var56.x4[0] = var52.x4[0] + var55.x4[0];
1150 var56.x4[1] = var52.x4[1] + var55.x4[1];
1151 var56.x4[2] = var52.x4[2] + var55.x4[2];
1152 var56.x4[3] = var52.x4[3] + var55.x4[3];
1154 var57.x4[0] = var56.x4[0];
1155 var57.x4[1] = var56.x4[1];
1156 var57.x4[2] = var56.x4[2];
1157 var57.x4[3] = var56.x4[3];
1159 var58.i = var57.i | var41.i;
1168 video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1169 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1171 OrcExecutor _ex, *ex = &_ex;
1172 static volatile int p_inited = 0;
1173 static OrcCode *c = 0;
1174 void (*func) (OrcExecutor *);
1177 orc_once_mutex_lock ();
1182 static const orc_uint8 bc[] = {
1183 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
1184 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4,
1185 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0,
1186 14, 4, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1,
1187 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163,
1188 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89,
1189 39, 39, 24, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32,
1190 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38,
1191 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157,
1192 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0,
1194 p = orc_program_new_from_static_bytecode (bc);
1195 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra);
1197 p = orc_program_new ();
1198 orc_program_set_2d (p);
1199 orc_program_set_name (p, "video_mixer_orc_blend_bgra");
1200 orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra);
1201 orc_program_add_destination (p, 4, "d1");
1202 orc_program_add_source (p, 4, "s1");
1203 orc_program_add_constant (p, 4, 0xff000000, "c1");
1204 orc_program_add_constant (p, 4, 0x00000018, "c2");
1205 orc_program_add_constant (p, 4, 0x00000008, "c3");
1206 orc_program_add_parameter (p, 2, "p1");
1207 orc_program_add_temporary (p, 4, "t1");
1208 orc_program_add_temporary (p, 4, "t2");
1209 orc_program_add_temporary (p, 2, "t3");
1210 orc_program_add_temporary (p, 1, "t4");
1211 orc_program_add_temporary (p, 4, "t5");
1212 orc_program_add_temporary (p, 8, "t6");
1213 orc_program_add_temporary (p, 8, "t7");
1214 orc_program_add_temporary (p, 8, "t8");
1216 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1218 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
1220 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1222 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1224 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1226 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
1228 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1,
1230 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3,
1232 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
1234 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1236 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1238 orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
1240 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
1242 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
1244 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1246 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
1248 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1250 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1254 orc_program_compile (p);
1255 c = orc_program_take_code (p);
1256 orc_program_free (p);
1259 orc_once_mutex_unlock ();
1261 ex->arrays[ORC_VAR_A2] = c;
1265 ORC_EXECUTOR_M (ex) = m;
1266 ex->arrays[ORC_VAR_D1] = d1;
1267 ex->params[ORC_VAR_D1] = d1_stride;
1268 ex->arrays[ORC_VAR_S1] = (void *) s1;
1269 ex->params[ORC_VAR_S1] = s1_stride;
1270 ex->params[ORC_VAR_P1] = p1;
1278 /* video_mixer_orc_overlay_argb */
1281 video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1282 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1286 orc_union32 *ORC_RESTRICT ptr0;
1287 const orc_union32 *ORC_RESTRICT ptr4;
1289 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1290 volatile orc_union32 var42;
1294 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1295 volatile orc_union32 var43;
1329 for (j = 0; j < m; j++) {
1330 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1331 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1339 var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1341 var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */
1343 var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
1345 for (i = 0; i < n; i++) {
1354 ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) <<
1355 8) | (var46 & 0xff);
1357 var48.x4[0] = (orc_uint8) var47.x4[0];
1358 var48.x4[1] = (orc_uint8) var47.x4[1];
1359 var48.x4[2] = (orc_uint8) var47.x4[2];
1360 var48.x4[3] = (orc_uint8) var47.x4[3];
1362 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
1363 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
1364 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
1365 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
1367 var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8;
1368 var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8;
1369 var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8;
1370 var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8;
1372 var51.x4[0] = (orc_uint8) var44.x4[0];
1373 var51.x4[1] = (orc_uint8) var44.x4[1];
1374 var51.x4[2] = (orc_uint8) var44.x4[2];
1375 var51.x4[3] = (orc_uint8) var44.x4[3];
1377 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1378 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1379 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1380 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1382 var54.x4[0] = (orc_uint8) var53.x4[0];
1383 var54.x4[1] = (orc_uint8) var53.x4[1];
1384 var54.x4[2] = (orc_uint8) var53.x4[2];
1385 var54.x4[3] = (orc_uint8) var53.x4[3];
1387 var55.x4[0] = var54.x4[0] - var50.x4[0];
1388 var55.x4[1] = var54.x4[1] - var50.x4[1];
1389 var55.x4[2] = var54.x4[2] - var50.x4[2];
1390 var55.x4[3] = var54.x4[3] - var50.x4[3];
1399 ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) <<
1400 8) | (var58 & 0xff);
1402 var60.x4[0] = (orc_uint8) var59.x4[0];
1403 var60.x4[1] = (orc_uint8) var59.x4[1];
1404 var60.x4[2] = (orc_uint8) var59.x4[2];
1405 var60.x4[3] = (orc_uint8) var59.x4[3];
1407 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
1408 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
1409 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
1410 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
1413 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
1414 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
1416 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
1417 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
1419 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
1420 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
1422 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
1423 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
1425 var63.x4[0] = (orc_uint8) var56.x4[0];
1426 var63.x4[1] = (orc_uint8) var56.x4[1];
1427 var63.x4[2] = (orc_uint8) var56.x4[2];
1428 var63.x4[3] = (orc_uint8) var56.x4[3];
1430 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
1431 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
1432 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
1433 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
1435 var65.x4[0] = var64.x4[0] + var52.x4[0];
1436 var65.x4[1] = var64.x4[1] + var52.x4[1];
1437 var65.x4[2] = var64.x4[2] + var52.x4[2];
1438 var65.x4[3] = var64.x4[3] + var52.x4[3];
1440 var66.x4[0] = var62.x4[0] + var50.x4[0];
1441 var66.x4[1] = var62.x4[1] + var50.x4[1];
1442 var66.x4[2] = var62.x4[2] + var50.x4[2];
1443 var66.x4[3] = var62.x4[3] + var50.x4[3];
1446 ((var66.x4[0] & 0xff) ==
1447 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
1448 ((orc_uint16) var66.x4[0] & 0xff));
1450 ((var66.x4[1] & 0xff) ==
1451 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
1452 ((orc_uint16) var66.x4[1] & 0xff));
1454 ((var66.x4[2] & 0xff) ==
1455 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
1456 ((orc_uint16) var66.x4[2] & 0xff));
1458 ((var66.x4[3] & 0xff) ==
1459 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
1460 ((orc_uint16) var66.x4[3] & 0xff));
1462 var68.x4[0] = var67.x4[0];
1463 var68.x4[1] = var67.x4[1];
1464 var68.x4[2] = var67.x4[2];
1465 var68.x4[3] = var67.x4[3];
1467 var69.i = var68.i & var42.i;
1469 var70.x4[0] = var66.x4[0];
1470 var70.x4[1] = var66.x4[1];
1471 var70.x4[2] = var66.x4[2];
1472 var70.x4[3] = var66.x4[3];
1474 var71.i = var70.i & var43.i;
1476 var72.i = var69.i | var71.i;
1486 _backup_video_mixer_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex)
1491 int m = ex->params[ORC_VAR_A1];
1492 orc_union32 *ORC_RESTRICT ptr0;
1493 const orc_union32 *ORC_RESTRICT ptr4;
1495 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1496 volatile orc_union32 var42;
1500 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1501 volatile orc_union32 var43;
1535 for (j = 0; j < m; j++) {
1536 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1537 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1540 var41.x4[0] = ex->params[24];
1541 var41.x4[1] = ex->params[24];
1542 var41.x4[2] = ex->params[24];
1543 var41.x4[3] = ex->params[24];
1545 var53.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1547 var42.i = (int) 0xffffff00; /* -256 or 2.122e-314f */
1549 var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
1551 for (i = 0; i < n; i++) {
1560 ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) <<
1561 8) | (var46 & 0xff);
1563 var48.x4[0] = (orc_uint8) var47.x4[0];
1564 var48.x4[1] = (orc_uint8) var47.x4[1];
1565 var48.x4[2] = (orc_uint8) var47.x4[2];
1566 var48.x4[3] = (orc_uint8) var47.x4[3];
1568 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
1569 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
1570 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
1571 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
1573 var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8;
1574 var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8;
1575 var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8;
1576 var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8;
1578 var51.x4[0] = (orc_uint8) var44.x4[0];
1579 var51.x4[1] = (orc_uint8) var44.x4[1];
1580 var51.x4[2] = (orc_uint8) var44.x4[2];
1581 var51.x4[3] = (orc_uint8) var44.x4[3];
1583 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1584 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1585 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1586 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1588 var54.x4[0] = (orc_uint8) var53.x4[0];
1589 var54.x4[1] = (orc_uint8) var53.x4[1];
1590 var54.x4[2] = (orc_uint8) var53.x4[2];
1591 var54.x4[3] = (orc_uint8) var53.x4[3];
1593 var55.x4[0] = var54.x4[0] - var50.x4[0];
1594 var55.x4[1] = var54.x4[1] - var50.x4[1];
1595 var55.x4[2] = var54.x4[2] - var50.x4[2];
1596 var55.x4[3] = var54.x4[3] - var50.x4[3];
1605 ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) <<
1606 8) | (var58 & 0xff);
1608 var60.x4[0] = (orc_uint8) var59.x4[0];
1609 var60.x4[1] = (orc_uint8) var59.x4[1];
1610 var60.x4[2] = (orc_uint8) var59.x4[2];
1611 var60.x4[3] = (orc_uint8) var59.x4[3];
1613 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
1614 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
1615 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
1616 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
1619 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
1620 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
1622 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
1623 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
1625 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
1626 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
1628 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
1629 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
1631 var63.x4[0] = (orc_uint8) var56.x4[0];
1632 var63.x4[1] = (orc_uint8) var56.x4[1];
1633 var63.x4[2] = (orc_uint8) var56.x4[2];
1634 var63.x4[3] = (orc_uint8) var56.x4[3];
1636 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
1637 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
1638 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
1639 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
1641 var65.x4[0] = var64.x4[0] + var52.x4[0];
1642 var65.x4[1] = var64.x4[1] + var52.x4[1];
1643 var65.x4[2] = var64.x4[2] + var52.x4[2];
1644 var65.x4[3] = var64.x4[3] + var52.x4[3];
1646 var66.x4[0] = var62.x4[0] + var50.x4[0];
1647 var66.x4[1] = var62.x4[1] + var50.x4[1];
1648 var66.x4[2] = var62.x4[2] + var50.x4[2];
1649 var66.x4[3] = var62.x4[3] + var50.x4[3];
1652 ((var66.x4[0] & 0xff) ==
1653 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
1654 ((orc_uint16) var66.x4[0] & 0xff));
1656 ((var66.x4[1] & 0xff) ==
1657 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
1658 ((orc_uint16) var66.x4[1] & 0xff));
1660 ((var66.x4[2] & 0xff) ==
1661 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
1662 ((orc_uint16) var66.x4[2] & 0xff));
1664 ((var66.x4[3] & 0xff) ==
1665 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
1666 ((orc_uint16) var66.x4[3] & 0xff));
1668 var68.x4[0] = var67.x4[0];
1669 var68.x4[1] = var67.x4[1];
1670 var68.x4[2] = var67.x4[2];
1671 var68.x4[3] = var67.x4[3];
1673 var69.i = var68.i & var42.i;
1675 var70.x4[0] = var66.x4[0];
1676 var70.x4[1] = var66.x4[1];
1677 var70.x4[2] = var66.x4[2];
1678 var70.x4[3] = var66.x4[3];
1680 var71.i = var70.i & var43.i;
1682 var72.i = var69.i | var71.i;
1691 video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1692 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1694 OrcExecutor _ex, *ex = &_ex;
1695 static volatile int p_inited = 0;
1696 static OrcCode *c = 0;
1697 void (*func) (OrcExecutor *);
1700 orc_once_mutex_lock ();
1705 static const orc_uint8 bc[] = {
1706 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
1707 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103,
1709 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0,
1710 0, 0, 14, 4, 0, 255, 255, 255, 14, 4, 8, 0, 0, 0, 16, 2,
1711 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8,
1712 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2,
1713 150, 35, 38, 21, 2, 89, 35, 35, 24, 21, 2, 95, 35, 35, 19, 21,
1714 2, 150, 40, 32, 21, 2, 89, 40, 40, 35, 115, 38, 16, 21, 2, 150,
1715 36, 38, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, 32, 157, 34,
1716 33, 152, 38, 34, 21, 2, 150, 37, 38, 21, 2, 89, 37, 37, 36, 21,
1717 2, 80, 37, 37, 21, 2, 150, 39, 32, 21, 2, 89, 39, 39, 37, 21,
1718 2, 70, 39, 39, 40, 21, 2, 70, 37, 37, 35, 21, 2, 81, 39, 39,
1719 37, 21, 2, 157, 32, 39, 106, 32, 32, 18, 21, 2, 157, 38, 37, 106,
1720 38, 38, 17, 123, 32, 32, 38, 128, 0, 32, 2, 0,
1722 p = orc_program_new_from_static_bytecode (bc);
1723 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb);
1725 p = orc_program_new ();
1726 orc_program_set_2d (p);
1727 orc_program_set_name (p, "video_mixer_orc_overlay_argb");
1728 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb);
1729 orc_program_add_destination (p, 4, "d1");
1730 orc_program_add_source (p, 4, "s1");
1731 orc_program_add_constant (p, 4, 0xffffffff, "c1");
1732 orc_program_add_constant (p, 4, 0x000000ff, "c2");
1733 orc_program_add_constant (p, 4, 0xffffff00, "c3");
1734 orc_program_add_constant (p, 4, 0x00000008, "c4");
1735 orc_program_add_parameter (p, 2, "p1");
1736 orc_program_add_temporary (p, 4, "t1");
1737 orc_program_add_temporary (p, 2, "t2");
1738 orc_program_add_temporary (p, 1, "t3");
1739 orc_program_add_temporary (p, 8, "t4");
1740 orc_program_add_temporary (p, 8, "t5");
1741 orc_program_add_temporary (p, 8, "t6");
1742 orc_program_add_temporary (p, 4, "t7");
1743 orc_program_add_temporary (p, 8, "t8");
1744 orc_program_add_temporary (p, 8, "t9");
1746 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1748 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
1750 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1752 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
1754 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1,
1756 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1,
1758 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
1760 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
1762 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4,
1764 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1,
1766 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1,
1768 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
1770 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1772 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
1774 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1776 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
1778 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1,
1780 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
1782 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
1784 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1,
1786 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
1788 orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9,
1790 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4,
1792 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
1794 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1,
1796 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
1798 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1,
1800 orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
1802 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7,
1804 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1808 orc_program_compile (p);
1809 c = orc_program_take_code (p);
1810 orc_program_free (p);
1813 orc_once_mutex_unlock ();
1815 ex->arrays[ORC_VAR_A2] = c;
1819 ORC_EXECUTOR_M (ex) = m;
1820 ex->arrays[ORC_VAR_D1] = d1;
1821 ex->params[ORC_VAR_D1] = d1_stride;
1822 ex->arrays[ORC_VAR_S1] = (void *) s1;
1823 ex->params[ORC_VAR_S1] = s1_stride;
1824 ex->params[ORC_VAR_P1] = p1;
1832 /* video_mixer_orc_overlay_bgra */
1835 video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1836 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1840 orc_union32 *ORC_RESTRICT ptr0;
1841 const orc_union32 *ORC_RESTRICT ptr4;
1843 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1844 volatile orc_union32 var43;
1848 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1849 volatile orc_union32 var44;
1885 for (j = 0; j < m; j++) {
1886 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1887 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1895 var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
1897 var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */
1899 var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
1901 for (i = 0; i < n; i++) {
1905 var46.i = ((orc_uint32) var45.i) >> 24;
1912 ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) <<
1913 8) | (var48 & 0xff);
1915 var50.x4[0] = (orc_uint8) var49.x4[0];
1916 var50.x4[1] = (orc_uint8) var49.x4[1];
1917 var50.x4[2] = (orc_uint8) var49.x4[2];
1918 var50.x4[3] = (orc_uint8) var49.x4[3];
1920 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
1921 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
1922 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
1923 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
1925 var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8;
1926 var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8;
1927 var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8;
1928 var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8;
1930 var53.x4[0] = (orc_uint8) var45.x4[0];
1931 var53.x4[1] = (orc_uint8) var45.x4[1];
1932 var53.x4[2] = (orc_uint8) var45.x4[2];
1933 var53.x4[3] = (orc_uint8) var45.x4[3];
1935 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
1936 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
1937 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
1938 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
1940 var56.x4[0] = (orc_uint8) var55.x4[0];
1941 var56.x4[1] = (orc_uint8) var55.x4[1];
1942 var56.x4[2] = (orc_uint8) var55.x4[2];
1943 var56.x4[3] = (orc_uint8) var55.x4[3];
1945 var57.x4[0] = var56.x4[0] - var52.x4[0];
1946 var57.x4[1] = var56.x4[1] - var52.x4[1];
1947 var57.x4[2] = var56.x4[2] - var52.x4[2];
1948 var57.x4[3] = var56.x4[3] - var52.x4[3];
1952 var59.i = ((orc_uint32) var58.i) >> 24;
1959 ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) <<
1960 8) | (var61 & 0xff);
1962 var63.x4[0] = (orc_uint8) var62.x4[0];
1963 var63.x4[1] = (orc_uint8) var62.x4[1];
1964 var63.x4[2] = (orc_uint8) var62.x4[2];
1965 var63.x4[3] = (orc_uint8) var62.x4[3];
1967 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
1968 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
1969 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
1970 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
1973 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
1974 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
1976 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
1977 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
1979 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
1980 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
1982 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
1983 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
1985 var66.x4[0] = (orc_uint8) var58.x4[0];
1986 var66.x4[1] = (orc_uint8) var58.x4[1];
1987 var66.x4[2] = (orc_uint8) var58.x4[2];
1988 var66.x4[3] = (orc_uint8) var58.x4[3];
1990 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
1991 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
1992 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
1993 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
1995 var68.x4[0] = var67.x4[0] + var54.x4[0];
1996 var68.x4[1] = var67.x4[1] + var54.x4[1];
1997 var68.x4[2] = var67.x4[2] + var54.x4[2];
1998 var68.x4[3] = var67.x4[3] + var54.x4[3];
2000 var69.x4[0] = var65.x4[0] + var52.x4[0];
2001 var69.x4[1] = var65.x4[1] + var52.x4[1];
2002 var69.x4[2] = var65.x4[2] + var52.x4[2];
2003 var69.x4[3] = var65.x4[3] + var52.x4[3];
2006 ((var69.x4[0] & 0xff) ==
2007 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
2008 ((orc_uint16) var69.x4[0] & 0xff));
2010 ((var69.x4[1] & 0xff) ==
2011 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
2012 ((orc_uint16) var69.x4[1] & 0xff));
2014 ((var69.x4[2] & 0xff) ==
2015 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
2016 ((orc_uint16) var69.x4[2] & 0xff));
2018 ((var69.x4[3] & 0xff) ==
2019 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
2020 ((orc_uint16) var69.x4[3] & 0xff));
2022 var71.x4[0] = var70.x4[0];
2023 var71.x4[1] = var70.x4[1];
2024 var71.x4[2] = var70.x4[2];
2025 var71.x4[3] = var70.x4[3];
2027 var72.i = var71.i & var43.i;
2029 var73.x4[0] = var69.x4[0];
2030 var73.x4[1] = var69.x4[1];
2031 var73.x4[2] = var69.x4[2];
2032 var73.x4[3] = var69.x4[3];
2034 var74.i = var73.i & var44.i;
2036 var75.i = var72.i | var74.i;
2046 _backup_video_mixer_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex)
2051 int m = ex->params[ORC_VAR_A1];
2052 orc_union32 *ORC_RESTRICT ptr0;
2053 const orc_union32 *ORC_RESTRICT ptr4;
2055 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2056 volatile orc_union32 var43;
2060 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2061 volatile orc_union32 var44;
2097 for (j = 0; j < m; j++) {
2098 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2099 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2102 var42.x4[0] = ex->params[24];
2103 var42.x4[1] = ex->params[24];
2104 var42.x4[2] = ex->params[24];
2105 var42.x4[3] = ex->params[24];
2107 var55.i = (int) 0xffffffff; /* -1 or 2.122e-314f */
2109 var43.i = (int) 0x00ffffff; /* 16777215 or 8.28905e-317f */
2111 var44.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
2113 for (i = 0; i < n; i++) {
2117 var46.i = ((orc_uint32) var45.i) >> 24;
2124 ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) <<
2125 8) | (var48 & 0xff);
2127 var50.x4[0] = (orc_uint8) var49.x4[0];
2128 var50.x4[1] = (orc_uint8) var49.x4[1];
2129 var50.x4[2] = (orc_uint8) var49.x4[2];
2130 var50.x4[3] = (orc_uint8) var49.x4[3];
2132 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
2133 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
2134 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
2135 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
2137 var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8;
2138 var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8;
2139 var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8;
2140 var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8;
2142 var53.x4[0] = (orc_uint8) var45.x4[0];
2143 var53.x4[1] = (orc_uint8) var45.x4[1];
2144 var53.x4[2] = (orc_uint8) var45.x4[2];
2145 var53.x4[3] = (orc_uint8) var45.x4[3];
2147 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
2148 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
2149 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
2150 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
2152 var56.x4[0] = (orc_uint8) var55.x4[0];
2153 var56.x4[1] = (orc_uint8) var55.x4[1];
2154 var56.x4[2] = (orc_uint8) var55.x4[2];
2155 var56.x4[3] = (orc_uint8) var55.x4[3];
2157 var57.x4[0] = var56.x4[0] - var52.x4[0];
2158 var57.x4[1] = var56.x4[1] - var52.x4[1];
2159 var57.x4[2] = var56.x4[2] - var52.x4[2];
2160 var57.x4[3] = var56.x4[3] - var52.x4[3];
2164 var59.i = ((orc_uint32) var58.i) >> 24;
2171 ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) <<
2172 8) | (var61 & 0xff);
2174 var63.x4[0] = (orc_uint8) var62.x4[0];
2175 var63.x4[1] = (orc_uint8) var62.x4[1];
2176 var63.x4[2] = (orc_uint8) var62.x4[2];
2177 var63.x4[3] = (orc_uint8) var62.x4[3];
2179 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
2180 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
2181 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
2182 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
2185 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
2186 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
2188 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
2189 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
2191 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
2192 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
2194 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
2195 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
2197 var66.x4[0] = (orc_uint8) var58.x4[0];
2198 var66.x4[1] = (orc_uint8) var58.x4[1];
2199 var66.x4[2] = (orc_uint8) var58.x4[2];
2200 var66.x4[3] = (orc_uint8) var58.x4[3];
2202 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
2203 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
2204 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
2205 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
2207 var68.x4[0] = var67.x4[0] + var54.x4[0];
2208 var68.x4[1] = var67.x4[1] + var54.x4[1];
2209 var68.x4[2] = var67.x4[2] + var54.x4[2];
2210 var68.x4[3] = var67.x4[3] + var54.x4[3];
2212 var69.x4[0] = var65.x4[0] + var52.x4[0];
2213 var69.x4[1] = var65.x4[1] + var52.x4[1];
2214 var69.x4[2] = var65.x4[2] + var52.x4[2];
2215 var69.x4[3] = var65.x4[3] + var52.x4[3];
2218 ((var69.x4[0] & 0xff) ==
2219 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
2220 ((orc_uint16) var69.x4[0] & 0xff));
2222 ((var69.x4[1] & 0xff) ==
2223 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
2224 ((orc_uint16) var69.x4[1] & 0xff));
2226 ((var69.x4[2] & 0xff) ==
2227 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
2228 ((orc_uint16) var69.x4[2] & 0xff));
2230 ((var69.x4[3] & 0xff) ==
2231 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
2232 ((orc_uint16) var69.x4[3] & 0xff));
2234 var71.x4[0] = var70.x4[0];
2235 var71.x4[1] = var70.x4[1];
2236 var71.x4[2] = var70.x4[2];
2237 var71.x4[3] = var70.x4[3];
2239 var72.i = var71.i & var43.i;
2241 var73.x4[0] = var69.x4[0];
2242 var73.x4[1] = var69.x4[1];
2243 var73.x4[2] = var69.x4[2];
2244 var73.x4[3] = var69.x4[3];
2246 var74.i = var73.i & var44.i;
2248 var75.i = var72.i | var74.i;
2257 video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
2258 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
2260 OrcExecutor _ex, *ex = &_ex;
2261 static volatile int p_inited = 0;
2262 static OrcCode *c = 0;
2263 void (*func) (OrcExecutor *);
2266 orc_once_mutex_lock ();
2271 static const orc_uint8 bc[] = {
2272 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95,
2273 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114,
2275 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0,
2276 0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 4,
2277 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8,
2278 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32,
2279 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 36, 39, 21,
2280 2, 89, 36, 36, 24, 21, 2, 95, 36, 36, 20, 21, 2, 150, 41, 32,
2281 21, 2, 89, 41, 41, 36, 115, 39, 16, 21, 2, 150, 37, 39, 21, 2,
2282 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35,
2283 34, 152, 39, 35, 21, 2, 150, 38, 39, 21, 2, 89, 38, 38, 37, 21,
2284 2, 80, 38, 38, 21, 2, 150, 40, 32, 21, 2, 89, 40, 40, 38, 21,
2285 2, 70, 40, 40, 41, 21, 2, 70, 38, 38, 36, 21, 2, 81, 40, 40,
2286 38, 21, 2, 157, 32, 40, 106, 32, 32, 18, 21, 2, 157, 39, 38, 106,
2287 39, 39, 17, 123, 32, 32, 39, 128, 0, 32, 2, 0,
2289 p = orc_program_new_from_static_bytecode (bc);
2290 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra);
2292 p = orc_program_new ();
2293 orc_program_set_2d (p);
2294 orc_program_set_name (p, "video_mixer_orc_overlay_bgra");
2295 orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra);
2296 orc_program_add_destination (p, 4, "d1");
2297 orc_program_add_source (p, 4, "s1");
2298 orc_program_add_constant (p, 4, 0xffffffff, "c1");
2299 orc_program_add_constant (p, 4, 0xff000000, "c2");
2300 orc_program_add_constant (p, 4, 0x00ffffff, "c3");
2301 orc_program_add_constant (p, 4, 0x00000018, "c4");
2302 orc_program_add_constant (p, 4, 0x00000008, "c5");
2303 orc_program_add_parameter (p, 2, "p1");
2304 orc_program_add_temporary (p, 4, "t1");
2305 orc_program_add_temporary (p, 4, "t2");
2306 orc_program_add_temporary (p, 2, "t3");
2307 orc_program_add_temporary (p, 1, "t4");
2308 orc_program_add_temporary (p, 8, "t5");
2309 orc_program_add_temporary (p, 8, "t6");
2310 orc_program_add_temporary (p, 8, "t7");
2311 orc_program_add_temporary (p, 4, "t8");
2312 orc_program_add_temporary (p, 8, "t9");
2313 orc_program_add_temporary (p, 8, "t10");
2315 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2317 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
2319 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2321 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
2323 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
2325 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1,
2327 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
2329 orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5,
2331 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1,
2332 ORC_VAR_D1, ORC_VAR_D1);
2333 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5,
2335 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1,
2337 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1,
2339 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
2341 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2343 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
2345 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2347 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
2349 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
2351 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1,
2353 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
2355 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
2357 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
2359 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
2361 orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10,
2363 orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
2365 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
2367 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1,
2369 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
2371 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1,
2373 orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2,
2375 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8,
2377 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
2381 orc_program_compile (p);
2382 c = orc_program_take_code (p);
2383 orc_program_free (p);
2386 orc_once_mutex_unlock ();
2388 ex->arrays[ORC_VAR_A2] = c;
2392 ORC_EXECUTOR_M (ex) = m;
2393 ex->arrays[ORC_VAR_D1] = d1;
2394 ex->params[ORC_VAR_D1] = d1_stride;
2395 ex->arrays[ORC_VAR_S1] = (void *) s1;
2396 ex->params[ORC_VAR_S1] = s1_stride;
2397 ex->params[ORC_VAR_P1] = p1;