2 /* autogenerated from gstvideoscaleorc.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_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
86 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
88 void video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
89 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
90 int p1, int p2, int n);
91 void video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n);
92 void video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n);
93 void video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1,
95 void video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
96 const guint8 * ORC_RESTRICT s1, int n);
97 void video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
98 const guint16 * ORC_RESTRICT s1, int n);
99 void video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
100 const guint8 * ORC_RESTRICT s1, int n);
101 void video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
102 const guint8 * ORC_RESTRICT s1, int n);
103 void video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
104 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
105 void video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
106 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
107 void video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
108 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
109 void video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
110 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
111 void video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
112 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
113 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
114 void video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
115 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
116 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
117 int p2, int p3, int p4, int n);
120 /* begin Orc C target preamble */
121 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
122 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
123 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
124 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
125 #define ORC_SB_MAX 127
126 #define ORC_SB_MIN (-1-ORC_SB_MAX)
127 #define ORC_UB_MAX 255
129 #define ORC_SW_MAX 32767
130 #define ORC_SW_MIN (-1-ORC_SW_MAX)
131 #define ORC_UW_MAX 65535
133 #define ORC_SL_MAX 2147483647
134 #define ORC_SL_MIN (-1-ORC_SL_MAX)
135 #define ORC_UL_MAX 4294967295U
137 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
138 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
139 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
140 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
141 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
142 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
143 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
144 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
145 #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))
146 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
147 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
148 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
149 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
150 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
152 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
153 #define ORC_RESTRICT restrict
154 #elif defined(__GNUC__) && __GNUC__ >= 4
155 #define ORC_RESTRICT __restrict__
160 /* end Orc C target preamble */
164 /* video_scale_orc_merge_linear_u8 */
167 video_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
168 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
172 orc_int8 *ORC_RESTRICT ptr0;
173 const orc_int8 *ORC_RESTRICT ptr4;
174 const orc_int8 *ORC_RESTRICT ptr5;
188 ptr0 = (orc_int8 *) d1;
189 ptr4 = (orc_int8 *) s1;
190 ptr5 = (orc_int8 *) s2;
195 var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
197 for (i = 0; i < n; i++) {
203 var42.i = (orc_uint8) var36;
207 var43.i = (orc_uint8) var37;
209 var44.i = var43.i - var42.i;
211 var45.i = (var44.i * var38.i) & 0xffff;
213 var46.i = var45.i + var39.i;
215 var47 = ((orc_uint16) var46.i) >> 8;
217 var40 = var47 + var41;
226 _backup_video_scale_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
230 orc_int8 *ORC_RESTRICT ptr0;
231 const orc_int8 *ORC_RESTRICT ptr4;
232 const orc_int8 *ORC_RESTRICT ptr5;
246 ptr0 = (orc_int8 *) ex->arrays[0];
247 ptr4 = (orc_int8 *) ex->arrays[4];
248 ptr5 = (orc_int8 *) ex->arrays[5];
251 var38.i = ex->params[24];
253 var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
255 for (i = 0; i < n; i++) {
261 var42.i = (orc_uint8) var36;
265 var43.i = (orc_uint8) var37;
267 var44.i = var43.i - var42.i;
269 var45.i = (var44.i * var38.i) & 0xffff;
271 var46.i = var45.i + var39.i;
273 var47 = ((orc_uint16) var46.i) >> 8;
275 var40 = var47 + var41;
283 video_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
284 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
287 OrcExecutor _ex, *ex = &_ex;
288 static volatile int p_inited = 0;
289 static OrcCode *c = 0;
290 void (*func) (OrcExecutor *);
293 orc_once_mutex_lock ();
297 p = orc_program_new ();
298 orc_program_set_name (p, "video_scale_orc_merge_linear_u8");
299 orc_program_set_backup_function (p,
300 _backup_video_scale_orc_merge_linear_u8);
301 orc_program_add_destination (p, 1, "d1");
302 orc_program_add_source (p, 1, "s1");
303 orc_program_add_source (p, 1, "s2");
304 orc_program_add_constant (p, 4, 0x00000080, "c1");
305 orc_program_add_parameter (p, 1, "p1");
306 orc_program_add_temporary (p, 2, "t1");
307 orc_program_add_temporary (p, 2, "t2");
308 orc_program_add_temporary (p, 1, "t3");
309 orc_program_add_temporary (p, 1, "t4");
311 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
313 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
315 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
317 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
319 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
321 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
323 orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
325 orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
328 orc_program_compile (p);
329 c = orc_program_take_code (p);
330 orc_program_free (p);
333 orc_once_mutex_unlock ();
335 ex->arrays[ORC_VAR_A2] = c;
339 ex->arrays[ORC_VAR_D1] = d1;
340 ex->arrays[ORC_VAR_S1] = (void *) s1;
341 ex->arrays[ORC_VAR_S2] = (void *) s2;
342 ex->params[ORC_VAR_P1] = p1;
350 /* video_scale_orc_merge_linear_u16 */
353 video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
354 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
355 int p1, int p2, int n)
358 orc_union16 *ORC_RESTRICT ptr0;
359 const orc_union16 *ORC_RESTRICT ptr4;
360 const orc_union16 *ORC_RESTRICT ptr5;
371 ptr0 = (orc_union16 *) d1;
372 ptr4 = (orc_union16 *) s1;
373 ptr5 = (orc_union16 *) s2;
380 for (i = 0; i < n; i++) {
384 var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
388 var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
390 var41.i = var39.i + var40.i;
392 var42.i = ((orc_uint32) var41.i) >> 16;
403 _backup_video_scale_orc_merge_linear_u16 (OrcExecutor * ORC_RESTRICT ex)
407 orc_union16 *ORC_RESTRICT ptr0;
408 const orc_union16 *ORC_RESTRICT ptr4;
409 const orc_union16 *ORC_RESTRICT ptr5;
420 ptr0 = (orc_union16 *) ex->arrays[0];
421 ptr4 = (orc_union16 *) ex->arrays[4];
422 ptr5 = (orc_union16 *) ex->arrays[5];
425 var35.i = ex->params[24];
427 var37.i = ex->params[25];
429 for (i = 0; i < n; i++) {
433 var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
437 var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
439 var41.i = var39.i + var40.i;
441 var42.i = ((orc_uint32) var41.i) >> 16;
451 video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
452 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
453 int p1, int p2, int n)
455 OrcExecutor _ex, *ex = &_ex;
456 static volatile int p_inited = 0;
457 static OrcCode *c = 0;
458 void (*func) (OrcExecutor *);
461 orc_once_mutex_lock ();
465 p = orc_program_new ();
466 orc_program_set_name (p, "video_scale_orc_merge_linear_u16");
467 orc_program_set_backup_function (p,
468 _backup_video_scale_orc_merge_linear_u16);
469 orc_program_add_destination (p, 2, "d1");
470 orc_program_add_source (p, 2, "s1");
471 orc_program_add_source (p, 2, "s2");
472 orc_program_add_constant (p, 4, 0x00000010, "c1");
473 orc_program_add_parameter (p, 2, "p1");
474 orc_program_add_parameter (p, 2, "p2");
475 orc_program_add_temporary (p, 4, "t1");
476 orc_program_add_temporary (p, 4, "t2");
478 orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1,
480 orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2,
482 orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
484 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
486 orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
489 orc_program_compile (p);
490 c = orc_program_take_code (p);
491 orc_program_free (p);
494 orc_once_mutex_unlock ();
496 ex->arrays[ORC_VAR_A2] = c;
500 ex->arrays[ORC_VAR_D1] = d1;
501 ex->arrays[ORC_VAR_S1] = (void *) s1;
502 ex->arrays[ORC_VAR_S2] = (void *) s2;
503 ex->params[ORC_VAR_P1] = p1;
504 ex->params[ORC_VAR_P2] = p2;
512 /* video_scale_orc_splat_u16 */
515 video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
518 orc_union16 *ORC_RESTRICT ptr0;
522 ptr0 = (orc_union16 *) d1;
527 for (i = 0; i < n; i++) {
538 _backup_video_scale_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
542 orc_union16 *ORC_RESTRICT ptr0;
546 ptr0 = (orc_union16 *) ex->arrays[0];
549 var32.i = ex->params[24];
551 for (i = 0; i < n; i++) {
561 video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
563 OrcExecutor _ex, *ex = &_ex;
564 static volatile int p_inited = 0;
565 static OrcCode *c = 0;
566 void (*func) (OrcExecutor *);
569 orc_once_mutex_lock ();
573 p = orc_program_new ();
574 orc_program_set_name (p, "video_scale_orc_splat_u16");
575 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u16);
576 orc_program_add_destination (p, 2, "d1");
577 orc_program_add_parameter (p, 2, "p1");
579 orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
582 orc_program_compile (p);
583 c = orc_program_take_code (p);
584 orc_program_free (p);
587 orc_once_mutex_unlock ();
589 ex->arrays[ORC_VAR_A2] = c;
593 ex->arrays[ORC_VAR_D1] = d1;
594 ex->params[ORC_VAR_P1] = p1;
602 /* video_scale_orc_splat_u32 */
605 video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
608 orc_union32 *ORC_RESTRICT ptr0;
612 ptr0 = (orc_union32 *) d1;
617 for (i = 0; i < n; i++) {
628 _backup_video_scale_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
632 orc_union32 *ORC_RESTRICT ptr0;
636 ptr0 = (orc_union32 *) ex->arrays[0];
639 var32.i = ex->params[24];
641 for (i = 0; i < n; i++) {
651 video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
653 OrcExecutor _ex, *ex = &_ex;
654 static volatile int p_inited = 0;
655 static OrcCode *c = 0;
656 void (*func) (OrcExecutor *);
659 orc_once_mutex_lock ();
663 p = orc_program_new ();
664 orc_program_set_name (p, "video_scale_orc_splat_u32");
665 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u32);
666 orc_program_add_destination (p, 4, "d1");
667 orc_program_add_parameter (p, 4, "p1");
669 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
672 orc_program_compile (p);
673 c = orc_program_take_code (p);
674 orc_program_free (p);
677 orc_once_mutex_unlock ();
679 ex->arrays[ORC_VAR_A2] = c;
683 ex->arrays[ORC_VAR_D1] = d1;
684 ex->params[ORC_VAR_P1] = p1;
692 /* video_scale_orc_splat_u64 */
695 video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
698 orc_union64 *ORC_RESTRICT ptr0;
702 ptr0 = (orc_union64 *) d1;
707 for (i = 0; i < n; i++) {
718 _backup_video_scale_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
722 orc_union64 *ORC_RESTRICT ptr0;
726 ptr0 = (orc_union64 *) ex->arrays[0];
730 (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
731 (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
733 for (i = 0; i < n; i++) {
743 video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
745 OrcExecutor _ex, *ex = &_ex;
746 static volatile int p_inited = 0;
747 static OrcCode *c = 0;
748 void (*func) (OrcExecutor *);
751 orc_once_mutex_lock ();
755 p = orc_program_new ();
756 orc_program_set_name (p, "video_scale_orc_splat_u64");
757 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u64);
758 orc_program_add_destination (p, 8, "d1");
759 orc_program_add_parameter_int64 (p, 8, "p1");
761 orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
764 orc_program_compile (p);
765 c = orc_program_take_code (p);
766 orc_program_free (p);
769 orc_once_mutex_unlock ();
771 ex->arrays[ORC_VAR_A2] = c;
775 ex->arrays[ORC_VAR_D1] = d1;
779 ex->params[ORC_VAR_P1] = tmp.x2[0];
780 ex->params[ORC_VAR_T1] = tmp.x2[1];
789 /* video_scale_orc_downsample_u8 */
792 video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
793 const guint8 * ORC_RESTRICT s1, int n)
796 orc_int8 *ORC_RESTRICT ptr0;
797 const orc_union16 *ORC_RESTRICT ptr4;
803 ptr0 = (orc_int8 *) d1;
804 ptr4 = (orc_union16 *) s1;
807 for (i = 0; i < n; i++) {
818 var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
827 _backup_video_scale_orc_downsample_u8 (OrcExecutor * ORC_RESTRICT ex)
831 orc_int8 *ORC_RESTRICT ptr0;
832 const orc_union16 *ORC_RESTRICT ptr4;
838 ptr0 = (orc_int8 *) ex->arrays[0];
839 ptr4 = (orc_union16 *) ex->arrays[4];
842 for (i = 0; i < n; i++) {
853 var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
861 video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
862 const guint8 * ORC_RESTRICT s1, int n)
864 OrcExecutor _ex, *ex = &_ex;
865 static volatile int p_inited = 0;
866 static OrcCode *c = 0;
867 void (*func) (OrcExecutor *);
870 orc_once_mutex_lock ();
874 p = orc_program_new ();
875 orc_program_set_name (p, "video_scale_orc_downsample_u8");
876 orc_program_set_backup_function (p,
877 _backup_video_scale_orc_downsample_u8);
878 orc_program_add_destination (p, 1, "d1");
879 orc_program_add_source (p, 2, "s1");
880 orc_program_add_temporary (p, 1, "t1");
881 orc_program_add_temporary (p, 1, "t2");
883 orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
885 orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
888 orc_program_compile (p);
889 c = orc_program_take_code (p);
890 orc_program_free (p);
893 orc_once_mutex_unlock ();
895 ex->arrays[ORC_VAR_A2] = c;
899 ex->arrays[ORC_VAR_D1] = d1;
900 ex->arrays[ORC_VAR_S1] = (void *) s1;
908 /* video_scale_orc_downsample_u16 */
911 video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
912 const guint16 * ORC_RESTRICT s1, int n)
915 orc_union16 *ORC_RESTRICT ptr0;
916 const orc_union32 *ORC_RESTRICT ptr4;
922 ptr0 = (orc_union16 *) d1;
923 ptr4 = (orc_union32 *) s1;
926 for (i = 0; i < n; i++) {
933 var36.i = _src.x2[1];
934 var37.i = _src.x2[0];
937 var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
946 _backup_video_scale_orc_downsample_u16 (OrcExecutor * ORC_RESTRICT ex)
950 orc_union16 *ORC_RESTRICT ptr0;
951 const orc_union32 *ORC_RESTRICT ptr4;
957 ptr0 = (orc_union16 *) ex->arrays[0];
958 ptr4 = (orc_union32 *) ex->arrays[4];
961 for (i = 0; i < n; i++) {
968 var36.i = _src.x2[1];
969 var37.i = _src.x2[0];
972 var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
980 video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
981 const guint16 * ORC_RESTRICT s1, int n)
983 OrcExecutor _ex, *ex = &_ex;
984 static volatile int p_inited = 0;
985 static OrcCode *c = 0;
986 void (*func) (OrcExecutor *);
989 orc_once_mutex_lock ();
993 p = orc_program_new ();
994 orc_program_set_name (p, "video_scale_orc_downsample_u16");
995 orc_program_set_backup_function (p,
996 _backup_video_scale_orc_downsample_u16);
997 orc_program_add_destination (p, 2, "d1");
998 orc_program_add_source (p, 4, "s1");
999 orc_program_add_temporary (p, 2, "t1");
1000 orc_program_add_temporary (p, 2, "t2");
1002 orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1004 orc_program_append_2 (p, "avguw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1007 orc_program_compile (p);
1008 c = orc_program_take_code (p);
1009 orc_program_free (p);
1012 orc_once_mutex_unlock ();
1014 ex->arrays[ORC_VAR_A2] = c;
1018 ex->arrays[ORC_VAR_D1] = d1;
1019 ex->arrays[ORC_VAR_S1] = (void *) s1;
1027 /* video_scale_orc_downsample_u32 */
1030 video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
1031 const guint8 * ORC_RESTRICT s1, int n)
1034 orc_union32 *ORC_RESTRICT ptr0;
1035 const orc_union64 *ORC_RESTRICT ptr4;
1041 ptr0 = (orc_union32 *) d1;
1042 ptr4 = (orc_union64 *) s1;
1045 for (i = 0; i < n; i++) {
1052 var36.i = _src.x2[1];
1053 var37.i = _src.x2[0];
1056 var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
1057 var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
1058 var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
1059 var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
1068 _backup_video_scale_orc_downsample_u32 (OrcExecutor * ORC_RESTRICT ex)
1072 orc_union32 *ORC_RESTRICT ptr0;
1073 const orc_union64 *ORC_RESTRICT ptr4;
1079 ptr0 = (orc_union32 *) ex->arrays[0];
1080 ptr4 = (orc_union64 *) ex->arrays[4];
1083 for (i = 0; i < n; i++) {
1090 var36.i = _src.x2[1];
1091 var37.i = _src.x2[0];
1094 var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
1095 var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
1096 var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
1097 var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
1105 video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
1106 const guint8 * ORC_RESTRICT s1, int n)
1108 OrcExecutor _ex, *ex = &_ex;
1109 static volatile int p_inited = 0;
1110 static OrcCode *c = 0;
1111 void (*func) (OrcExecutor *);
1114 orc_once_mutex_lock ();
1118 p = orc_program_new ();
1119 orc_program_set_name (p, "video_scale_orc_downsample_u32");
1120 orc_program_set_backup_function (p,
1121 _backup_video_scale_orc_downsample_u32);
1122 orc_program_add_destination (p, 4, "d1");
1123 orc_program_add_source (p, 8, "s1");
1124 orc_program_add_temporary (p, 4, "t1");
1125 orc_program_add_temporary (p, 4, "t2");
1127 orc_program_append_2 (p, "splitql", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1129 orc_program_append_2 (p, "avgub", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1132 orc_program_compile (p);
1133 c = orc_program_take_code (p);
1134 orc_program_free (p);
1137 orc_once_mutex_unlock ();
1139 ex->arrays[ORC_VAR_A2] = c;
1143 ex->arrays[ORC_VAR_D1] = d1;
1144 ex->arrays[ORC_VAR_S1] = (void *) s1;
1152 /* video_scale_orc_downsample_yuyv */
1155 video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
1156 const guint8 * ORC_RESTRICT s1, int n)
1159 orc_union32 *ORC_RESTRICT ptr0;
1160 const orc_union64 *ORC_RESTRICT ptr4;
1172 ptr0 = (orc_union32 *) d1;
1173 ptr4 = (orc_union64 *) s1;
1176 for (i = 0; i < n; i++) {
1182 _src.i = var38.x4[0];
1183 var40.x4[0] = _src.x2[1];
1184 var41.x4[0] = _src.x2[0];
1188 _src.i = var38.x4[1];
1189 var40.x4[1] = _src.x2[1];
1190 var41.x4[1] = _src.x2[0];
1194 _src.i = var38.x4[2];
1195 var40.x4[2] = _src.x2[1];
1196 var41.x4[2] = _src.x2[0];
1200 _src.i = var38.x4[3];
1201 var40.x4[3] = _src.x2[1];
1202 var41.x4[3] = _src.x2[0];
1207 _src.i = var40.x2[0];
1208 var42.x2[0] = _src.x2[1];
1209 var43.x2[0] = _src.x2[0];
1213 _src.i = var40.x2[1];
1214 var42.x2[1] = _src.x2[1];
1215 var43.x2[1] = _src.x2[0];
1218 var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
1219 var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
1224 var45.i = _src.x2[1];
1225 var46.i = _src.x2[0];
1228 var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1229 var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1233 _dest.x2[0] = var44.x2[0];
1234 _dest.x2[1] = var47.x2[0];
1235 var39.x2[0] = _dest.i;
1239 _dest.x2[0] = var44.x2[1];
1240 _dest.x2[1] = var47.x2[1];
1241 var39.x2[1] = _dest.i;
1251 _backup_video_scale_orc_downsample_yuyv (OrcExecutor * ORC_RESTRICT ex)
1255 orc_union32 *ORC_RESTRICT ptr0;
1256 const orc_union64 *ORC_RESTRICT ptr4;
1268 ptr0 = (orc_union32 *) ex->arrays[0];
1269 ptr4 = (orc_union64 *) ex->arrays[4];
1272 for (i = 0; i < n; i++) {
1278 _src.i = var38.x4[0];
1279 var40.x4[0] = _src.x2[1];
1280 var41.x4[0] = _src.x2[0];
1284 _src.i = var38.x4[1];
1285 var40.x4[1] = _src.x2[1];
1286 var41.x4[1] = _src.x2[0];
1290 _src.i = var38.x4[2];
1291 var40.x4[2] = _src.x2[1];
1292 var41.x4[2] = _src.x2[0];
1296 _src.i = var38.x4[3];
1297 var40.x4[3] = _src.x2[1];
1298 var41.x4[3] = _src.x2[0];
1303 _src.i = var40.x2[0];
1304 var42.x2[0] = _src.x2[1];
1305 var43.x2[0] = _src.x2[0];
1309 _src.i = var40.x2[1];
1310 var42.x2[1] = _src.x2[1];
1311 var43.x2[1] = _src.x2[0];
1314 var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
1315 var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
1320 var45.i = _src.x2[1];
1321 var46.i = _src.x2[0];
1324 var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1325 var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1329 _dest.x2[0] = var44.x2[0];
1330 _dest.x2[1] = var47.x2[0];
1331 var39.x2[0] = _dest.i;
1335 _dest.x2[0] = var44.x2[1];
1336 _dest.x2[1] = var47.x2[1];
1337 var39.x2[1] = _dest.i;
1346 video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
1347 const guint8 * ORC_RESTRICT s1, int n)
1349 OrcExecutor _ex, *ex = &_ex;
1350 static volatile int p_inited = 0;
1351 static OrcCode *c = 0;
1352 void (*func) (OrcExecutor *);
1355 orc_once_mutex_lock ();
1359 p = orc_program_new ();
1360 orc_program_set_name (p, "video_scale_orc_downsample_yuyv");
1361 orc_program_set_backup_function (p,
1362 _backup_video_scale_orc_downsample_yuyv);
1363 orc_program_add_destination (p, 4, "d1");
1364 orc_program_add_source (p, 8, "s1");
1365 orc_program_add_temporary (p, 4, "t1");
1366 orc_program_add_temporary (p, 4, "t2");
1367 orc_program_add_temporary (p, 2, "t3");
1368 orc_program_add_temporary (p, 2, "t4");
1369 orc_program_add_temporary (p, 2, "t5");
1370 orc_program_add_temporary (p, 2, "t6");
1372 orc_program_append_2 (p, "splitwb", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1374 orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T1,
1376 orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
1378 orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
1380 orc_program_append_2 (p, "avgub", 1, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
1382 orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
1385 orc_program_compile (p);
1386 c = orc_program_take_code (p);
1387 orc_program_free (p);
1390 orc_once_mutex_unlock ();
1392 ex->arrays[ORC_VAR_A2] = c;
1396 ex->arrays[ORC_VAR_D1] = d1;
1397 ex->arrays[ORC_VAR_S1] = (void *) s1;
1405 /* video_scale_orc_resample_nearest_u8 */
1408 video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1409 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1412 orc_int8 *ORC_RESTRICT ptr0;
1413 const orc_int8 *ORC_RESTRICT ptr4;
1416 ptr0 = (orc_int8 *) d1;
1417 ptr4 = (orc_int8 *) s1;
1420 for (i = 0; i < n; i++) {
1422 var32 = ptr4[(p1 + i * p2) >> 16];
1431 _backup_video_scale_orc_resample_nearest_u8 (OrcExecutor * ORC_RESTRICT ex)
1435 orc_int8 *ORC_RESTRICT ptr0;
1436 const orc_int8 *ORC_RESTRICT ptr4;
1439 ptr0 = (orc_int8 *) ex->arrays[0];
1440 ptr4 = (orc_int8 *) ex->arrays[4];
1443 for (i = 0; i < n; i++) {
1445 var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1453 video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1454 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1456 OrcExecutor _ex, *ex = &_ex;
1457 static volatile int p_inited = 0;
1458 static OrcCode *c = 0;
1459 void (*func) (OrcExecutor *);
1462 orc_once_mutex_lock ();
1466 p = orc_program_new ();
1467 orc_program_set_name (p, "video_scale_orc_resample_nearest_u8");
1468 orc_program_set_backup_function (p,
1469 _backup_video_scale_orc_resample_nearest_u8);
1470 orc_program_add_destination (p, 1, "d1");
1471 orc_program_add_source (p, 1, "s1");
1472 orc_program_add_parameter (p, 4, "p1");
1473 orc_program_add_parameter (p, 4, "p2");
1475 orc_program_append_2 (p, "ldresnearb", 0, ORC_VAR_D1, ORC_VAR_S1,
1476 ORC_VAR_P1, ORC_VAR_P2);
1478 orc_program_compile (p);
1479 c = orc_program_take_code (p);
1480 orc_program_free (p);
1483 orc_once_mutex_unlock ();
1485 ex->arrays[ORC_VAR_A2] = c;
1489 ex->arrays[ORC_VAR_D1] = d1;
1490 ex->arrays[ORC_VAR_S1] = (void *) s1;
1491 ex->params[ORC_VAR_P1] = p1;
1492 ex->params[ORC_VAR_P2] = p2;
1500 /* video_scale_orc_resample_bilinear_u8 */
1503 video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1504 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1507 orc_int8 *ORC_RESTRICT ptr0;
1508 const orc_int8 *ORC_RESTRICT ptr4;
1511 ptr0 = (orc_int8 *) d1;
1512 ptr4 = (orc_int8 *) s1;
1515 for (i = 0; i < n; i++) {
1518 int tmp = p1 + i * p2;
1520 ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1521 (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1531 _backup_video_scale_orc_resample_bilinear_u8 (OrcExecutor * ORC_RESTRICT ex)
1535 orc_int8 *ORC_RESTRICT ptr0;
1536 const orc_int8 *ORC_RESTRICT ptr4;
1539 ptr0 = (orc_int8 *) ex->arrays[0];
1540 ptr4 = (orc_int8 *) ex->arrays[4];
1543 for (i = 0; i < n; i++) {
1546 int tmp = ex->params[24] + i * ex->params[25];
1548 ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1549 (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1558 video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1559 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1561 OrcExecutor _ex, *ex = &_ex;
1562 static volatile int p_inited = 0;
1563 static OrcCode *c = 0;
1564 void (*func) (OrcExecutor *);
1567 orc_once_mutex_lock ();
1571 p = orc_program_new ();
1572 orc_program_set_name (p, "video_scale_orc_resample_bilinear_u8");
1573 orc_program_set_backup_function (p,
1574 _backup_video_scale_orc_resample_bilinear_u8);
1575 orc_program_add_destination (p, 1, "d1");
1576 orc_program_add_source (p, 1, "s1");
1577 orc_program_add_parameter (p, 4, "p1");
1578 orc_program_add_parameter (p, 4, "p2");
1580 orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1,
1581 ORC_VAR_P1, ORC_VAR_P2);
1583 orc_program_compile (p);
1584 c = orc_program_take_code (p);
1585 orc_program_free (p);
1588 orc_once_mutex_unlock ();
1590 ex->arrays[ORC_VAR_A2] = c;
1594 ex->arrays[ORC_VAR_D1] = d1;
1595 ex->arrays[ORC_VAR_S1] = (void *) s1;
1596 ex->params[ORC_VAR_P1] = p1;
1597 ex->params[ORC_VAR_P2] = p2;
1605 /* video_scale_orc_resample_nearest_u32 */
1608 video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1609 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1612 orc_union32 *ORC_RESTRICT ptr0;
1613 const orc_union32 *ORC_RESTRICT ptr4;
1616 ptr0 = (orc_union32 *) d1;
1617 ptr4 = (orc_union32 *) s1;
1620 for (i = 0; i < n; i++) {
1622 var32 = ptr4[(p1 + i * p2) >> 16];
1631 _backup_video_scale_orc_resample_nearest_u32 (OrcExecutor * ORC_RESTRICT ex)
1635 orc_union32 *ORC_RESTRICT ptr0;
1636 const orc_union32 *ORC_RESTRICT ptr4;
1639 ptr0 = (orc_union32 *) ex->arrays[0];
1640 ptr4 = (orc_union32 *) ex->arrays[4];
1643 for (i = 0; i < n; i++) {
1645 var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1653 video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1654 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1656 OrcExecutor _ex, *ex = &_ex;
1657 static volatile int p_inited = 0;
1658 static OrcCode *c = 0;
1659 void (*func) (OrcExecutor *);
1662 orc_once_mutex_lock ();
1666 p = orc_program_new ();
1667 orc_program_set_name (p, "video_scale_orc_resample_nearest_u32");
1668 orc_program_set_backup_function (p,
1669 _backup_video_scale_orc_resample_nearest_u32);
1670 orc_program_add_destination (p, 4, "d1");
1671 orc_program_add_source (p, 4, "s1");
1672 orc_program_add_parameter (p, 4, "p1");
1673 orc_program_add_parameter (p, 4, "p2");
1675 orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1,
1676 ORC_VAR_P1, ORC_VAR_P2);
1678 orc_program_compile (p);
1679 c = orc_program_take_code (p);
1680 orc_program_free (p);
1683 orc_once_mutex_unlock ();
1685 ex->arrays[ORC_VAR_A2] = c;
1689 ex->arrays[ORC_VAR_D1] = d1;
1690 ex->arrays[ORC_VAR_S1] = (void *) s1;
1691 ex->params[ORC_VAR_P1] = p1;
1692 ex->params[ORC_VAR_P2] = p2;
1700 /* video_scale_orc_resample_bilinear_u32 */
1703 video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1704 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1707 orc_union32 *ORC_RESTRICT ptr0;
1708 const orc_union32 *ORC_RESTRICT ptr4;
1711 ptr0 = (orc_union32 *) d1;
1712 ptr4 = (orc_union32 *) s1;
1715 for (i = 0; i < n; i++) {
1718 int tmp = p1 + i * p2;
1719 orc_union32 a = ptr4[tmp >> 16];
1720 orc_union32 b = ptr4[(tmp >> 16) + 1];
1722 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1723 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1725 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1726 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1728 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1729 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1731 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1732 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1742 _backup_video_scale_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
1746 orc_union32 *ORC_RESTRICT ptr0;
1747 const orc_union32 *ORC_RESTRICT ptr4;
1750 ptr0 = (orc_union32 *) ex->arrays[0];
1751 ptr4 = (orc_union32 *) ex->arrays[4];
1754 for (i = 0; i < n; i++) {
1757 int tmp = ex->params[24] + i * ex->params[25];
1758 orc_union32 a = ptr4[tmp >> 16];
1759 orc_union32 b = ptr4[(tmp >> 16) + 1];
1761 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1762 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1764 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1765 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1767 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1768 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1770 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1771 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1780 video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1781 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1783 OrcExecutor _ex, *ex = &_ex;
1784 static volatile int p_inited = 0;
1785 static OrcCode *c = 0;
1786 void (*func) (OrcExecutor *);
1789 orc_once_mutex_lock ();
1793 p = orc_program_new ();
1794 orc_program_set_name (p, "video_scale_orc_resample_bilinear_u32");
1795 orc_program_set_backup_function (p,
1796 _backup_video_scale_orc_resample_bilinear_u32);
1797 orc_program_add_destination (p, 4, "d1");
1798 orc_program_add_source (p, 4, "s1");
1799 orc_program_add_parameter (p, 4, "p1");
1800 orc_program_add_parameter (p, 4, "p2");
1802 orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
1803 ORC_VAR_P1, ORC_VAR_P2);
1805 orc_program_compile (p);
1806 c = orc_program_take_code (p);
1807 orc_program_free (p);
1810 orc_once_mutex_unlock ();
1812 ex->arrays[ORC_VAR_A2] = c;
1816 ex->arrays[ORC_VAR_D1] = d1;
1817 ex->arrays[ORC_VAR_S1] = (void *) s1;
1818 ex->params[ORC_VAR_P1] = p1;
1819 ex->params[ORC_VAR_P2] = p2;
1827 /* video_scale_orc_resample_merge_bilinear_u32 */
1830 video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1831 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
1832 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
1835 orc_union32 *ORC_RESTRICT ptr0;
1836 orc_union32 *ORC_RESTRICT ptr1;
1837 const orc_union32 *ORC_RESTRICT ptr4;
1838 const orc_union32 *ORC_RESTRICT ptr5;
1849 ptr0 = (orc_union32 *) d1;
1850 ptr1 = (orc_union32 *) d2;
1851 ptr4 = (orc_union32 *) s1;
1852 ptr5 = (orc_union32 *) s2;
1860 for (i = 0; i < n; i++) {
1863 int tmp = p2 + i * p3;
1864 orc_union32 a = ptr5[tmp >> 16];
1865 orc_union32 b = ptr5[(tmp >> 16) + 1];
1867 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1868 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1870 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1871 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1873 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1874 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1876 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1877 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1884 var41.x4[0] = (orc_uint8) var40.x4[0];
1885 var41.x4[1] = (orc_uint8) var40.x4[1];
1886 var41.x4[2] = (orc_uint8) var40.x4[2];
1887 var41.x4[3] = (orc_uint8) var40.x4[3];
1889 var42.x4[0] = (orc_uint8) var39.x4[0];
1890 var42.x4[1] = (orc_uint8) var39.x4[1];
1891 var42.x4[2] = (orc_uint8) var39.x4[2];
1892 var42.x4[3] = (orc_uint8) var39.x4[3];
1894 var43.x4[0] = var42.x4[0] - var41.x4[0];
1895 var43.x4[1] = var42.x4[1] - var41.x4[1];
1896 var43.x4[2] = var42.x4[2] - var41.x4[2];
1897 var43.x4[3] = var42.x4[3] - var41.x4[3];
1899 var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
1900 var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
1901 var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
1902 var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
1904 var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
1905 var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
1906 var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
1907 var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
1909 var38.x4[0] = var45.x4[0] + var40.x4[0];
1910 var38.x4[1] = var45.x4[1] + var40.x4[1];
1911 var38.x4[2] = var45.x4[2] + var40.x4[2];
1912 var38.x4[3] = var45.x4[3] + var40.x4[3];
1921 _backup_video_scale_orc_resample_merge_bilinear_u32 (OrcExecutor *
1926 orc_union32 *ORC_RESTRICT ptr0;
1927 orc_union32 *ORC_RESTRICT ptr1;
1928 const orc_union32 *ORC_RESTRICT ptr4;
1929 const orc_union32 *ORC_RESTRICT ptr5;
1940 ptr0 = (orc_union32 *) ex->arrays[0];
1941 ptr1 = (orc_union32 *) ex->arrays[1];
1942 ptr4 = (orc_union32 *) ex->arrays[4];
1943 ptr5 = (orc_union32 *) ex->arrays[5];
1946 var37.x4[0] = ex->params[24];
1947 var37.x4[1] = ex->params[24];
1948 var37.x4[2] = ex->params[24];
1949 var37.x4[3] = ex->params[24];
1951 for (i = 0; i < n; i++) {
1954 int tmp = ex->params[25] + i * ex->params[26];
1955 orc_union32 a = ptr5[tmp >> 16];
1956 orc_union32 b = ptr5[(tmp >> 16) + 1];
1958 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1959 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1961 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1962 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1964 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1965 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1967 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1968 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1975 var41.x4[0] = (orc_uint8) var40.x4[0];
1976 var41.x4[1] = (orc_uint8) var40.x4[1];
1977 var41.x4[2] = (orc_uint8) var40.x4[2];
1978 var41.x4[3] = (orc_uint8) var40.x4[3];
1980 var42.x4[0] = (orc_uint8) var39.x4[0];
1981 var42.x4[1] = (orc_uint8) var39.x4[1];
1982 var42.x4[2] = (orc_uint8) var39.x4[2];
1983 var42.x4[3] = (orc_uint8) var39.x4[3];
1985 var43.x4[0] = var42.x4[0] - var41.x4[0];
1986 var43.x4[1] = var42.x4[1] - var41.x4[1];
1987 var43.x4[2] = var42.x4[2] - var41.x4[2];
1988 var43.x4[3] = var42.x4[3] - var41.x4[3];
1990 var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
1991 var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
1992 var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
1993 var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
1995 var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
1996 var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
1997 var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
1998 var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
2000 var38.x4[0] = var45.x4[0] + var40.x4[0];
2001 var38.x4[1] = var45.x4[1] + var40.x4[1];
2002 var38.x4[2] = var45.x4[2] + var40.x4[2];
2003 var38.x4[3] = var45.x4[3] + var40.x4[3];
2011 video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
2012 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
2013 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
2015 OrcExecutor _ex, *ex = &_ex;
2016 static volatile int p_inited = 0;
2017 static OrcCode *c = 0;
2018 void (*func) (OrcExecutor *);
2021 orc_once_mutex_lock ();
2025 p = orc_program_new ();
2026 orc_program_set_name (p, "video_scale_orc_resample_merge_bilinear_u32");
2027 orc_program_set_backup_function (p,
2028 _backup_video_scale_orc_resample_merge_bilinear_u32);
2029 orc_program_add_destination (p, 4, "d1");
2030 orc_program_add_destination (p, 4, "d2");
2031 orc_program_add_source (p, 4, "s1");
2032 orc_program_add_source (p, 4, "s2");
2033 orc_program_add_parameter (p, 4, "p1");
2034 orc_program_add_parameter (p, 4, "p2");
2035 orc_program_add_parameter (p, 4, "p3");
2036 orc_program_add_temporary (p, 4, "t1");
2037 orc_program_add_temporary (p, 4, "t2");
2038 orc_program_add_temporary (p, 4, "t3");
2039 orc_program_add_temporary (p, 8, "t4");
2040 orc_program_add_temporary (p, 8, "t5");
2042 orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_T2, ORC_VAR_S2,
2043 ORC_VAR_P2, ORC_VAR_P3);
2044 orc_program_append_2 (p, "storel", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
2046 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2048 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1,
2050 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
2052 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
2054 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
2056 orc_program_append_2 (p, "convhwb", 2, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1,
2058 orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T1,
2061 orc_program_compile (p);
2062 c = orc_program_take_code (p);
2063 orc_program_free (p);
2066 orc_once_mutex_unlock ();
2068 ex->arrays[ORC_VAR_A2] = c;
2072 ex->arrays[ORC_VAR_D1] = d1;
2073 ex->arrays[ORC_VAR_D2] = d2;
2074 ex->arrays[ORC_VAR_S1] = (void *) s1;
2075 ex->arrays[ORC_VAR_S2] = (void *) s2;
2076 ex->params[ORC_VAR_P1] = p1;
2077 ex->params[ORC_VAR_P2] = p2;
2078 ex->params[ORC_VAR_P3] = p3;
2086 /* video_scale_orc_merge_bicubic_u8 */
2089 video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
2090 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
2091 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
2092 int p2, int p3, int p4, int n)
2095 orc_int8 *ORC_RESTRICT ptr0;
2096 const orc_int8 *ORC_RESTRICT ptr4;
2097 const orc_int8 *ORC_RESTRICT ptr5;
2098 const orc_int8 *ORC_RESTRICT ptr6;
2099 const orc_int8 *ORC_RESTRICT ptr7;
2120 ptr0 = (orc_int8 *) d1;
2121 ptr4 = (orc_int8 *) s1;
2122 ptr5 = (orc_int8 *) s2;
2123 ptr6 = (orc_int8 *) s3;
2124 ptr7 = (orc_int8 *) s4;
2135 var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
2137 for (i = 0; i < n; i++) {
2141 var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
2145 var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
2147 var46.i = var44.i + var45.i;
2151 var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
2153 var48.i = var46.i - var47.i;
2157 var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
2159 var50.i = var48.i - var49.i;
2161 var51.i = var50.i + var42.i;
2163 var52.i = var51.i >> 6;
2165 var43 = ORC_CLAMP_UB (var52.i);
2174 _backup_video_scale_orc_merge_bicubic_u8 (OrcExecutor * ORC_RESTRICT ex)
2178 orc_int8 *ORC_RESTRICT ptr0;
2179 const orc_int8 *ORC_RESTRICT ptr4;
2180 const orc_int8 *ORC_RESTRICT ptr5;
2181 const orc_int8 *ORC_RESTRICT ptr6;
2182 const orc_int8 *ORC_RESTRICT ptr7;
2203 ptr0 = (orc_int8 *) ex->arrays[0];
2204 ptr4 = (orc_int8 *) ex->arrays[4];
2205 ptr5 = (orc_int8 *) ex->arrays[5];
2206 ptr6 = (orc_int8 *) ex->arrays[6];
2207 ptr7 = (orc_int8 *) ex->arrays[7];
2210 var35 = ex->params[25];
2212 var37 = ex->params[26];
2214 var39 = ex->params[24];
2216 var41 = ex->params[27];
2218 var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
2220 for (i = 0; i < n; i++) {
2224 var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
2228 var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
2230 var46.i = var44.i + var45.i;
2234 var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
2236 var48.i = var46.i - var47.i;
2240 var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
2242 var50.i = var48.i - var49.i;
2244 var51.i = var50.i + var42.i;
2246 var52.i = var51.i >> 6;
2248 var43 = ORC_CLAMP_UB (var52.i);
2256 video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
2257 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
2258 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
2259 int p2, int p3, int p4, int n)
2261 OrcExecutor _ex, *ex = &_ex;
2262 static volatile int p_inited = 0;
2263 static OrcCode *c = 0;
2264 void (*func) (OrcExecutor *);
2267 orc_once_mutex_lock ();
2271 p = orc_program_new ();
2272 orc_program_set_name (p, "video_scale_orc_merge_bicubic_u8");
2273 orc_program_set_backup_function (p,
2274 _backup_video_scale_orc_merge_bicubic_u8);
2275 orc_program_add_destination (p, 1, "d1");
2276 orc_program_add_source (p, 1, "s1");
2277 orc_program_add_source (p, 1, "s2");
2278 orc_program_add_source (p, 1, "s3");
2279 orc_program_add_source (p, 1, "s4");
2280 orc_program_add_constant (p, 4, 0x00000020, "c1");
2281 orc_program_add_constant (p, 4, 0x00000006, "c2");
2282 orc_program_add_parameter (p, 4, "p1");
2283 orc_program_add_parameter (p, 4, "p2");
2284 orc_program_add_parameter (p, 4, "p3");
2285 orc_program_add_parameter (p, 4, "p4");
2286 orc_program_add_temporary (p, 2, "t1");
2287 orc_program_add_temporary (p, 2, "t2");
2289 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_P2,
2291 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_P3,
2293 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2295 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1,
2297 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2299 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_P4,
2301 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2303 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
2305 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
2307 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
2308 ORC_VAR_D1, ORC_VAR_D1);
2310 orc_program_compile (p);
2311 c = orc_program_take_code (p);
2312 orc_program_free (p);
2315 orc_once_mutex_unlock ();
2317 ex->arrays[ORC_VAR_A2] = c;
2321 ex->arrays[ORC_VAR_D1] = d1;
2322 ex->arrays[ORC_VAR_S1] = (void *) s1;
2323 ex->arrays[ORC_VAR_S2] = (void *) s2;
2324 ex->arrays[ORC_VAR_S3] = (void *) s3;
2325 ex->arrays[ORC_VAR_S4] = (void *) s4;
2326 ex->params[ORC_VAR_P1] = p1;
2327 ex->params[ORC_VAR_P2] = p2;
2328 ex->params[ORC_VAR_P3] = p3;
2329 ex->params[ORC_VAR_P4] = p4;