2 /* autogenerated from tvtime.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 deinterlace_line_vfir (guint8 * ORC_RESTRICT d1,
86 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
87 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
88 const guint8 * ORC_RESTRICT s5, int n);
89 void deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
90 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
91 void deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
92 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
93 const guint8 * ORC_RESTRICT s3, int n);
94 void deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
95 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
96 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
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 /* deinterlace_line_vfir */
147 deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
148 const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
149 const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n)
152 orc_int8 *ORC_RESTRICT ptr0;
153 const orc_int8 *ORC_RESTRICT ptr4;
154 const orc_int8 *ORC_RESTRICT ptr5;
155 const orc_int8 *ORC_RESTRICT ptr6;
156 const orc_int8 *ORC_RESTRICT ptr7;
157 const orc_int8 *ORC_RESTRICT ptr8;
179 ptr0 = (orc_int8 *) d1;
180 ptr4 = (orc_int8 *) s1;
181 ptr5 = (orc_int8 *) s2;
182 ptr6 = (orc_int8 *) s3;
183 ptr7 = (orc_int8 *) s4;
184 ptr8 = (orc_int8 *) s5;
187 var40.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
189 for (i = 0; i < n; i++) {
193 var42.i = (orc_uint8) var35;
197 var43.i = (orc_uint8) var36;
199 var44.i = var42.i + var43.i;
203 var45.i = (orc_uint8) var37;
207 var46.i = (orc_uint8) var38;
209 var47.i = var45.i + var46.i;
211 var48.i = var47.i << 2;
215 var49.i = (orc_uint8) var39;
217 var50.i = var49.i << 1;
219 var51.i = var48.i - var44.i;
221 var52.i = var51.i + var50.i;
223 var53.i = var52.i + var40.i;
225 var54.i = var53.i >> 3;
227 var41 = ORC_CLAMP_UB (var54.i);
236 _backup_deinterlace_line_vfir (OrcExecutor * ORC_RESTRICT ex)
240 orc_int8 *ORC_RESTRICT ptr0;
241 const orc_int8 *ORC_RESTRICT ptr4;
242 const orc_int8 *ORC_RESTRICT ptr5;
243 const orc_int8 *ORC_RESTRICT ptr6;
244 const orc_int8 *ORC_RESTRICT ptr7;
245 const orc_int8 *ORC_RESTRICT ptr8;
267 ptr0 = (orc_int8 *) ex->arrays[0];
268 ptr4 = (orc_int8 *) ex->arrays[4];
269 ptr5 = (orc_int8 *) ex->arrays[5];
270 ptr6 = (orc_int8 *) ex->arrays[6];
271 ptr7 = (orc_int8 *) ex->arrays[7];
272 ptr8 = (orc_int8 *) ex->arrays[8];
275 var40.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
277 for (i = 0; i < n; i++) {
281 var42.i = (orc_uint8) var35;
285 var43.i = (orc_uint8) var36;
287 var44.i = var42.i + var43.i;
291 var45.i = (orc_uint8) var37;
295 var46.i = (orc_uint8) var38;
297 var47.i = var45.i + var46.i;
299 var48.i = var47.i << 2;
303 var49.i = (orc_uint8) var39;
305 var50.i = var49.i << 1;
307 var51.i = var48.i - var44.i;
309 var52.i = var51.i + var50.i;
311 var53.i = var52.i + var40.i;
313 var54.i = var53.i >> 3;
315 var41 = ORC_CLAMP_UB (var54.i);
323 deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
324 const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
325 const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n)
327 OrcExecutor _ex, *ex = &_ex;
328 static volatile int p_inited = 0;
329 static OrcCode *c = 0;
330 void (*func) (OrcExecutor *);
333 orc_once_mutex_lock ();
337 p = orc_program_new ();
338 orc_program_set_name (p, "deinterlace_line_vfir");
339 orc_program_set_backup_function (p, _backup_deinterlace_line_vfir);
340 orc_program_add_destination (p, 1, "d1");
341 orc_program_add_source (p, 1, "s1");
342 orc_program_add_source (p, 1, "s2");
343 orc_program_add_source (p, 1, "s3");
344 orc_program_add_source (p, 1, "s4");
345 orc_program_add_source (p, 1, "s5");
346 orc_program_add_constant (p, 4, 0x00000002, "c1");
347 orc_program_add_constant (p, 4, 0x00000001, "c2");
348 orc_program_add_constant (p, 4, 0x00000004, "c3");
349 orc_program_add_constant (p, 4, 0x00000003, "c4");
350 orc_program_add_temporary (p, 2, "t1");
351 orc_program_add_temporary (p, 2, "t2");
352 orc_program_add_temporary (p, 2, "t3");
354 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
356 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1,
358 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
360 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
362 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1,
364 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
366 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
368 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
370 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
372 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
374 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
376 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3,
378 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
380 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
381 ORC_VAR_D1, ORC_VAR_D1);
383 orc_program_compile (p);
384 c = orc_program_take_code (p);
385 orc_program_free (p);
388 orc_once_mutex_unlock ();
390 ex->arrays[ORC_VAR_A2] = c;
394 ex->arrays[ORC_VAR_D1] = d1;
395 ex->arrays[ORC_VAR_S1] = (void *) s1;
396 ex->arrays[ORC_VAR_S2] = (void *) s2;
397 ex->arrays[ORC_VAR_S3] = (void *) s3;
398 ex->arrays[ORC_VAR_S4] = (void *) s4;
399 ex->arrays[ORC_VAR_S5] = (void *) s5;
407 /* deinterlace_line_linear */
410 deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
411 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
414 orc_int8 *ORC_RESTRICT ptr0;
415 const orc_int8 *ORC_RESTRICT ptr4;
416 const orc_int8 *ORC_RESTRICT ptr5;
421 ptr0 = (orc_int8 *) d1;
422 ptr4 = (orc_int8 *) s1;
423 ptr5 = (orc_int8 *) s2;
426 for (i = 0; i < n; i++) {
432 var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
441 _backup_deinterlace_line_linear (OrcExecutor * ORC_RESTRICT ex)
445 orc_int8 *ORC_RESTRICT ptr0;
446 const orc_int8 *ORC_RESTRICT ptr4;
447 const orc_int8 *ORC_RESTRICT ptr5;
452 ptr0 = (orc_int8 *) ex->arrays[0];
453 ptr4 = (orc_int8 *) ex->arrays[4];
454 ptr5 = (orc_int8 *) ex->arrays[5];
457 for (i = 0; i < n; i++) {
463 var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
471 deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
472 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
474 OrcExecutor _ex, *ex = &_ex;
475 static volatile int p_inited = 0;
476 static OrcCode *c = 0;
477 void (*func) (OrcExecutor *);
480 orc_once_mutex_lock ();
484 p = orc_program_new ();
485 orc_program_set_name (p, "deinterlace_line_linear");
486 orc_program_set_backup_function (p, _backup_deinterlace_line_linear);
487 orc_program_add_destination (p, 1, "d1");
488 orc_program_add_source (p, 1, "s1");
489 orc_program_add_source (p, 1, "s2");
491 orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
494 orc_program_compile (p);
495 c = orc_program_take_code (p);
496 orc_program_free (p);
499 orc_once_mutex_unlock ();
501 ex->arrays[ORC_VAR_A2] = c;
505 ex->arrays[ORC_VAR_D1] = d1;
506 ex->arrays[ORC_VAR_S1] = (void *) s1;
507 ex->arrays[ORC_VAR_S2] = (void *) s2;
515 /* deinterlace_line_linear_blend */
518 deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
519 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
520 const guint8 * ORC_RESTRICT s3, int n)
523 orc_int8 *ORC_RESTRICT ptr0;
524 const orc_int8 *ORC_RESTRICT ptr4;
525 const orc_int8 *ORC_RESTRICT ptr5;
526 const orc_int8 *ORC_RESTRICT ptr6;
541 ptr0 = (orc_int8 *) d1;
542 ptr4 = (orc_int8 *) s1;
543 ptr5 = (orc_int8 *) s2;
544 ptr6 = (orc_int8 *) s3;
547 var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
549 for (i = 0; i < n; i++) {
553 var40.i = (orc_uint8) var35;
557 var41.i = (orc_uint8) var36;
561 var42.i = (orc_uint8) var37;
563 var43.i = var40.i + var41.i;
565 var44.i = var42.i + var42.i;
567 var45.i = var43.i + var44.i;
569 var46.i = var45.i + var38.i;
571 var47.i = var46.i >> 2;
573 var39 = ORC_CLAMP_UB (var47.i);
582 _backup_deinterlace_line_linear_blend (OrcExecutor * ORC_RESTRICT ex)
586 orc_int8 *ORC_RESTRICT ptr0;
587 const orc_int8 *ORC_RESTRICT ptr4;
588 const orc_int8 *ORC_RESTRICT ptr5;
589 const orc_int8 *ORC_RESTRICT ptr6;
604 ptr0 = (orc_int8 *) ex->arrays[0];
605 ptr4 = (orc_int8 *) ex->arrays[4];
606 ptr5 = (orc_int8 *) ex->arrays[5];
607 ptr6 = (orc_int8 *) ex->arrays[6];
610 var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
612 for (i = 0; i < n; i++) {
616 var40.i = (orc_uint8) var35;
620 var41.i = (orc_uint8) var36;
624 var42.i = (orc_uint8) var37;
626 var43.i = var40.i + var41.i;
628 var44.i = var42.i + var42.i;
630 var45.i = var43.i + var44.i;
632 var46.i = var45.i + var38.i;
634 var47.i = var46.i >> 2;
636 var39 = ORC_CLAMP_UB (var47.i);
644 deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
645 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
646 const guint8 * ORC_RESTRICT s3, int n)
648 OrcExecutor _ex, *ex = &_ex;
649 static volatile int p_inited = 0;
650 static OrcCode *c = 0;
651 void (*func) (OrcExecutor *);
654 orc_once_mutex_lock ();
658 p = orc_program_new ();
659 orc_program_set_name (p, "deinterlace_line_linear_blend");
660 orc_program_set_backup_function (p,
661 _backup_deinterlace_line_linear_blend);
662 orc_program_add_destination (p, 1, "d1");
663 orc_program_add_source (p, 1, "s1");
664 orc_program_add_source (p, 1, "s2");
665 orc_program_add_source (p, 1, "s3");
666 orc_program_add_constant (p, 4, 0x00000002, "c1");
667 orc_program_add_temporary (p, 2, "t1");
668 orc_program_add_temporary (p, 2, "t2");
669 orc_program_add_temporary (p, 2, "t3");
671 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
673 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
675 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
677 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
679 orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3,
681 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
683 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
685 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
687 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
688 ORC_VAR_D1, ORC_VAR_D1);
690 orc_program_compile (p);
691 c = orc_program_take_code (p);
692 orc_program_free (p);
695 orc_once_mutex_unlock ();
697 ex->arrays[ORC_VAR_A2] = c;
701 ex->arrays[ORC_VAR_D1] = d1;
702 ex->arrays[ORC_VAR_S1] = (void *) s1;
703 ex->arrays[ORC_VAR_S2] = (void *) s2;
704 ex->arrays[ORC_VAR_S3] = (void *) s3;
712 /* deinterlace_line_greedy */
715 deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
716 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
717 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
721 orc_int8 *ORC_RESTRICT ptr0;
722 const orc_int8 *ORC_RESTRICT ptr4;
723 const orc_int8 *ORC_RESTRICT ptr5;
724 const orc_int8 *ORC_RESTRICT ptr6;
725 const orc_int8 *ORC_RESTRICT ptr7;
754 ptr0 = (orc_int8 *) d1;
755 ptr4 = (orc_int8 *) s1;
756 ptr5 = (orc_int8 *) s2;
757 ptr6 = (orc_int8 *) s3;
758 ptr7 = (orc_int8 *) s4;
761 var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */
763 var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */
769 for (i = 0; i < n; i++) {
779 var53 = ((orc_uint8) var52 + (orc_uint8) var51 + 1) >> 1;
781 var54 = ORC_MAX ((orc_uint8) var49, (orc_uint8) var53);
783 var55 = ORC_MIN ((orc_uint8) var49, (orc_uint8) var53);
785 var56 = var54 - var55;
787 var57 = ORC_MAX ((orc_uint8) var50, (orc_uint8) var53);
789 var58 = ORC_MIN ((orc_uint8) var50, (orc_uint8) var53);
791 var59 = var57 - var58;
793 var60 = var56 ^ var44;
795 var61 = var59 ^ var45;
797 var62 = (var60 > var61) ? (~0) : 0;
799 var63 = var50 & var62;
801 var64 = (~var62) & var49;
803 var65 = var63 | var64;
805 var66 = ORC_MAX ((orc_uint8) var52, (orc_uint8) var51);
807 var67 = ORC_MIN ((orc_uint8) var52, (orc_uint8) var51);
809 var68 = ORC_CLAMP_UB ((orc_uint8) var66 + (orc_uint8) var46);
811 var69 = ORC_CLAMP_UB ((orc_uint8) var67 - (orc_uint8) var47);
813 var70 = ORC_MIN ((orc_uint8) var65, (orc_uint8) var68);
815 var48 = ORC_MAX ((orc_uint8) var70, (orc_uint8) var69);
824 _backup_deinterlace_line_greedy (OrcExecutor * ORC_RESTRICT ex)
828 orc_int8 *ORC_RESTRICT ptr0;
829 const orc_int8 *ORC_RESTRICT ptr4;
830 const orc_int8 *ORC_RESTRICT ptr5;
831 const orc_int8 *ORC_RESTRICT ptr6;
832 const orc_int8 *ORC_RESTRICT ptr7;
861 ptr0 = (orc_int8 *) ex->arrays[0];
862 ptr4 = (orc_int8 *) ex->arrays[4];
863 ptr5 = (orc_int8 *) ex->arrays[5];
864 ptr6 = (orc_int8 *) ex->arrays[6];
865 ptr7 = (orc_int8 *) ex->arrays[7];
868 var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */
870 var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */
872 var46 = ex->params[24];
874 var47 = ex->params[24];
876 for (i = 0; i < n; i++) {
886 var53 = ((orc_uint8) var52 + (orc_uint8) var51 + 1) >> 1;
888 var54 = ORC_MAX ((orc_uint8) var49, (orc_uint8) var53);
890 var55 = ORC_MIN ((orc_uint8) var49, (orc_uint8) var53);
892 var56 = var54 - var55;
894 var57 = ORC_MAX ((orc_uint8) var50, (orc_uint8) var53);
896 var58 = ORC_MIN ((orc_uint8) var50, (orc_uint8) var53);
898 var59 = var57 - var58;
900 var60 = var56 ^ var44;
902 var61 = var59 ^ var45;
904 var62 = (var60 > var61) ? (~0) : 0;
906 var63 = var50 & var62;
908 var64 = (~var62) & var49;
910 var65 = var63 | var64;
912 var66 = ORC_MAX ((orc_uint8) var52, (orc_uint8) var51);
914 var67 = ORC_MIN ((orc_uint8) var52, (orc_uint8) var51);
916 var68 = ORC_CLAMP_UB ((orc_uint8) var66 + (orc_uint8) var46);
918 var69 = ORC_CLAMP_UB ((orc_uint8) var67 - (orc_uint8) var47);
920 var70 = ORC_MIN ((orc_uint8) var65, (orc_uint8) var68);
922 var48 = ORC_MAX ((orc_uint8) var70, (orc_uint8) var69);
930 deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
931 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
932 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
935 OrcExecutor _ex, *ex = &_ex;
936 static volatile int p_inited = 0;
937 static OrcCode *c = 0;
938 void (*func) (OrcExecutor *);
941 orc_once_mutex_lock ();
945 p = orc_program_new ();
946 orc_program_set_name (p, "deinterlace_line_greedy");
947 orc_program_set_backup_function (p, _backup_deinterlace_line_greedy);
948 orc_program_add_destination (p, 1, "d1");
949 orc_program_add_source (p, 1, "s1");
950 orc_program_add_source (p, 1, "s2");
951 orc_program_add_source (p, 1, "s3");
952 orc_program_add_source (p, 1, "s4");
953 orc_program_add_constant (p, 4, 0x00000080, "c1");
954 orc_program_add_parameter (p, 1, "p1");
955 orc_program_add_temporary (p, 1, "t1");
956 orc_program_add_temporary (p, 1, "t2");
957 orc_program_add_temporary (p, 1, "t3");
958 orc_program_add_temporary (p, 1, "t4");
959 orc_program_add_temporary (p, 1, "t5");
960 orc_program_add_temporary (p, 1, "t6");
961 orc_program_add_temporary (p, 1, "t7");
962 orc_program_add_temporary (p, 1, "t8");
963 orc_program_add_temporary (p, 1, "t9");
964 orc_program_add_temporary (p, 1, "t10");
965 orc_program_add_temporary (p, 1, "t11");
966 orc_program_add_temporary (p, 1, "t12");
968 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
970 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
972 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
974 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1,
976 orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T3,
978 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_T5,
980 orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_T5,
982 orc_program_append_2 (p, "subb", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9,
984 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T5,
986 orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T2, ORC_VAR_T5,
988 orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T9,
990 orc_program_append_2 (p, "xorb", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C1,
992 orc_program_append_2 (p, "xorb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
994 orc_program_append_2 (p, "cmpgtsb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_T7,
996 orc_program_append_2 (p, "andb", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T9,
998 orc_program_append_2 (p, "andnb", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
1000 orc_program_append_2 (p, "orb", 0, ORC_VAR_T10, ORC_VAR_T8, ORC_VAR_T9,
1002 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T12, ORC_VAR_T4, ORC_VAR_T3,
1004 orc_program_append_2 (p, "minub", 0, ORC_VAR_T11, ORC_VAR_T4, ORC_VAR_T3,
1006 orc_program_append_2 (p, "addusb", 0, ORC_VAR_T12, ORC_VAR_T12,
1007 ORC_VAR_P1, ORC_VAR_D1);
1008 orc_program_append_2 (p, "subusb", 0, ORC_VAR_T11, ORC_VAR_T11,
1009 ORC_VAR_P1, ORC_VAR_D1);
1010 orc_program_append_2 (p, "minub", 0, ORC_VAR_T10, ORC_VAR_T10,
1011 ORC_VAR_T12, ORC_VAR_D1);
1012 orc_program_append_2 (p, "maxub", 0, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_T11,
1015 orc_program_compile (p);
1016 c = orc_program_take_code (p);
1017 orc_program_free (p);
1020 orc_once_mutex_unlock ();
1022 ex->arrays[ORC_VAR_A2] = c;
1026 ex->arrays[ORC_VAR_D1] = d1;
1027 ex->arrays[ORC_VAR_S1] = (void *) s1;
1028 ex->arrays[ORC_VAR_S2] = (void *) s2;
1029 ex->arrays[ORC_VAR_S3] = (void *) s3;
1030 ex->arrays[ORC_VAR_S4] = (void *) s4;
1031 ex->params[ORC_VAR_P1] = p1;