diff --git a/meson.build b/meson.build index 2b32ed9778..c4aefb5973 100644 --- a/meson.build +++ b/meson.build @@ -173,7 +173,7 @@ endif orc_option = get_option('orc') # There is a check below to keep this in sync with subprojects/gst-plugins-base/meson.build -orc_req = '>= 0.4.24' +orc_req = '>= 0.4.34' orc_source_option = get_option('orc-source') orc_subproject = disabler() if orc_option.allowed() diff --git a/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.c b/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.c index 093cfeb2c7..950a5fc709 100644 --- a/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.c +++ b/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -186,6 +189,7 @@ void bayer8to16_orc_reorder (guint8 * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -221,6 +225,8 @@ void bayer8to16_orc_reorder (guint8 * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -375,65 +381,61 @@ bayer_orc_horiz_upsample_unaligned (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114, - 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 117, 110, 97, - 108, - 105, 103, 110, 101, 100, 11, 2, 2, 11, 2, 2, 12, 2, 2, 14, 4, - 1, 0, 0, 0, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 199, 34, - 33, 4, 83, 32, 4, 16, 199, 36, 35, 32, 39, 36, 34, 36, 196, 0, - 34, 36, 39, 33, 33, 35, 196, 1, 33, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_bayer_orc_horiz_upsample_unaligned); + static const orc_uint8 bc[] = { + 1, 9, 34, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114, + 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 117, 110, 97, + 108, + 105, 103, 110, 101, 100, 11, 2, 2, 11, 2, 2, 12, 2, 2, 14, 4, + 1, 0, 0, 0, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 199, 34, + 33, 4, 83, 32, 4, 16, 199, 36, 35, 32, 39, 36, 34, 36, 196, 0, + 34, 36, 39, 33, 33, 35, 196, 1, 33, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_bayer_orc_horiz_upsample_unaligned); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_horiz_upsample_unaligned"); - orc_program_set_backup_function (p, - _backup_bayer_orc_horiz_upsample_unaligned); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00000001, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 1, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_horiz_upsample_unaligned"); + orc_program_set_backup_function (p, + _backup_bayer_orc_horiz_upsample_unaligned); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00000001, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -611,67 +613,63 @@ bayer_orc_horiz_upsample (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114, - 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 11, 2, 2, 11, 2, - 2, 12, 2, 2, 14, 4, 255, 255, 255, 255, 14, 4, 1, 0, 0, 0, - 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 83, 32, 4, 16, 189, 33, - 32, 199, 35, 34, 4, 83, 32, 4, 17, 188, 36, 32, 39, 36, 34, 36, - 196, 0, 34, 36, 39, 33, 33, 35, 196, 1, 33, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_horiz_upsample); + static const orc_uint8 bc[] = { + 1, 9, 24, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114, + 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 11, 2, 2, 11, 2, + 2, 12, 2, 2, 14, 4, 255, 255, 255, 255, 14, 4, 1, 0, 0, 0, + 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 83, 32, 4, 16, 189, 33, + 32, 199, 35, 34, 4, 83, 32, 4, 17, 188, 36, 32, 39, 36, 34, 36, + 196, 0, 34, 36, 39, 33, 33, 35, 196, 1, 33, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_horiz_upsample); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_horiz_upsample"); - orc_program_set_backup_function (p, _backup_bayer_orc_horiz_upsample); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0x00000001, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 1, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_horiz_upsample"); + orc_program_set_backup_function (p, _backup_bayer_orc_horiz_upsample); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0x00000001, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); - orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_C2, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T5, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -969,77 +967,73 @@ bayer_orc_merge_bg_bgra (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 98, 103, 95, 98, 103, 114, 97, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, - 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 33, - 6, 35, 21, 1, 196, 32, 34, 18, 21, 1, 195, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 98, 103, 95, 98, 103, 114, 97, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, + 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 33, + 6, 35, 21, 1, 196, 32, 34, 18, 21, 1, 195, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_bgra); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_bgra); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_bg_bgra"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_bgra); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x0000ff00, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_bg_bgra"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_bgra); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x0000ff00, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1341,77 +1335,73 @@ bayer_orc_merge_gr_bgra (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 103, 114, 95, 98, 103, 114, 97, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, - 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 33, - 34, 35, 21, 1, 196, 32, 7, 18, 21, 1, 195, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 103, 114, 95, 98, 103, 114, 97, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, + 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 33, + 34, 35, 21, 1, 196, 32, 7, 18, 21, 1, 195, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_bgra); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_bgra); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_gr_bgra"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_bgra); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x0000ff00, "c1"); - orc_program_add_constant (p, 2, 0x000000ff, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_gr_bgra"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_bgra); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x0000ff00, "c1"); + orc_program_add_constant (p, 2, 0x000000ff, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1713,77 +1703,73 @@ bayer_orc_merge_bg_abgr (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 98, 103, 95, 97, 98, 103, 114, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, - 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 18, 6, 21, 1, 196, 33, 35, 34, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 98, 103, 95, 97, 98, 103, 114, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, + 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 18, 6, 21, 1, 196, 33, 35, 34, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_abgr); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_abgr); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_bg_abgr"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_abgr); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x0000ff00, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_bg_abgr"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_abgr); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x0000ff00, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2085,77 +2071,73 @@ bayer_orc_merge_gr_abgr (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 103, 114, 95, 97, 98, 103, 114, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, - 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 18, 34, 21, 1, 196, 33, 35, 7, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 103, 114, 95, 97, 98, 103, 114, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, + 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 18, 34, 21, 1, 196, 33, 35, 7, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_abgr); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_abgr); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_gr_abgr"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_abgr); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x0000ff00, "c1"); - orc_program_add_constant (p, 2, 0x000000ff, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_gr_abgr"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_abgr); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x0000ff00, "c1"); + orc_program_add_constant (p, 2, 0x000000ff, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2457,77 +2439,73 @@ bayer_orc_merge_bg_rgba (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 98, 103, 95, 114, 103, 98, 97, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, - 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 34, 35, 21, 1, 196, 33, 6, 18, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 98, 103, 95, 114, 103, 98, 97, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, + 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 34, 35, 21, 1, 196, 33, 6, 18, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_rgba); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_rgba); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_bg_rgba"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_rgba); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x0000ff00, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_bg_rgba"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_rgba); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x0000ff00, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2829,77 +2807,73 @@ bayer_orc_merge_gr_rgba (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 103, 114, 95, 114, 103, 98, 97, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, - 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 7, 35, 21, 1, 196, 33, 34, 18, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 103, 114, 95, 114, 103, 98, 97, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, + 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 7, 35, 21, 1, 196, 33, 34, 18, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_rgba); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_rgba); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_gr_rgba"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_rgba); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x0000ff00, "c1"); - orc_program_add_constant (p, 2, 0x000000ff, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_gr_rgba"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_rgba); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x0000ff00, "c1"); + orc_program_add_constant (p, 2, 0x000000ff, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S4, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3201,77 +3175,73 @@ bayer_orc_merge_bg_argb (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 98, 103, 95, 97, 114, 103, 98, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, - 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 18, 34, 21, 1, 196, 33, 35, 6, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 98, 103, 95, 97, 114, 103, 98, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 255, 0, 0, 0, 14, 2, 0, 255, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 5, + 9, 21, 1, 39, 35, 4, 8, 79, 36, 7, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 18, 34, 21, 1, 196, 33, 35, 6, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_argb); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_argb); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_bg_argb"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_argb); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x0000ff00, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_bg_argb"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_bg_argb); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x0000ff00, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3573,77 +3543,73 @@ bayer_orc_merge_gr_argb (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 103, 114, 95, 97, 114, 103, 98, 11, 8, 8, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, - 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, - 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, - 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, - 18, 7, 21, 1, 196, 33, 35, 34, 21, 1, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 103, 114, 95, 97, 114, 103, 98, 11, 8, 8, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 2, 0, 255, 0, 0, 14, 2, 255, 0, 0, 0, 14, 1, 255, 0, 0, + 0, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 21, 1, 39, 34, 4, + 8, 21, 1, 39, 35, 5, 9, 79, 36, 6, 21, 1, 39, 35, 35, 36, + 73, 35, 35, 16, 73, 36, 36, 17, 92, 35, 36, 35, 21, 1, 196, 32, + 18, 7, 21, 1, 196, 33, 35, 34, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_argb); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_argb); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer_orc_merge_gr_argb"); - orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_argb); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_constant (p, 2, 0x0000ff00, "c1"); - orc_program_add_constant (p, 2, 0x000000ff, "c2"); - orc_program_add_constant (p, 1, 0x000000ff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer_orc_merge_gr_argb"); + orc_program_set_backup_function (p, _backup_bayer_orc_merge_gr_argb); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_constant (p, 2, 0x0000ff00, "c1"); + orc_program_add_constant (p, 2, 0x000000ff, "c2"); + orc_program_add_constant (p, 1, 0x000000ff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orw", 0, ORC_VAR_T4, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3809,65 +3775,59 @@ bayer16_orc_horiz_upsample_le (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 104, - 111, 114, 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 108, - 101, - 11, 4, 4, 11, 4, 4, 12, 4, 4, 14, 4, 1, 0, 0, 0, 20, - 4, 20, 2, 20, 2, 20, 2, 20, 2, 198, 34, 33, 4, 114, 32, 4, - 16, 198, 36, 35, 32, 76, 36, 34, 36, 195, 0, 34, 36, 76, 33, 33, - 35, 195, 1, 33, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_bayer16_orc_horiz_upsample_le); + static const orc_uint8 bc[] = { + 1, 9, 29, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 104, + 111, 114, 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 108, + 101, + 11, 4, 4, 11, 4, 4, 12, 4, 4, 14, 4, 1, 0, 0, 0, 20, + 4, 20, 2, 20, 2, 20, 2, 20, 2, 198, 34, 33, 4, 114, 32, 4, + 16, 198, 36, 35, 32, 76, 36, 34, 36, 195, 0, 34, 36, 76, 33, 33, + 35, 195, 1, 33, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_horiz_upsample_le); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_horiz_upsample_le"); - orc_program_set_backup_function (p, - _backup_bayer16_orc_horiz_upsample_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000001, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_horiz_upsample_le"); + orc_program_set_backup_function (p, _backup_bayer16_orc_horiz_upsample_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000001, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadoffl", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadoffl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4053,74 +4013,68 @@ bayer16_orc_horiz_upsample_be (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 104, - 111, 114, 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 98, - 101, - 11, 4, 4, 11, 4, 4, 12, 4, 4, 14, 4, 1, 0, 0, 0, 20, - 4, 20, 2, 20, 2, 20, 2, 20, 2, 198, 34, 33, 4, 183, 33, 33, - 183, 34, 34, 114, 32, 4, 16, 198, 36, 35, 32, 183, 35, 35, 183, 36, - 36, 76, 36, 34, 36, 195, 0, 34, 36, 76, 33, 33, 35, 195, 1, 33, - 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_bayer16_orc_horiz_upsample_be); + static const orc_uint8 bc[] = { + 1, 9, 29, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 104, + 111, 114, 105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 98, + 101, + 11, 4, 4, 11, 4, 4, 12, 4, 4, 14, 4, 1, 0, 0, 0, 20, + 4, 20, 2, 20, 2, 20, 2, 20, 2, 198, 34, 33, 4, 183, 33, 33, + 183, 34, 34, 114, 32, 4, 16, 198, 36, 35, 32, 183, 35, 35, 183, 36, + 36, 76, 36, 34, 36, 195, 0, 34, 36, 76, 33, 33, 35, 195, 1, 33, + 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_horiz_upsample_be); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_horiz_upsample_be"); - orc_program_set_backup_function (p, - _backup_bayer16_orc_horiz_upsample_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000001, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_horiz_upsample_be"); + orc_program_set_backup_function (p, _backup_bayer16_orc_horiz_upsample_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000001, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadoffl", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadoffl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4410,73 +4364,69 @@ bayer16_orc_merge_bg_bgra (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 98, 103, 95, 98, 103, 114, 97, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 6, 33, 21, 1, 195, 1, 32, 18, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_bgra); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 98, 103, 95, 98, 103, 114, 97, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 6, 33, 21, 1, 195, 1, 32, 18, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_bgra); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_bg_bgra"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_bgra); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0x0000ffff, "c1"); - orc_program_add_constant (p, 4, 0xffff0000, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_bg_bgra"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_bgra); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0x0000ffff, "c1"); + orc_program_add_constant (p, 4, 0xffff0000, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_S3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_S3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4771,73 +4721,69 @@ bayer16_orc_merge_gr_bgra (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 103, 114, 95, 98, 103, 114, 97, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 32, 33, 21, 1, 195, 1, 7, 18, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_bgra); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 103, 114, 95, 98, 103, 114, 97, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 32, 33, 21, 1, 195, 1, 7, 18, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_bgra); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_gr_bgra"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_bgra); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0xffff0000, "c1"); - orc_program_add_constant (p, 4, 0x0000ffff, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_gr_bgra"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_bgra); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0xffff0000, "c1"); + orc_program_add_constant (p, 4, 0x0000ffff, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_S4, ORC_VAR_C3, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_S4, ORC_VAR_C3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5132,73 +5078,69 @@ bayer16_orc_merge_bg_abgr (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 98, 103, 95, 97, 98, 103, 114, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 18, 6, 21, 1, 195, 1, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_abgr); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 98, 103, 95, 97, 98, 103, 114, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 18, 6, 21, 1, 195, 1, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_abgr); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_bg_abgr"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_abgr); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0x0000ffff, "c1"); - orc_program_add_constant (p, 4, 0xffff0000, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_bg_abgr"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_abgr); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0x0000ffff, "c1"); + orc_program_add_constant (p, 4, 0xffff0000, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5493,73 +5435,69 @@ bayer16_orc_merge_gr_abgr (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 103, 114, 95, 97, 98, 103, 114, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 18, 32, 21, 1, 195, 1, 33, 7, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_abgr); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 103, 114, 95, 97, 98, 103, 114, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 18, 32, 21, 1, 195, 1, 33, 7, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_abgr); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_gr_abgr"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_abgr); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0xffff0000, "c1"); - orc_program_add_constant (p, 4, 0x0000ffff, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_gr_abgr"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_abgr); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0xffff0000, "c1"); + orc_program_add_constant (p, 4, 0x0000ffff, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_S4, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_S4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5854,73 +5792,69 @@ bayer16_orc_merge_bg_rgba (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 98, 103, 95, 114, 103, 98, 97, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 32, 33, 21, 1, 195, 1, 6, 18, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_rgba); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 98, 103, 95, 114, 103, 98, 97, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 32, 33, 21, 1, 195, 1, 6, 18, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_rgba); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_bg_rgba"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_rgba); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0x0000ffff, "c1"); - orc_program_add_constant (p, 4, 0xffff0000, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_bg_rgba"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_rgba); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0x0000ffff, "c1"); + orc_program_add_constant (p, 4, 0xffff0000, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_S3, ORC_VAR_C3, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_S3, ORC_VAR_C3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6215,73 +6149,69 @@ bayer16_orc_merge_gr_rgba (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 103, 114, 95, 114, 103, 98, 97, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 7, 33, 21, 1, 195, 1, 32, 18, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_rgba); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 103, 114, 95, 114, 103, 98, 97, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 7, 33, 21, 1, 195, 1, 32, 18, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_rgba); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_gr_rgba"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_rgba); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0xffff0000, "c1"); - orc_program_add_constant (p, 4, 0x0000ffff, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_gr_rgba"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_rgba); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0xffff0000, "c1"); + orc_program_add_constant (p, 4, 0x0000ffff, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_S4, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_S4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6576,73 +6506,69 @@ bayer16_orc_merge_bg_argb (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 98, 103, 95, 97, 114, 103, 98, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 18, 32, 21, 1, 195, 1, 33, 6, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_argb); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 98, 103, 95, 97, 114, 103, 98, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 255, 255, 0, 0, 14, 4, 0, 0, 255, 255, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 5, 9, 21, 1, 76, 33, 4, 8, 112, 34, 7, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 18, 32, 21, 1, 195, 1, 33, 6, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_argb); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_bg_argb"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_argb); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0x0000ffff, "c1"); - orc_program_add_constant (p, 4, 0xffff0000, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_bg_argb"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_bg_argb); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0x0000ffff, "c1"); + orc_program_add_constant (p, 4, 0xffff0000, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_S3, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_S3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6937,73 +6863,69 @@ bayer16_orc_merge_gr_argb (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, - 101, 114, 103, 101, 95, 103, 114, 95, 97, 114, 103, 98, 11, 8, 8, 11, - 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, - 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, - 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, - 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, - 0, 18, 7, 21, 1, 195, 1, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_argb); + static const orc_uint8 bc[] = { + 1, 9, 25, 98, 97, 121, 101, 114, 49, 54, 95, 111, 114, 99, 95, 109, + 101, 114, 103, 101, 95, 103, 114, 95, 97, 114, 103, 98, 11, 8, 8, 11, + 8, 8, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 255, 255, 14, 4, 255, 255, 0, 0, + 14, 2, 255, 255, 0, 0, 20, 4, 20, 4, 20, 4, 21, 1, 76, 32, + 4, 8, 21, 1, 76, 33, 5, 9, 112, 34, 6, 21, 1, 76, 33, 33, + 34, 106, 33, 33, 16, 106, 34, 34, 17, 123, 33, 34, 33, 21, 1, 195, + 0, 18, 7, 21, 1, 195, 1, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_argb); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16_orc_merge_gr_argb"); - orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_argb); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_source (p, 4, "s5"); - orc_program_add_source (p, 4, "s6"); - orc_program_add_constant (p, 4, 0xffff0000, "c1"); - orc_program_add_constant (p, 4, 0x0000ffff, "c2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16_orc_merge_gr_argb"); + orc_program_set_backup_function (p, _backup_bayer16_orc_merge_gr_argb); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_source (p, 4, "s5"); + orc_program_add_source (p, 4, "s6"); + orc_program_add_constant (p, 4, 0xffff0000, "c1"); + orc_program_add_constant (p, 4, 0x0000ffff, "c2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_C3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7072,8 +6994,8 @@ bayer16to16_orc_reorder (guint8 * ORC_RESTRICT d1, var40.x2[0] = ((orc_uint32) var39.x2[0]) >> p1; var40.x2[1] = ((orc_uint32) var39.x2[1]) >> p1; /* 4: convuuslw */ - var41.x2[0] = ORC_CLAMP_UW ((orc_uint32) var40.x2[0]); - var41.x2[1] = ORC_CLAMP_UW ((orc_uint32) var40.x2[1]); + var41.x2[0] = ORC_MIN ((orc_uint32) var40.x2[0], ORC_UW_MAX); + var41.x2[1] = ORC_MIN ((orc_uint32) var40.x2[1], ORC_UW_MAX); /* 5: loadl */ var37 = ptr5[i]; /* 6: muluwl */ @@ -7087,8 +7009,8 @@ bayer16to16_orc_reorder (guint8 * ORC_RESTRICT d1, var43.x2[0] = ((orc_uint32) var42.x2[0]) >> p1; var43.x2[1] = ((orc_uint32) var42.x2[1]) >> p1; /* 8: convuuslw */ - var44.x2[0] = ORC_CLAMP_UW ((orc_uint32) var43.x2[0]); - var44.x2[1] = ORC_CLAMP_UW ((orc_uint32) var43.x2[1]); + var44.x2[0] = ORC_MIN ((orc_uint32) var43.x2[0], ORC_UW_MAX); + var44.x2[1] = ORC_MIN ((orc_uint32) var43.x2[1], ORC_UW_MAX); /* 9: mergelq */ { orc_union64 _dest; @@ -7148,8 +7070,8 @@ _backup_bayer16to16_orc_reorder (OrcExecutor * ORC_RESTRICT ex) var40.x2[0] = ((orc_uint32) var39.x2[0]) >> ex->params[24]; var40.x2[1] = ((orc_uint32) var39.x2[1]) >> ex->params[24]; /* 4: convuuslw */ - var41.x2[0] = ORC_CLAMP_UW ((orc_uint32) var40.x2[0]); - var41.x2[1] = ORC_CLAMP_UW ((orc_uint32) var40.x2[1]); + var41.x2[0] = ORC_MIN ((orc_uint32) var40.x2[0], ORC_UW_MAX); + var41.x2[1] = ORC_MIN ((orc_uint32) var40.x2[1], ORC_UW_MAX); /* 5: loadl */ var37 = ptr5[i]; /* 6: muluwl */ @@ -7163,8 +7085,8 @@ _backup_bayer16to16_orc_reorder (OrcExecutor * ORC_RESTRICT ex) var43.x2[0] = ((orc_uint32) var42.x2[0]) >> ex->params[24]; var43.x2[1] = ((orc_uint32) var42.x2[1]) >> ex->params[24]; /* 8: convuuslw */ - var44.x2[0] = ORC_CLAMP_UW ((orc_uint32) var43.x2[0]); - var44.x2[1] = ORC_CLAMP_UW ((orc_uint32) var43.x2[1]); + var44.x2[0] = ORC_MIN ((orc_uint32) var43.x2[0], ORC_UW_MAX); + var44.x2[1] = ORC_MIN ((orc_uint32) var43.x2[1], ORC_UW_MAX); /* 9: mergelq */ { orc_union64 _dest; @@ -7184,61 +7106,57 @@ bayer16to16_orc_reorder (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 98, 97, 121, 101, 114, 49, 54, 116, 111, 49, 54, 95, 111, - 114, 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 8, 8, 12, 4, 4, - 12, 4, 4, 14, 2, 255, 255, 0, 0, 16, 4, 20, 4, 20, 4, 20, - 8, 21, 1, 177, 34, 4, 16, 21, 1, 126, 34, 34, 24, 21, 1, 168, - 32, 34, 21, 1, 177, 34, 5, 16, 21, 1, 126, 34, 34, 24, 21, 1, - 168, 33, 34, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16to16_orc_reorder); + static const orc_uint8 bc[] = { + 1, 9, 23, 98, 97, 121, 101, 114, 49, 54, 116, 111, 49, 54, 95, 111, + 114, 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 8, 8, 12, 4, 4, + 12, 4, 4, 14, 2, 255, 255, 0, 0, 16, 4, 20, 4, 20, 4, 20, + 8, 21, 1, 177, 34, 4, 16, 21, 1, 126, 34, 34, 24, 21, 1, 168, + 32, 34, 21, 1, 177, 34, 5, 16, 21, 1, 126, 34, 34, 24, 21, 1, + 168, 33, 34, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16to16_orc_reorder); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16to16_orc_reorder"); - orc_program_set_backup_function (p, _backup_bayer16to16_orc_reorder); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_constant (p, 2, 0x0000ffff, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 8, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16to16_orc_reorder"); + orc_program_set_backup_function (p, _backup_bayer16to16_orc_reorder); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_constant (p, 2, 0x0000ffff, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 8, "t3"); - orc_program_append_2 (p, "muluwl", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuuslw", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "muluwl", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuuslw", 1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "muluwl", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuuslw", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "muluwl", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuuslw", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7367,55 +7285,51 @@ bayer16to8_orc_reorder (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 98, 97, 121, 101, 114, 49, 54, 116, 111, 56, 95, 111, 114, - 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 4, 4, 12, 4, 4, 12, - 4, 4, 16, 4, 20, 2, 20, 2, 20, 4, 21, 1, 95, 34, 4, 24, - 21, 1, 162, 32, 34, 21, 1, 95, 34, 5, 24, 21, 1, 162, 33, 34, - 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer16to8_orc_reorder); + static const orc_uint8 bc[] = { + 1, 9, 22, 98, 97, 121, 101, 114, 49, 54, 116, 111, 56, 95, 111, 114, + 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 4, 4, 12, 4, 4, 12, + 4, 4, 16, 4, 20, 2, 20, 2, 20, 4, 21, 1, 95, 34, 4, 24, + 21, 1, 162, 32, 34, 21, 1, 95, 34, 5, 24, 21, 1, 162, 33, 34, + 195, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer16to8_orc_reorder); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer16to8_orc_reorder"); - orc_program_set_backup_function (p, _backup_bayer16to8_orc_reorder); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "bayer16to8_orc_reorder"); + orc_program_set_backup_function (p, _backup_bayer16to8_orc_reorder); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "shruw", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuuswb", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuuswb", 1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 1, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuuswb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 1, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuuswb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7496,40 +7410,36 @@ bayer8to16_orc_reorder (guint8 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 98, 97, 121, 101, 114, 56, 116, 111, 49, 54, 95, 111, 114, - 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 8, 8, 12, 4, 4, 21, - 2, 151, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_bayer8to16_orc_reorder); + static const orc_uint8 bc[] = { + 1, 9, 22, 98, 97, 121, 101, 114, 56, 116, 111, 49, 54, 95, 111, 114, + 99, 95, 114, 101, 111, 114, 100, 101, 114, 11, 8, 8, 12, 4, 4, 21, + 2, 151, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_bayer8to16_orc_reorder); #else - p = orc_program_new (); - orc_program_set_name (p, "bayer8to16_orc_reorder"); - orc_program_set_backup_function (p, _backup_bayer8to16_orc_reorder); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "bayer8to16_orc_reorder"); + orc_program_set_backup_function (p, _backup_bayer8to16_orc_reorder); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "splatbw", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 2, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.h b/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.h index bd752aa018..a862d6e308 100644 --- a/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.h +++ b/subprojects/gst-plugins-bad/gst/bayer/gstbayerorc-dist.h @@ -6,8 +6,7 @@ #include #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif @@ -16,70 +15,55 @@ extern "C" #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #include - typedef int8_t orc_int8; - typedef int16_t orc_int16; - typedef int32_t orc_int32; - typedef int64_t orc_int64; - typedef uint8_t orc_uint8; - typedef uint16_t orc_uint16; - typedef uint32_t orc_uint32; - typedef uint64_t orc_uint64; +typedef int8_t orc_int8; +typedef int16_t orc_int16; +typedef int32_t orc_int32; +typedef int64_t orc_int64; +typedef uint8_t orc_uint8; +typedef uint16_t orc_uint16; +typedef uint32_t orc_uint32; +typedef uint64_t orc_uint64; #define ORC_UINT64_C(x) UINT64_C(x) #elif defined(_MSC_VER) - typedef signed __int8 orc_int8; - typedef signed __int16 orc_int16; - typedef signed __int32 orc_int32; - typedef signed __int64 orc_int64; - typedef unsigned __int8 orc_uint8; - typedef unsigned __int16 orc_uint16; - typedef unsigned __int32 orc_uint32; - typedef unsigned __int64 orc_uint64; +typedef signed __int8 orc_int8; +typedef signed __int16 orc_int16; +typedef signed __int32 orc_int32; +typedef signed __int64 orc_int64; +typedef unsigned __int8 orc_uint8; +typedef unsigned __int16 orc_uint16; +typedef unsigned __int32 orc_uint32; +typedef unsigned __int64 orc_uint64; #define ORC_UINT64_C(x) (x##Ui64) #define inline __inline #else #include - typedef signed char orc_int8; - typedef short orc_int16; - typedef int orc_int32; - typedef unsigned char orc_uint8; - typedef unsigned short orc_uint16; - typedef unsigned int orc_uint32; +typedef signed char orc_int8; +typedef short orc_int16; +typedef int orc_int32; +typedef unsigned char orc_uint8; +typedef unsigned short orc_uint16; +typedef unsigned int orc_uint32; #if INT_MAX == LONG_MAX - typedef long long orc_int64; - typedef unsigned long long orc_uint64; +typedef long long orc_int64; +typedef unsigned long long orc_uint64; #define ORC_UINT64_C(x) (x##ULL) #else - typedef long orc_int64; - typedef unsigned long orc_uint64; +typedef long orc_int64; +typedef unsigned long orc_uint64; #define ORC_UINT64_C(x) (x##UL) #endif #endif - typedef union - { - orc_int16 i; - orc_int8 x2[2]; - } orc_union16; - typedef union - { - orc_int32 i; - float f; - orc_int16 x2[2]; - orc_int8 x4[4]; - } orc_union32; - typedef union - { - orc_int64 i; - double f; - orc_int32 x2[2]; - float x2f[2]; - orc_int16 x4[4]; - } orc_union64; +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -97,95 +81,31 @@ extern "C" #endif #endif - void bayer_orc_horiz_upsample_unaligned (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); - void bayer_orc_horiz_upsample (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); - void bayer_orc_merge_bg_bgra (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_gr_bgra (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_bg_abgr (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_gr_abgr (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_bg_rgba (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_gr_rgba (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_bg_argb (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer_orc_merge_gr_argb (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, - const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_horiz_upsample_le (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n); - void bayer16_orc_horiz_upsample_be (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n); - void bayer16_orc_merge_bg_bgra (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_gr_bgra (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_bg_abgr (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_gr_abgr (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_bg_rgba (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_gr_rgba (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_bg_argb (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16_orc_merge_gr_argb (guint16 * ORC_RESTRICT d1, - guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, - const guint8 * ORC_RESTRICT s6, int n); - void bayer16to16_orc_reorder (guint8 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, const guint32 * ORC_RESTRICT s2, int p1, - int n); - void bayer16to8_orc_reorder (guint8 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, const guint32 * ORC_RESTRICT s2, int p1, - int n); - void bayer8to16_orc_reorder (guint8 * ORC_RESTRICT d1, - const guint32 * ORC_RESTRICT s1, int n); +void bayer_orc_horiz_upsample_unaligned (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void bayer_orc_horiz_upsample (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n); +void bayer_orc_merge_bg_bgra (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_gr_bgra (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_bg_abgr (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_gr_abgr (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_bg_rgba (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_gr_rgba (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_bg_argb (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer_orc_merge_gr_argb (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_horiz_upsample_le (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n); +void bayer16_orc_horiz_upsample_be (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1, int n); +void bayer16_orc_merge_bg_bgra (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_gr_bgra (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_bg_abgr (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_gr_abgr (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_bg_rgba (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_gr_rgba (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_bg_argb (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16_orc_merge_gr_argb (guint16 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, const guint8 * ORC_RESTRICT s6, int n); +void bayer16to16_orc_reorder (guint8 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, const guint32 * ORC_RESTRICT s2, int p1, int n); +void bayer16to8_orc_reorder (guint8 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, const guint32 * ORC_RESTRICT s2, int p1, int n); +void bayer8to16_orc_reorder (guint8 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n); #ifdef __cplusplus } #endif + diff --git a/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.c b/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.c index 85559e3560..5582a95a5e 100644 --- a/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.c +++ b/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -114,6 +117,7 @@ void fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -149,6 +153,8 @@ void fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -270,66 +276,61 @@ fieldanalysis_orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, - 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, - 121, - 95, 115, 97, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12, - 1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20, - 4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 69, 32, 32, 154, 34, - 32, 111, 35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_sad_planar_yuv); + static const orc_uint8 bc[] = { + 1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, + 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, 121, + 95, 115, 97, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12, + 1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20, + 4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 69, 32, 32, 154, 34, + 32, 111, 35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_sad_planar_yuv); #else - p = orc_program_new (); - orc_program_set_name (p, "fieldanalysis_orc_same_parity_sad_planar_yuv"); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_sad_planar_yuv); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_accumulator (p, 4, "a1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "fieldanalysis_orc_same_parity_sad_planar_yuv"); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_sad_planar_yuv); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_accumulator (p, 4, "a1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -453,65 +454,59 @@ fieldanalysis_orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, - 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, - 121, - 95, 115, 115, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, - 12, - 1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20, - 4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 176, 34, 32, 32, 111, - 35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv); + static const orc_uint8 bc[] = { + 1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, + 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, 121, + 95, 115, 115, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12, + 1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20, + 4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 176, 34, 32, 32, 111, + 35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv); #else - p = orc_program_new (); - orc_program_set_name (p, "fieldanalysis_orc_same_parity_ssd_planar_yuv"); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_accumulator (p, 4, "a1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "fieldanalysis_orc_same_parity_ssd_planar_yuv"); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_accumulator (p, 4, "a1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -745,100 +740,94 @@ fieldanalysis_orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, - 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, - 121, - 95, 51, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, - 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, - 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 16, 4, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, - 150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36, 8, 150, 37, 9, 93, - 33, 33, 16, 93, 36, 36, 16, 70, 32, 32, 33, 70, 32, 32, 34, 70, - 35, 35, 36, 70, 35, 35, 37, 98, 32, 32, 35, 69, 32, 32, 154, 38, - 32, 111, 39, 38, 24, 106, 38, 38, 39, 181, 12, 38, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv); + static const orc_uint8 bc[] = { + 1, 9, 46, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, + 95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116, 121, + 95, 51, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, + 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, + 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 16, 4, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, + 150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36, 8, 150, 37, 9, 93, + 33, 33, 16, 93, 36, 36, 16, 70, 32, 32, 33, 70, 32, 32, 34, 70, + 35, 35, 36, 70, 35, 35, 37, 98, 32, 32, 35, 69, 32, 32, 154, 38, + 32, 111, 39, 38, 24, 106, 38, 38, 39, 181, 12, 38, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv); #else - p = orc_program_new (); - orc_program_set_name (p, - "fieldanalysis_orc_same_parity_3_tap_planar_yuv"); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_source (p, 1, "s5"); - orc_program_add_source (p, 1, "s6"); - orc_program_add_accumulator (p, 4, "a1"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 4, "t7"); - orc_program_add_temporary (p, 4, "t8"); + p = orc_program_new (); + orc_program_set_name (p, "fieldanalysis_orc_same_parity_3_tap_planar_yuv"); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_source (p, 1, "s5"); + orc_program_add_source (p, 1, "s6"); + orc_program_add_accumulator (p, 4, "a1"); + orc_program_add_constant (p, 2, 0x00000002, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 4, "t7"); + orc_program_add_temporary (p, 4, "t8"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_S6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_S6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1072,98 +1061,93 @@ fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1, const orc_uint8 * ORC_RESTRICT s5, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 50, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, - 95, 111, 114, 99, 95, 111, 112, 112, 111, 115, 105, 116, 101, 95, 112, - 97, - 114, 105, 116, 121, 95, 53, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, - 114, 95, 121, 117, 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, - 1, 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, - 0, 0, 16, 4, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, - 20, 4, 150, 32, 4, 150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36, - 8, 93, 34, 34, 16, 89, 33, 33, 17, 89, 35, 35, 17, 98, 32, 32, - 33, 70, 32, 32, 34, 98, 32, 32, 35, 70, 32, 32, 36, 69, 32, 32, - 154, 37, 32, 111, 38, 37, 24, 106, 37, 37, 38, 181, 12, 37, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 50, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115, + 95, 111, 114, 99, 95, 111, 112, 112, 111, 115, 105, 116, 101, 95, 112, 97, + 114, 105, 116, 121, 95, 53, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, + 114, 95, 121, 117, 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, + 0, 0, 16, 4, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, + 20, 4, 150, 32, 4, 150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36, + 8, 93, 34, 34, 16, 89, 33, 33, 17, 89, 35, 35, 17, 98, 32, 32, + 33, 70, 32, 32, 34, 98, 32, 32, 35, 70, 32, 32, 36, 69, 32, 32, + 154, 37, 32, 111, 38, 37, 24, 106, 37, 37, 38, 181, 12, 37, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv); #else - p = orc_program_new (); - orc_program_set_name (p, - "fieldanalysis_orc_opposite_parity_5_tap_planar_yuv"); - orc_program_set_backup_function (p, - _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_source (p, 1, "s5"); - orc_program_add_accumulator (p, 4, "a1"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_constant (p, 2, 0x00000003, "c2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 4, "t7"); + p = orc_program_new (); + orc_program_set_name (p, + "fieldanalysis_orc_opposite_parity_5_tap_planar_yuv"); + orc_program_set_backup_function (p, + _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_source (p, 1, "s5"); + orc_program_add_accumulator (p, 4, "a1"); + orc_program_add_constant (p, 2, 0x00000002, "c1"); + orc_program_add_constant (p, 2, 0x00000003, "c2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 4, "t7"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.h b/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.h index 87d7af4ad0..18f81ad467 100644 --- a/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.h +++ b/subprojects/gst-plugins-bad/gst/fieldanalysis/gstfieldanalysisorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstfieldanalysisorc.orc */ -#ifndef _GSTFIELDANALYSISORC_H_ -#define _GSTFIELDANALYSISORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -89,5 +90,3 @@ void fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT } #endif -#endif - diff --git a/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.c b/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.c index 967538ccff..6589082eb5 100644 --- a/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.c +++ b/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -100,6 +103,7 @@ void gaudi_orc_burn (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -135,6 +139,8 @@ void gaudi_orc_burn (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -391,71 +397,67 @@ gaudi_orc_burn (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 14, 103, 97, 117, 100, 105, 95, 111, 114, 99, 95, 98, 117, 114, - 110, 11, 4, 4, 12, 4, 4, 14, 1, 255, 0, 0, 0, 14, 1, 7, - 0, 0, 0, 14, 1, 1, 0, 0, 0, 16, 4, 20, 4, 20, 8, 20, - 8, 21, 2, 42, 32, 4, 21, 2, 150, 33, 32, 21, 2, 70, 34, 33, - 24, 21, 2, 95, 34, 34, 18, 21, 2, 65, 32, 16, 32, 21, 2, 150, - 33, 32, 21, 2, 93, 33, 33, 17, 21, 2, 81, 33, 33, 34, 21, 2, - 98, 33, 16, 33, 21, 2, 157, 32, 33, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_gaudi_orc_burn); + static const orc_uint8 bc[] = { + 1, 9, 14, 103, 97, 117, 100, 105, 95, 111, 114, 99, 95, 98, 117, 114, + 110, 11, 4, 4, 12, 4, 4, 14, 1, 255, 0, 0, 0, 14, 1, 7, + 0, 0, 0, 14, 1, 1, 0, 0, 0, 16, 4, 20, 4, 20, 8, 20, + 8, 21, 2, 42, 32, 4, 21, 2, 150, 33, 32, 21, 2, 70, 34, 33, + 24, 21, 2, 95, 34, 34, 18, 21, 2, 65, 32, 16, 32, 21, 2, 150, + 33, 32, 21, 2, 93, 33, 33, 17, 21, 2, 81, 33, 33, 34, 21, 2, + 98, 33, 16, 33, 21, 2, 157, 32, 33, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_gaudi_orc_burn); #else - p = orc_program_new (); - orc_program_set_name (p, "gaudi_orc_burn"); - orc_program_set_backup_function (p, _backup_gaudi_orc_burn); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_constant (p, 1, 0x00000007, "c2"); - orc_program_add_constant (p, 1, 0x00000001, "c3"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 8, "t2"); - orc_program_add_temporary (p, 8, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "gaudi_orc_burn"); + orc_program_set_backup_function (p, _backup_gaudi_orc_burn); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_constant (p, 1, 0x00000007, "c2"); + orc_program_add_constant (p, 1, 0x00000001, "c3"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 8, "t2"); + orc_program_add_temporary (p, 8, "t3"); - orc_program_append_2 (p, "copyb", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 2, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 2, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 2, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.h b/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.h index aaca98f5cd..be78e6ac94 100644 --- a/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.h +++ b/subprojects/gst-plugins-bad/gst/gaudieffects/gstgaudieffectsorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstgaudieffectsorc.orc */ -#ifndef _GSTGAUDIEFFECTSORC_H_ -#define _GSTGAUDIEFFECTSORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -86,5 +87,3 @@ void gaudi_orc_burn (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, } #endif -#endif - diff --git a/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.c b/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.c index f344e71c58..1fe03a19d8 100644 --- a/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.c +++ b/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -101,6 +104,7 @@ void orc_sad_nxm_u8 (orc_uint32 * ORC_RESTRICT a1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -136,6 +140,8 @@ void orc_sad_nxm_u8 (orc_uint32 * ORC_RESTRICT a1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -219,42 +225,38 @@ orc_sad_nxm_u8 (orc_uint32 * ORC_RESTRICT a1, const orc_uint8 * ORC_RESTRICT s1, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 14, 111, 114, 99, 95, 115, 97, 100, 95, 110, 120, 109, 95, - 117, 56, 12, 1, 1, 12, 1, 1, 13, 4, 182, 12, 4, 5, 2, 0, + static const orc_uint8 bc[] = { + 1, 7, 9, 14, 111, 114, 99, 95, 115, 97, 100, 95, 110, 120, 109, 95, + 117, 56, 12, 1, 1, 12, 1, 1, 13, 4, 182, 12, 4, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "orc_sad_nxm_u8"); - orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_accumulator (p, 4, "a1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "orc_sad_nxm_u8"); + orc_program_set_backup_function (p, _backup_orc_sad_nxm_u8); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_accumulator (p, 4, "a1"); - orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, - ORC_VAR_S2, ORC_VAR_D1); + orc_program_append_2 (p, "accsadubl", 0, ORC_VAR_A1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.h b/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.h index 86c22d0fad..41abdc3dbe 100644 --- a/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.h +++ b/subprojects/gst-plugins-bad/gst/videofilters/gstscenechangeorc-dist.h @@ -55,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif diff --git a/subprojects/gst-plugins-bad/meson.build b/subprojects/gst-plugins-bad/meson.build index c0695768ea..1454f443e3 100644 --- a/subprojects/gst-plugins-bad/meson.build +++ b/subprojects/gst-plugins-bad/meson.build @@ -18,7 +18,7 @@ gst_version_is_stable = gst_version_minor.is_even() gst_version_is_dev = gst_version_minor.is_odd() and gst_version_micro < 90 glib_req = '>= 2.64.0' -orc_req = '>= 0.4.17' +orc_req = '>= 0.4.34' if gst_version_is_stable gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.c b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.c index 0bd19e99fe..d7dd3afe74 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -195,6 +198,7 @@ void audio_orc_double_to_s32 (gint32 * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -230,6 +234,8 @@ void audio_orc_double_to_s32 (gint32 * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -322,44 +328,40 @@ audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 56, 11, 4, 4, 12, 1, 1, 14, 4, 0, 0, - 0, 128, 20, 4, 152, 32, 4, 132, 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8); + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 56, 11, 4, 4, 12, 1, 1, 14, 4, 0, 0, + 0, 128, 20, 4, 152, 32, 4, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u8"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u8"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -464,48 +466,44 @@ audio_orc_unpack_u8_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, - 1, 1, 14, 4, 0, 0, 0, 128, 14, 4, 24, 0, 0, 0, 20, 4, - 152, 32, 4, 124, 32, 32, 17, 132, 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, + 1, 1, 14, 4, 0, 0, 0, 128, 14, 4, 24, 0, 0, 0, 20, 4, + 152, 32, 4, 124, 32, 32, 17, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u8_trunc"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u8_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -604,45 +602,41 @@ audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 56, 11, 4, 4, 12, 1, 1, 14, 4, 128, 128, - 128, 0, 20, 2, 20, 4, 152, 33, 4, 132, 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 56, 11, 4, 4, 12, 1, 1, 14, 4, 128, 128, + 128, 0, 20, 2, 20, 4, 152, 33, 4, 132, 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s8"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x00808080, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s8"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x00808080, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -727,45 +721,41 @@ audio_orc_unpack_s8_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, - 1, 1, 14, 4, 24, 0, 0, 0, 20, 4, 152, 32, 4, 124, 0, 32, - 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, + 1, 1, 14, 4, 24, 0, 0, 0, 20, 4, 152, 32, 4, 124, 0, 32, + 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s8_trunc"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s8_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -874,44 +864,40 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, - 0, 0, 128, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, + 0, 0, 128, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u16"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1026,48 +1012,44 @@ audio_orc_unpack_u16_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, - 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, - 4, 195, 32, 4, 4, 124, 32, 32, 16, 132, 0, 32, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); + static const orc_uint8 bc[] = { + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, + 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, + 4, 195, 32, 4, 4, 124, 32, 32, 16, 132, 0, 32, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u16_trunc"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00000010, "c1"); + orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1176,44 +1158,40 @@ audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, - 128, 0, 0, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, + 128, 0, 0, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00008000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00008000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1292,45 +1270,41 @@ audio_orc_unpack_s16_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, - 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 4, 154, 32, 4, 124, 0, - 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); + static const orc_uint8 bc[] = { + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, + 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 4, 154, 32, 4, 124, 0, + 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16_trunc"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00000010, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1439,48 +1413,44 @@ audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 2, 2, 14, 4, 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 195, - 33, 32, 32, 132, 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 2, 2, 14, 4, 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 195, + 33, 32, 32, 132, 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1585,54 +1555,50 @@ audio_orc_unpack_u16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, - 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 154, 33, 32, 124, 33, - 33, 16, 132, 0, 33, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audio_orc_unpack_u16_swap_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, + 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 154, 33, 32, 124, 33, + 33, 16, 132, 0, 33, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_u16_swap_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u16_swap_trunc"); - orc_program_set_backup_function (p, - _backup_audio_orc_unpack_u16_swap_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16_swap_trunc"); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_u16_swap_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00000010, "c1"); + orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1721,43 +1687,39 @@ audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 2, 2, 20, 2, 183, 32, 4, 195, 0, 32, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 2, 2, 20, 2, 183, 32, 4, 195, 0, 32, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1842,50 +1804,46 @@ audio_orc_unpack_s16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 2, - 20, 4, 183, 32, 4, 154, 33, 32, 124, 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audio_orc_unpack_s16_swap_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 2, + 20, 4, 183, 32, 4, 154, 33, 32, 124, 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_s16_swap_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16_swap_trunc"); - orc_program_set_backup_function (p, - _backup_audio_orc_unpack_s16_swap_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16_swap_trunc"); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_s16_swap_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00000010, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1978,46 +1936,42 @@ audio_orc_unpack_u24_32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, - 14, 4, 8, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, 4, 124, 32, - 4, 16, 132, 0, 32, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, + 14, 4, 8, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, 4, 124, 32, + 4, 16, 132, 0, 32, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u24_32"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u24_32"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2090,41 +2044,37 @@ audio_orc_unpack_s24_32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, - 14, 4, 8, 0, 0, 0, 124, 0, 4, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, + 14, 4, 8, 0, 0, 0, 124, 0, 4, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s24_32"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s24_32"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2223,49 +2173,45 @@ audio_orc_unpack_u24_32_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, - 4, 4, 12, 4, 4, 14, 4, 8, 0, 0, 0, 14, 4, 0, 0, 0, - 128, 20, 4, 184, 32, 4, 124, 32, 32, 16, 132, 0, 32, 17, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 28, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, + 4, 4, 12, 4, 4, 14, 4, 8, 0, 0, 0, 14, 4, 0, 0, 0, + 128, 20, 4, 184, 32, 4, 124, 32, 32, 16, 132, 0, 32, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32_swap); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u24_32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u24_32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u24_32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2344,45 +2290,41 @@ audio_orc_unpack_s24_32_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, - 4, 4, 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 4, 184, 32, 4, - 124, 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32_swap); + static const orc_uint8 bc[] = { + 1, 9, 28, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, + 4, 4, 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 4, 184, 32, 4, + 124, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s24_32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s24_32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s24_32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2469,41 +2411,37 @@ audio_orc_unpack_u32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, 0, - 0, 0, 128, 132, 0, 4, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, 0, + 0, 0, 128, 132, 0, 4, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u32"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u32"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2596,45 +2534,41 @@ audio_orc_unpack_u32_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 4, 4, 14, 4, 0, 0, 0, 128, 20, 4, 184, 32, 4, 132, 0, 32, - 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 4, 4, 14, 4, 0, 0, 0, 128, 20, 4, 184, 32, 4, 132, 0, 32, + 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2707,40 +2641,36 @@ audio_orc_unpack_s32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 112, 0, 4, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 112, 0, 4, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s32"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s32"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2813,40 +2743,36 @@ audio_orc_unpack_s32_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 4, 4, 184, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 4, 4, 184, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2927,40 +2853,36 @@ audio_orc_unpack_f32 (gdouble * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 102, 51, 50, 11, 8, 8, 12, 4, 4, 224, 0, 4, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 102, 51, 50, 11, 8, 8, 12, 4, 4, 224, 0, 4, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_f32"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_f32"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3047,43 +2969,39 @@ audio_orc_unpack_f32_swap (gdouble * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 102, 51, 50, 95, 115, 119, 97, 112, 11, 8, 8, 12, - 4, 4, 20, 4, 184, 32, 4, 224, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 102, 51, 50, 95, 115, 119, 97, 112, 11, 8, 8, 12, + 4, 4, 20, 4, 184, 32, 4, 224, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_f32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_f32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f32_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3156,40 +3074,36 @@ audio_orc_unpack_f64 (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 137, 0, 4, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 137, 0, 4, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_f64"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_f64"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3262,40 +3176,36 @@ audio_orc_unpack_f64_swap (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 102, 54, 52, 95, 115, 119, 97, 112, 11, 8, 8, 12, - 8, 8, 186, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64_swap); + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 102, 54, 52, 95, 115, 119, 97, 112, 11, 8, 8, 12, + 8, 8, 186, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_f64_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_f64_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_f64_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3394,48 +3304,44 @@ audio_orc_pack_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 0, 0, 0, 128, - 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, 32, 158, 0, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 0, 0, 0, 128, + 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, 32, 158, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u8"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u8"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3514,43 +3420,39 @@ audio_orc_pack_s8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 56, 11, 1, 1, 12, 4, 4, 20, 2, 164, 32, 4, 158, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 56, 11, 1, 1, 12, 4, 4, 20, 2, 164, 32, 4, 158, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s8"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s8"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3643,44 +3545,40 @@ audio_orc_pack_u16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 0, 0, 0, - 128, 20, 4, 132, 32, 4, 16, 164, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 0, 0, 0, + 128, 20, 4, 132, 32, 4, 16, 164, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u16"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u16"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3753,40 +3651,36 @@ audio_orc_pack_s16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 49, 54, 11, 2, 2, 12, 4, 4, 164, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 49, 54, 11, 2, 2, 12, 4, 4, 164, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s16"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s16"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3885,48 +3779,44 @@ audio_orc_pack_u16_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 0, 128, 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, - 32, 183, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u16_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 0, 0, 128, 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, + 32, 183, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u16_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4005,43 +3895,39 @@ audio_orc_pack_s16_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, - 20, 2, 164, 32, 4, 183, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, + 20, 2, 164, 32, 4, 183, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4134,46 +4020,42 @@ audio_orc_pack_u24_32 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, - 0, 0, 0, 128, 14, 4, 8, 0, 0, 0, 20, 4, 132, 32, 4, 16, - 126, 0, 32, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32); + static const orc_uint8 bc[] = { + 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, + 0, 0, 0, 128, 14, 4, 8, 0, 0, 0, 20, 4, 132, 32, 4, 16, + 126, 0, 32, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u24_32"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u24_32"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4246,41 +4128,37 @@ audio_orc_pack_s24_32 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, - 8, 0, 0, 0, 125, 0, 4, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32); + static const orc_uint8 bc[] = { + 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 50, 52, 95, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, + 8, 0, 0, 0, 125, 0, 4, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s24_32"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s24_32"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4379,48 +4257,44 @@ audio_orc_pack_u24_32_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, - 12, 4, 4, 14, 4, 0, 0, 0, 128, 14, 4, 8, 0, 0, 0, 20, - 4, 132, 32, 4, 16, 126, 32, 32, 17, 184, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32_swap); + static const orc_uint8 bc[] = { + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, + 12, 4, 4, 14, 4, 0, 0, 0, 128, 14, 4, 8, 0, 0, 0, 20, + 4, 132, 32, 4, 16, 126, 32, 32, 17, 184, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u24_32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u24_32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u24_32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4499,45 +4373,41 @@ audio_orc_pack_s24_32_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, - 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 4, 125, 32, 4, 16, 184, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32_swap); + static const orc_uint8 bc[] = { + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 50, 52, 95, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, + 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 4, 125, 32, 4, 16, 184, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s24_32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s24_32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s24_32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4624,41 +4494,37 @@ audio_orc_pack_u32 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, 0, - 128, 132, 0, 4, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u32); + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, 0, + 128, 132, 0, 4, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u32"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u32"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4731,40 +4597,36 @@ audio_orc_pack_s32 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 112, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 112, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s32"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s32"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4857,45 +4719,41 @@ audio_orc_pack_u32_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 4, 4, - 14, 4, 0, 0, 0, 128, 20, 4, 132, 32, 4, 16, 184, 0, 32, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u32_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 117, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 4, 4, + 14, 4, 0, 0, 0, 128, 20, 4, 132, 32, 4, 16, 184, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_u32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_u32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_u32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_u32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4968,40 +4826,36 @@ audio_orc_pack_s32_swap (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 4, 4, - 184, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s32_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 115, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 4, 4, + 184, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_s32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_s32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5086,40 +4940,36 @@ audio_orc_pack_f32 (gfloat * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 102, 51, 50, 11, 4, 4, 12, 8, 8, 225, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 102, 51, 50, 11, 4, 4, 12, 8, 8, 225, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_f32"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_f32"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5210,43 +5060,39 @@ audio_orc_pack_f32_swap (gfloat * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 102, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 8, 8, - 20, 4, 225, 32, 4, 184, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f32_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 102, 51, 50, 95, 115, 119, 97, 112, 11, 4, 4, 12, 8, 8, + 20, 4, 225, 32, 4, 184, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f32_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_f32_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_f32_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5319,40 +5165,36 @@ audio_orc_pack_f64 (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 137, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 137, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f64); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_f64"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_f64"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5425,40 +5267,36 @@ audio_orc_pack_f64_swap (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 102, 54, 52, 95, 115, 119, 97, 112, 11, 8, 8, 12, 8, 8, - 186, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f64_swap); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 102, 54, 52, 95, 115, 119, 97, 112, 11, 8, 8, 12, 8, 8, + 186, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f64_swap); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_pack_f64_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_pack_f64_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_pack_f64_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_pack_f64_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5525,40 +5363,36 @@ void audio_orc_splat_u16 (guint16 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 79, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 79, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_splat_u16"); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_splat_u16"); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_parameter (p, 2, "p1"); - orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5625,40 +5459,36 @@ void audio_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5712,7 +5542,7 @@ _backup_audio_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var32.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: copyq */ @@ -5727,40 +5557,36 @@ void audio_orc_splat_u64 (guint64 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 54, 52, 11, 8, 8, 16, 8, 137, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 54, 52, 11, 8, 8, 16, 8, 137, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u64); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u64); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_splat_u64"); - orc_program_set_backup_function (p, _backup_audio_orc_splat_u64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter (p, 8, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_splat_u64"); + orc_program_set_backup_function (p, _backup_audio_orc_splat_u64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter (p, 8, "p1"); - orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5851,45 +5677,41 @@ audio_orc_int_bias (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 105, 110, 116, - 95, 98, 105, 97, 115, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 20, - 4, 104, 32, 4, 24, 106, 0, 32, 25, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_int_bias); + static const orc_uint8 bc[] = { + 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 105, 110, 116, + 95, 98, 105, 97, 115, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 20, + 4, 104, 32, 4, 24, 106, 0, 32, 25, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_int_bias); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_int_bias"); - orc_program_set_backup_function (p, _backup_audio_orc_int_bias); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_parameter (p, 4, "p2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_int_bias"); + orc_program_set_backup_function (p, _backup_audio_orc_int_bias); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_parameter (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P2, - ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5986,45 +5808,41 @@ audio_orc_int_dither (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, const gint32 * ORC_RESTRICT s2, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 105, 110, 116, - 95, 100, 105, 116, 104, 101, 114, 11, 4, 4, 12, 4, 4, 12, 4, 4, - 16, 4, 20, 4, 104, 32, 4, 5, 106, 0, 32, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_int_dither); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 105, 110, 116, + 95, 100, 105, 116, 104, 101, 114, 11, 4, 4, 12, 4, 4, 12, 4, 4, + 16, 4, 20, 4, 104, 32, 4, 5, 106, 0, 32, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_int_dither); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_int_dither"); - orc_program_set_backup_function (p, _backup_audio_orc_int_dither); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_int_dither"); + orc_program_set_backup_function (p, _backup_audio_orc_int_dither); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6127,45 +5945,41 @@ void audio_orc_update_rand (guint32 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 112, 100, - 97, 116, 101, 95, 114, 97, 110, 100, 11, 4, 4, 14, 4, 109, 78, 198, - 65, 14, 4, 57, 48, 0, 0, 20, 4, 120, 32, 0, 16, 103, 0, 32, - 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_update_rand); + static const orc_uint8 bc[] = { + 1, 9, 21, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 112, 100, + 97, 116, 101, 95, 114, 97, 110, 100, 11, 4, 4, 14, 4, 109, 78, 198, + 65, 14, 4, 57, 48, 0, 0, 20, 4, 120, 32, 0, 16, 103, 0, 32, + 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_update_rand); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_update_rand"); - orc_program_set_backup_function (p, _backup_audio_orc_update_rand); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_constant (p, 4, 0x41c64e6d, "c1"); - orc_program_add_constant (p, 4, 0x00003039, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_update_rand"); + orc_program_set_backup_function (p, _backup_audio_orc_update_rand); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant (p, 4, 0x41c64e6d, "c1"); + orc_program_add_constant (p, 4, 0x00003039, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6207,7 +6021,7 @@ audio_orc_s32_to_double (gdouble * ORC_RESTRICT d1, /* 0: loadl */ var33 = ptr4[i]; /* 1: convld */ - var36.f = var33.i; + var36.f = (double) var33.i; /* 3: divd */ { orc_union64 _src1; @@ -6251,7 +6065,7 @@ _backup_audio_orc_s32_to_double (OrcExecutor * ORC_RESTRICT ex) /* 0: loadl */ var33 = ptr4[i]; /* 1: convld */ - var36.f = var33.i; + var36.f = (double) var33.i; /* 3: divd */ { orc_union64 _src1; @@ -6273,45 +6087,41 @@ audio_orc_s32_to_double (gdouble * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 51, 50, - 95, 116, 111, 95, 100, 111, 117, 98, 108, 101, 11, 8, 8, 12, 4, 4, - 15, 8, 0, 0, 0, 0, 0, 0, 224, 65, 20, 8, 223, 32, 4, 215, - 0, 32, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_s32_to_double); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 115, 51, 50, + 95, 116, 111, 95, 100, 111, 117, 98, 108, 101, 11, 8, 8, 12, 4, 4, + 15, 8, 0, 0, 0, 0, 0, 0, 224, 65, 20, 8, 223, 32, 4, 215, + 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_s32_to_double); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_s32_to_double"); - orc_program_set_backup_function (p, _backup_audio_orc_s32_to_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant_int64 (p, 8, 0x41e0000000000000ULL, "c1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_s32_to_double"); + orc_program_set_backup_function (p, _backup_audio_orc_s32_to_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant_int64 (p, 8, 0x41e0000000000000ULL, "c1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "divd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "divd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6366,7 +6176,7 @@ audio_orc_double_to_s32 (gint32 * ORC_RESTRICT d1, /* 3: convdl */ { int tmp; - tmp = var36.f; + tmp = (int) var36.f; if (tmp == 0x80000000 && !(var36.i & ORC_UINT64_C (0x8000000000000000))) tmp = 0x7fffffff; var35.i = tmp; @@ -6416,7 +6226,7 @@ _backup_audio_orc_double_to_s32 (OrcExecutor * ORC_RESTRICT ex) /* 3: convdl */ { int tmp; - tmp = var36.f; + tmp = (int) var36.f; if (tmp == 0x80000000 && !(var36.i & ORC_UINT64_C (0x8000000000000000))) tmp = 0x7fffffff; var35.i = tmp; @@ -6432,45 +6242,41 @@ audio_orc_double_to_s32 (gint32 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 100, 111, 117, - 98, 108, 101, 95, 116, 111, 95, 115, 51, 50, 11, 4, 4, 12, 8, 8, - 15, 8, 0, 0, 0, 0, 0, 0, 224, 65, 20, 8, 214, 32, 4, 16, - 222, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_double_to_s32); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 100, 111, 117, + 98, 108, 101, 95, 116, 111, 95, 115, 51, 50, 11, 4, 4, 12, 8, 8, + 15, 8, 0, 0, 0, 0, 0, 0, 224, 65, 20, 8, 214, 32, 4, 16, + 222, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_double_to_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "audio_orc_double_to_s32"); - orc_program_set_backup_function (p, _backup_audio_orc_double_to_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_constant_int64 (p, 8, 0x41e0000000000000ULL, "c1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_double_to_s32"); + orc_program_set_backup_function (p, _backup_audio_orc_double_to_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant_int64 (p, 8, 0x41e0000000000000ULL, "c1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.h b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.h index 16b7bb6529..63ccd25324 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.h +++ b/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstaudiopack.orc */ -#ifndef _GSTAUDIOPACK_H_ -#define _GSTAUDIOPACK_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -135,5 +136,3 @@ void audio_orc_double_to_s32 (gint32 * ORC_RESTRICT d1, const gdouble * ORC_REST } #endif -#endif - diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.c b/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.c index 924358ff51..9078fdc29a 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -504,6 +507,7 @@ void video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -539,6 +543,8 @@ void video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -628,18 +634,10 @@ video_orc_blend_little (guint8 * ORC_RESTRICT d1, var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff; var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff; /* 11: div255w */ - var51.x4[0] = - ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) + - (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8; - var51.x4[1] = - ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) + - (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8; - var51.x4[2] = - ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) + - (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8; - var51.x4[3] = - ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) + - (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8; + var51.x4[0] = (((orc_uint16) var50.x4[0]) * 0x8081u) >> 23; + var51.x4[1] = (((orc_uint16) var50.x4[1]) * 0x8081u) >> 23; + var51.x4[2] = (((orc_uint16) var50.x4[2]) * 0x8081u) >> 23; + var51.x4[3] = (((orc_uint16) var50.x4[3]) * 0x8081u) >> 23; /* 12: addw */ var52.x4[0] = var48.x4[0] + var51.x4[0]; var52.x4[1] = var48.x4[1] + var51.x4[1]; @@ -738,18 +736,10 @@ _backup_video_orc_blend_little (OrcExecutor * ORC_RESTRICT ex) var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff; var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff; /* 11: div255w */ - var51.x4[0] = - ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) + - (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8; - var51.x4[1] = - ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) + - (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8; - var51.x4[2] = - ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) + - (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8; - var51.x4[3] = - ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) + - (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8; + var51.x4[0] = (((orc_uint16) var50.x4[0]) * 0x8081u) >> 23; + var51.x4[1] = (((orc_uint16) var50.x4[1]) * 0x8081u) >> 23; + var51.x4[2] = (((orc_uint16) var50.x4[2]) * 0x8081u) >> 23; + var51.x4[3] = (((orc_uint16) var50.x4[3]) * 0x8081u) >> 23; /* 12: addw */ var52.x4[0] = var48.x4[0] + var51.x4[0]; var52.x4[1] = var48.x4[1] + var51.x4[1]; @@ -773,85 +763,81 @@ video_orc_blend_little (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101, - 110, 100, 95, 108, 105, 116, 116, 108, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, 20, 2, 20, - 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157, - 34, 33, 152, 35, 34, 21, 2, 150, 38, 35, 21, 2, 95, 38, 38, 17, - 21, 2, 150, 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, - 37, 37, 36, 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, - 70, 36, 36, 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_blend_little); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101, + 110, 100, 95, 108, 105, 116, 116, 108, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, 20, 2, 20, + 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157, + 34, 33, 152, 35, 34, 21, 2, 150, 38, 35, 21, 2, 95, 38, 38, 17, + 21, 2, 150, 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, + 37, 37, 36, 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, + 70, 36, 36, 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_blend_little); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_blend_little"); - orc_program_set_backup_function (p, _backup_video_orc_blend_little); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_blend_little"); + orc_program_set_backup_function (p, _backup_video_orc_blend_little); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -950,18 +936,10 @@ video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; /* 12: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 13: addw */ var54.x4[0] = var50.x4[0] + var53.x4[0]; var54.x4[1] = var50.x4[1] + var53.x4[1]; @@ -1063,18 +1041,10 @@ _backup_video_orc_blend_big (OrcExecutor * ORC_RESTRICT ex) var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; /* 12: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 13: addw */ var54.x4[0] = var50.x4[0] + var53.x4[0]; var54.x4[1] = var50.x4[1] + var53.x4[1]; @@ -1098,89 +1068,85 @@ video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101, - 110, 100, 95, 98, 105, 103, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, - 0, 255, 14, 4, 24, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, - 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, - 4, 126, 33, 32, 17, 163, 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, - 150, 39, 36, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32, - 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38, - 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157, - 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_blend_big); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101, + 110, 100, 95, 98, 105, 103, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, + 0, 255, 14, 4, 24, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, + 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, + 4, 126, 33, 32, 17, 163, 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, + 150, 39, 36, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32, + 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38, + 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157, + 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_blend_big); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_blend_big"); - orc_program_set_backup_function (p, _backup_video_orc_blend_big); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_constant (p, 2, 0x00000008, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_blend_big"); + orc_program_set_backup_function (p, _backup_video_orc_blend_big); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_constant (p, 2, 0x00000008, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1329,57 +1295,53 @@ video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 73, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, - 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, - 20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 16, 4, - 195, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_I420); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 73, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, + 20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 16, 4, + 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_I420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_I420"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_I420); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_I420"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_I420); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1576,58 +1538,54 @@ video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 73, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, - 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, - 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 188, - 1, 34, 188, 2, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_I420); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 73, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, + 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, + 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 188, + 1, 34, 188, 2, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_I420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_I420"); - orc_program_set_backup_function (p, _backup_video_orc_pack_I420); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 1, "t5"); - orc_program_add_temporary (p, 1, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_I420"); + orc_program_set_backup_function (p, _backup_video_orc_pack_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1724,43 +1682,39 @@ video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 16, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0, - 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y); + static const orc_uint8 bc[] = { + 1, 9, 16, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0, + 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_Y"); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_Y"); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1877,46 +1831,42 @@ video_orc_pack_YA (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 65, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190, - 32, 4, 189, 0, 32, 188, 1, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_YA); + static const orc_uint8 bc[] = { + 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 65, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190, + 32, 4, 189, 0, 32, 188, 1, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_YA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_YA"); - orc_program_set_backup_function (p, _backup_video_orc_pack_YA); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_YA"); + orc_program_set_backup_function (p, _backup_video_orc_pack_YA); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2102,53 +2052,49 @@ video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 89, 85, 89, 50, 11, 8, 8, 12, 4, 4, 14, 2, - 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, - 32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, - 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 89, 85, 89, 50, 11, 8, 8, 12, 4, 4, 14, 2, + 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, + 32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, + 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2311,51 +2257,47 @@ video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, - 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, - 32, 34, 21, 1, 196, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, + 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, + 32, 34, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2518,51 +2460,47 @@ video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, - 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, - 32, 34, 21, 1, 196, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, + 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, + 32, 34, 21, 1, 196, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2747,53 +2685,49 @@ video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 85, 89, 86, 89, 11, 8, 8, 12, 4, 4, 14, 2, - 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, - 33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, - 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 85, 89, 86, 89, 11, 8, 8, 12, 4, 4, 14, 2, + 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, + 33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, + 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2962,53 +2896,49 @@ video_orc_pack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 86, 89, 85, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, - 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, - 32, 34, 183, 33, 33, 21, 1, 196, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 86, 89, 85, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, + 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, + 32, 34, 183, 33, 33, 21, 1, 196, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_VYUY"); - orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_VYUY"); + orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3199,55 +3129,51 @@ video_orc_unpack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 86, 89, 85, 89, 11, 8, 8, 12, 4, 4, 14, 2, - 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, - 33, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, - 1, 195, 0, 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 86, 89, 85, 89, 11, 8, 8, 12, 4, 4, 14, 2, + 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, + 33, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, + 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_VYUY"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_VYUY"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3438,55 +3364,51 @@ video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 89, 86, 89, 85, 11, 8, 8, 12, 4, 4, 14, 2, - 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, - 32, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, - 1, 195, 0, 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 89, 86, 89, 85, 11, 8, 8, 12, 4, 4, 14, 2, + 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, + 32, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, + 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_YVYU"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 2, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_YVYU"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 2, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3655,53 +3577,49 @@ video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 86, 89, 85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, - 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, - 32, 34, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 86, 89, 85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, + 20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189, + 32, 34, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_YVYU"); - orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_YVYU"); + orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3892,61 +3810,57 @@ video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 89, 85, 86, 57, 11, 8, 8, 12, 2, 2, 12, 1, - 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, - 20, 1, 20, 1, 45, 35, 5, 45, 36, 6, 196, 32, 35, 36, 195, 34, - 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 89, 85, 86, 57, 11, 8, 8, 12, 2, 2, 12, 1, + 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, + 20, 1, 20, 1, 45, 35, 5, 45, 36, 6, 196, 32, 35, 36, 195, 34, + 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_YUV9"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 1, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_YUV9"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4139,55 +4053,51 @@ video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 89, 52, 50, 66, 11, 8, 8, 12, 2, 2, 12, 1, - 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, - 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32, - 21, 1, 195, 0, 35, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 89, 52, 50, 66, 11, 8, 8, 12, 2, 2, 12, 1, + 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, + 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32, + 21, 1, 195, 0, 35, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_Y42B"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_Y42B"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4358,52 +4268,48 @@ video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, - 8, 8, 20, 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 190, 34, - 33, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, + 8, 8, 20, 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 190, 34, + 33, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_Y42B"); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_Y42B"); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4554,50 +4460,46 @@ video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 89, 52, 52, 52, 11, 4, 4, 12, 1, 1, 12, 1, - 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, - 5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 89, 52, 52, 52, 11, 4, 4, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, + 5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_Y444"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_Y444"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4732,49 +4634,45 @@ video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, - 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, - 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y444); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, + 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, + 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y444); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_Y444"); - orc_program_set_backup_function (p, _backup_video_orc_pack_Y444); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_Y444"); + orc_program_set_backup_function (p, _backup_video_orc_pack_Y444); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4903,46 +4801,42 @@ video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 71, 82, 65, 89, 56, 11, 4, 4, 12, 1, 1, 14, - 1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 196, 32, 16, - 4, 195, 0, 32, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 71, 82, 65, 89, 56, 11, 4, 4, 12, 1, 1, 14, + 1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 196, 32, 16, + 4, 195, 0, 32, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_GRAY8"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x00008080, "c2"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_GRAY8"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x00008080, "c2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5037,43 +4931,39 @@ video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 71, 82, 65, 89, 56, 11, 1, 1, 12, 4, 4, 20, 2, 190, - 32, 4, 189, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8); + static const orc_uint8 bc[] = { + 1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 71, 82, 65, 89, 56, 11, 1, 1, 12, 4, 4, 20, 2, 190, + 32, 4, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_GRAY8"); - orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_GRAY8"); + orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5146,40 +5036,36 @@ video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, - 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, + 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGRA"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGRA"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5252,40 +5138,36 @@ video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_BGRA"); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_BGRA"); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5370,52 +5252,48 @@ video_orc_pack_RGBA_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 113, - 33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 113, + 33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGBA_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGBA_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5500,52 +5378,48 @@ video_orc_unpack_RGBA_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, - 4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, + 4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGBA_le"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGBA_le"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5630,52 +5504,48 @@ video_orc_pack_RGBA_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 113, - 33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 113, + 33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGBA_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGBA_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5760,52 +5630,48 @@ video_orc_unpack_RGBA_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, - 4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, + 4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGBA_be"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGBA_be"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5896,52 +5762,48 @@ video_orc_unpack_ABGR_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, - 4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, + 4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_ABGR_le"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_ABGR_le"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6032,52 +5894,48 @@ video_orc_pack_ABGR_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 184, - 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 184, + 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_ABGR_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000008, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_ABGR_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000008, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6168,52 +6026,48 @@ video_orc_unpack_ABGR_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, - 4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, + 4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_ABGR_be"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_ABGR_be"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6304,52 +6158,48 @@ video_orc_pack_ABGR_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 184, - 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 184, + 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_ABGR_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_constant (p, 4, 0x00000008, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_ABGR_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6520,49 +6370,45 @@ video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 78, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2, - 2, 14, 1, 255, 0, 0, 0, 20, 4, 20, 4, 195, 33, 5, 5, 21, - 1, 196, 32, 16, 4, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 78, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2, + 2, 14, 1, 255, 0, 0, 0, 20, 4, 20, 4, 195, 33, 5, 5, 21, + 1, 196, 32, 16, 4, 21, 1, 195, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_NV12"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_NV12"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6706,48 +6552,44 @@ video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 78, 86, 49, 50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, - 4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 190, 1, - 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV12); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 78, 86, 49, 50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, + 4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 190, 1, + 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV12); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_NV12"); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV12); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_NV12"); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV12); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -6913,49 +6755,45 @@ video_orc_unpack_AV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 65, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2, - 2, 12, 2, 2, 20, 4, 20, 4, 195, 33, 5, 5, 21, 1, 196, 32, - 6, 4, 21, 1, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_AV12); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 65, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2, + 2, 12, 2, 2, 20, 4, 20, 4, 195, 33, 5, 5, 21, 1, 196, 32, + 6, 4, 21, 1, 195, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_AV12); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_AV12"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_AV12); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_AV12"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_AV12); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7132,51 +6970,47 @@ video_orc_pack_AV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 65, 86, 49, 50, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, - 8, 8, 20, 4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, - 32, 21, 1, 188, 2, 32, 190, 1, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_AV12); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 65, 86, 49, 50, 11, 2, 2, 11, 2, 2, 11, 2, 2, 12, + 8, 8, 20, 4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, + 32, 21, 1, 188, 2, 32, 190, 1, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_AV12); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_AV12"); - orc_program_set_backup_function (p, _backup_video_orc_pack_AV12); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 2, "d3"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_AV12"); + orc_program_set_backup_function (p, _backup_video_orc_pack_AV12); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 2, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D3, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7349,53 +7183,49 @@ video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 78, 86, 50, 49, 11, 8, 8, 12, 2, 2, 12, 2, - 2, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 183, 32, 5, - 195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 78, 86, 50, 49, 11, 8, 8, 12, 2, 2, 12, 2, + 2, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 183, 32, 5, + 195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_NV21"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_NV21"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7545,51 +7375,47 @@ video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 78, 86, 50, 49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, - 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, - 190, 34, 33, 183, 1, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV21); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 78, 86, 50, 49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, + 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, + 190, 34, 33, 183, 1, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV21); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_NV21"); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV21); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_NV21"); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV21); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7713,46 +7539,42 @@ video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 78, 86, 50, 52, 11, 4, 4, 12, 1, 1, 12, 2, - 2, 14, 1, 255, 0, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32, - 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 78, 86, 50, 52, 11, 4, 4, 12, 1, 1, 12, 2, + 2, 14, 1, 255, 0, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32, + 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_NV24"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 1, 0x000000ff, "c1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_NV24"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 1, 0x000000ff, "c1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -7860,44 +7682,40 @@ video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 78, 86, 50, 52, 11, 1, 1, 11, 2, 2, 12, 4, 4, 20, - 2, 198, 1, 32, 4, 189, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV24); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 78, 86, 50, 52, 11, 1, 1, 11, 2, 2, 12, 4, 4, 20, + 2, 198, 1, 32, 4, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV24); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_NV24"); - orc_program_set_backup_function (p, _backup_video_orc_pack_NV24); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_NV24"); + orc_program_set_backup_function (p, _backup_video_orc_pack_NV24); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8045,57 +7863,53 @@ video_orc_unpack_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 65, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, - 1, 12, 1, 1, 12, 1, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, - 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 7, 4, 195, 0, 33, - 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_A420); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 65, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 12, 1, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, + 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 7, 4, 195, 0, 33, + 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_A420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_A420"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_A420); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_A420"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_A420); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8327,59 +8141,55 @@ video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 65, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11, - 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, - 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199, - 35, 34, 33, 188, 1, 34, 188, 2, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_A420); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 65, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11, + 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, + 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199, + 35, 34, 33, 188, 1, 34, 188, 2, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_A420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_A420"); - orc_program_set_backup_function (p, _backup_video_orc_pack_A420); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_destination (p, 2, "d4"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_A420"); + orc_program_set_backup_function (p, _backup_video_orc_pack_A420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 2, "d4"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8499,46 +8309,42 @@ video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 65, 89, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190, - 32, 4, 189, 0, 32, 188, 1, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_AY); + static const orc_uint8 bc[] = { + 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 65, 89, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190, + 32, 4, 189, 0, 32, 188, 1, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_AY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_AY"); - orc_program_set_backup_function (p, _backup_video_orc_pack_AY); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_AY"); + orc_program_set_backup_function (p, _backup_video_orc_pack_AY); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8612,40 +8418,36 @@ video_orc_unpack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0, - 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0, + 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_VUYA"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_VUYA"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8718,40 +8520,36 @@ video_orc_pack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA); + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_VUYA"); - orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_VUYA"); + orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -8988,82 +8786,78 @@ video_orc_unpack_RGB15_le (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 4, 4, 12, - 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, - 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, - 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, - 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35, - 19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22, - 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 4, 4, 12, + 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, + 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, + 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, + 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35, + 19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22, + 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB15_le"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000005, "c4"); - orc_program_add_constant (p, 2, 0x00000210, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB15_le"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000005, "c4"); + orc_program_add_constant (p, 2, 0x00000210, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -9300,82 +9094,78 @@ video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 4, 4, 12, - 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, - 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, - 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, - 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35, - 19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22, - 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 4, 4, 12, + 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, + 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, + 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, + 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35, + 19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22, + 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB15_be"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000005, "c4"); - orc_program_add_constant (p, 2, 0x00000210, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB15_be"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000005, "c4"); + orc_program_add_constant (p, 2, 0x00000210, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -9578,83 +9368,79 @@ video_orc_unpack_RGB15_le_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, - 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, - 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, - 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195, - 36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_RGB15_le_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, + 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, + 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, + 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195, + 36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_RGB15_le_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB15_le_trunc"); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_RGB15_le_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000007, "c4"); - orc_program_add_constant (p, 2, 0x00000002, "c5"); - orc_program_add_constant (p, 2, 0x00000003, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB15_le_trunc"); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_RGB15_le_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000007, "c4"); + orc_program_add_constant (p, 2, 0x00000002, "c5"); + orc_program_add_constant (p, 2, 0x00000003, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -9857,83 +9643,79 @@ video_orc_unpack_RGB15_be_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, - 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, - 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, - 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195, - 36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_RGB15_be_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, + 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, + 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, + 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195, + 36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_RGB15_be_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB15_be_trunc"); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_RGB15_be_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000007, "c4"); - orc_program_add_constant (p, 2, 0x00000002, "c5"); - orc_program_add_constant (p, 2, 0x00000003, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB15_be_trunc"); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_RGB15_be_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000007, "c4"); + orc_program_add_constant (p, 2, 0x00000002, "c5"); + orc_program_add_constant (p, 2, 0x00000003, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -10104,74 +9886,70 @@ video_orc_pack_RGB15_le (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, - 0, 248, 14, 4, 1, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, - 27, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, - 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 190, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, + 0, 248, 14, 4, 1, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, + 27, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, + 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 190, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGB15_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x0000f800, "c1"); - orc_program_add_constant (p, 4, 0x00f80000, "c2"); - orc_program_add_constant (p, 4, 0xf8000000, "c3"); - orc_program_add_constant (p, 4, 0x00000001, "c4"); - orc_program_add_constant (p, 4, 0x0000000e, "c5"); - orc_program_add_constant (p, 4, 0x0000001b, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGB15_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x0000f800, "c1"); + orc_program_add_constant (p, 4, 0x00f80000, "c2"); + orc_program_add_constant (p, 4, 0xf8000000, "c3"); + orc_program_add_constant (p, 4, 0x00000001, "c4"); + orc_program_add_constant (p, 4, 0x0000000e, "c5"); + orc_program_add_constant (p, 4, 0x0000001b, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -10342,74 +10120,70 @@ video_orc_pack_RGB15_be (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0, - 0, 0, 14, 4, 9, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4, - 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, - 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 191, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0, + 0, 0, 14, 4, 9, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4, + 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, + 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 191, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGB15_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00f80000, "c1"); - orc_program_add_constant (p, 4, 0x0000f800, "c2"); - orc_program_add_constant (p, 4, 0x000000f8, "c3"); - orc_program_add_constant (p, 4, 0x00000009, "c4"); - orc_program_add_constant (p, 4, 0x00000006, "c5"); - orc_program_add_constant (p, 4, 0x00000003, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGB15_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00f80000, "c1"); + orc_program_add_constant (p, 4, 0x0000f800, "c2"); + orc_program_add_constant (p, 4, 0x000000f8, "c3"); + orc_program_add_constant (p, 4, 0x00000009, "c4"); + orc_program_add_constant (p, 4, 0x00000006, "c5"); + orc_program_add_constant (p, 4, 0x00000003, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -10646,82 +10420,78 @@ video_orc_unpack_BGR15_le (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 4, 4, 12, - 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, - 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, - 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, - 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33, - 19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22, - 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 4, 4, 12, + 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, + 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, + 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, + 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33, + 19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22, + 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR15_le"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000005, "c4"); - orc_program_add_constant (p, 2, 0x00000210, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR15_le"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000005, "c4"); + orc_program_add_constant (p, 2, 0x00000210, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -10958,82 +10728,78 @@ video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 4, 4, 12, - 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, - 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, - 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, - 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33, - 19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22, - 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 4, 4, 12, + 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, + 31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, + 14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, + 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33, + 19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22, + 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR15_be"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000005, "c4"); - orc_program_add_constant (p, 2, 0x00000210, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR15_be"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000005, "c4"); + orc_program_add_constant (p, 2, 0x00000210, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -11236,83 +11002,79 @@ video_orc_unpack_BGR15_le_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, - 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, - 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, - 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195, - 36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_BGR15_le_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, + 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, + 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, + 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195, + 36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_BGR15_le_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR15_le_trunc"); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_BGR15_le_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000007, "c4"); - orc_program_add_constant (p, 2, 0x00000002, "c5"); - orc_program_add_constant (p, 2, 0x00000003, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR15_le_trunc"); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_BGR15_le_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000007, "c4"); + orc_program_add_constant (p, 2, 0x00000002, "c5"); + orc_program_add_constant (p, 2, 0x00000003, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -11515,83 +11277,79 @@ video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 95, 116, 114, 117, - 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, - 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, - 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, - 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195, - 36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_BGR15_be_trunc); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, + 224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, + 14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, + 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195, + 36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_BGR15_be_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR15_be_trunc"); - orc_program_set_backup_function (p, - _backup_video_orc_unpack_BGR15_be_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00007c00, "c1"); - orc_program_add_constant (p, 2, 0x000003e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000007, "c4"); - orc_program_add_constant (p, 2, 0x00000002, "c5"); - orc_program_add_constant (p, 2, 0x00000003, "c6"); - orc_program_add_constant (p, 2, 0x000000ff, "c7"); - orc_program_add_constant (p, 4, 0x00000008, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR15_be_trunc"); + orc_program_set_backup_function (p, + _backup_video_orc_unpack_BGR15_be_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00007c00, "c1"); + orc_program_add_constant (p, 2, 0x000003e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000007, "c4"); + orc_program_add_constant (p, 2, 0x00000002, "c5"); + orc_program_add_constant (p, 2, 0x00000003, "c6"); + orc_program_add_constant (p, 2, 0x000000ff, "c7"); + orc_program_add_constant (p, 4, 0x00000008, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -11762,74 +11520,70 @@ video_orc_pack_BGR15_le (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, - 0, 248, 14, 4, 17, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, - 11, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 35, 35, - 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 190, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, + 0, 248, 14, 4, 17, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, + 11, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 35, 35, + 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 190, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_BGR15_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x0000f800, "c1"); - orc_program_add_constant (p, 4, 0x00f80000, "c2"); - orc_program_add_constant (p, 4, 0xf8000000, "c3"); - orc_program_add_constant (p, 4, 0x00000011, "c4"); - orc_program_add_constant (p, 4, 0x0000000e, "c5"); - orc_program_add_constant (p, 4, 0x0000000b, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_BGR15_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x0000f800, "c1"); + orc_program_add_constant (p, 4, 0x00f80000, "c2"); + orc_program_add_constant (p, 4, 0xf8000000, "c3"); + orc_program_add_constant (p, 4, 0x00000011, "c4"); + orc_program_add_constant (p, 4, 0x0000000e, "c5"); + orc_program_add_constant (p, 4, 0x0000000b, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -12000,74 +11754,70 @@ video_orc_pack_BGR15_be (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0, - 0, 0, 14, 4, 7, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4, - 19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35, - 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 191, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0, + 0, 0, 14, 4, 7, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4, + 19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35, + 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 191, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_BGR15_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00f80000, "c1"); - orc_program_add_constant (p, 4, 0x0000f800, "c2"); - orc_program_add_constant (p, 4, 0x000000f8, "c3"); - orc_program_add_constant (p, 4, 0x00000007, "c4"); - orc_program_add_constant (p, 4, 0x00000006, "c5"); - orc_program_add_constant (p, 4, 0x00000013, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_BGR15_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00f80000, "c1"); + orc_program_add_constant (p, 4, 0x0000f800, "c2"); + orc_program_add_constant (p, 4, 0x000000f8, "c3"); + orc_program_add_constant (p, 4, 0x00000007, "c4"); + orc_program_add_constant (p, 4, 0x00000006, "c5"); + orc_program_add_constant (p, 4, 0x00000013, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -12326,86 +12076,82 @@ video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 54, 11, 4, 4, 12, 2, 2, 14, - 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0, - 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0, - 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, - 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 95, 33, 33, 19, - 93, 35, 35, 20, 90, 33, 33, 21, 90, 34, 34, 22, 90, 35, 35, 21, - 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0, - 38, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 54, 11, 4, 4, 12, 2, 2, 14, + 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0, + 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0, + 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, + 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 95, 33, 33, 19, + 93, 35, 35, 20, 90, 33, 33, 21, 90, 34, 34, 22, 90, 35, 35, 21, + 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0, + 38, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB16"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x0000f800, "c1"); - orc_program_add_constant (p, 2, 0x000007e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000006, "c4"); - orc_program_add_constant (p, 2, 0x00000005, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x00002080, "c7"); - orc_program_add_constant (p, 2, 0x000000ff, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB16"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x0000f800, "c1"); + orc_program_add_constant (p, 2, 0x000007e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000006, "c4"); + orc_program_add_constant (p, 2, 0x00000005, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x00002080, "c7"); + orc_program_add_constant (p, 2, 0x000000ff, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -12624,79 +12370,75 @@ video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 71, 66, 49, 54, 95, 116, 114, 117, 110, 99, 11, - 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, - 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3, - 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, - 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 33, 32, 16, 73, 34, - 32, 17, 73, 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, - 35, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, - 160, 0, 38, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 71, 66, 49, 54, 95, 116, 114, 117, 110, 99, 11, + 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, + 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3, + 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, + 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 33, 32, 16, 73, 34, + 32, 17, 73, 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, + 35, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, + 160, 0, 38, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RGB16_trunc"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x0000f800, "c1"); - orc_program_add_constant (p, 2, 0x000007e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000008, "c4"); - orc_program_add_constant (p, 2, 0x00000003, "c5"); - orc_program_add_constant (p, 2, 0x000000ff, "c6"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RGB16_trunc"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x0000f800, "c1"); + orc_program_add_constant (p, 2, 0x000007e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000008, "c4"); + orc_program_add_constant (p, 2, 0x00000003, "c5"); + orc_program_add_constant (p, 2, 0x000000ff, "c6"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -12861,70 +12603,66 @@ video_orc_pack_RGB16_le (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, - 0, 248, 14, 4, 13, 0, 0, 0, 14, 4, 27, 0, 0, 0, 20, 4, - 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, - 34, 32, 17, 106, 35, 32, 18, 126, 34, 34, 19, 126, 35, 35, 20, 123, - 36, 33, 34, 123, 36, 36, 35, 190, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, + 0, 248, 14, 4, 13, 0, 0, 0, 14, 4, 27, 0, 0, 0, 20, 4, + 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, + 34, 32, 17, 106, 35, 32, 18, 126, 34, 34, 19, 126, 35, 35, 20, 123, + 36, 33, 34, 123, 36, 36, 35, 190, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGB16_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x0000f800, "c1"); - orc_program_add_constant (p, 4, 0x00fc0000, "c2"); - orc_program_add_constant (p, 4, 0xf8000000, "c3"); - orc_program_add_constant (p, 4, 0x0000000d, "c4"); - orc_program_add_constant (p, 4, 0x0000001b, "c5"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGB16_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x0000f800, "c1"); + orc_program_add_constant (p, 4, 0x00fc0000, "c2"); + orc_program_add_constant (p, 4, 0xf8000000, "c3"); + orc_program_add_constant (p, 4, 0x0000000d, "c4"); + orc_program_add_constant (p, 4, 0x0000001b, "c5"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -13095,74 +12833,70 @@ video_orc_pack_RGB16_be (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 71, 66, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4, - 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, - 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 191, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 71, 66, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4, + 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, + 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 191, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RGB16_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00f80000, "c1"); - orc_program_add_constant (p, 4, 0x0000fc00, "c2"); - orc_program_add_constant (p, 4, 0x000000f8, "c3"); - orc_program_add_constant (p, 4, 0x00000008, "c4"); - orc_program_add_constant (p, 4, 0x00000005, "c5"); - orc_program_add_constant (p, 4, 0x00000003, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RGB16_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00f80000, "c1"); + orc_program_add_constant (p, 4, 0x0000fc00, "c2"); + orc_program_add_constant (p, 4, 0x000000f8, "c3"); + orc_program_add_constant (p, 4, 0x00000008, "c4"); + orc_program_add_constant (p, 4, 0x00000005, "c5"); + orc_program_add_constant (p, 4, 0x00000003, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -13421,86 +13155,82 @@ video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 54, 11, 4, 4, 12, 2, 2, 14, - 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0, - 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0, - 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, - 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 95, 35, 35, 19, - 93, 33, 33, 20, 90, 35, 35, 21, 90, 34, 34, 22, 90, 33, 33, 21, - 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0, - 38, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 54, 11, 4, 4, 12, 2, 2, 14, + 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0, + 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0, + 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, + 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 95, 35, 35, 19, + 93, 33, 33, 20, 90, 35, 35, 21, 90, 34, 34, 22, 90, 33, 33, 21, + 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0, + 38, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR16"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x0000f800, "c1"); - orc_program_add_constant (p, 2, 0x000007e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000006, "c4"); - orc_program_add_constant (p, 2, 0x00000005, "c5"); - orc_program_add_constant (p, 2, 0x00004200, "c6"); - orc_program_add_constant (p, 2, 0x00002080, "c7"); - orc_program_add_constant (p, 2, 0x000000ff, "c8"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR16"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x0000f800, "c1"); + orc_program_add_constant (p, 2, 0x000007e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000006, "c4"); + orc_program_add_constant (p, 2, 0x00000005, "c5"); + orc_program_add_constant (p, 2, 0x00004200, "c6"); + orc_program_add_constant (p, 2, 0x00002080, "c7"); + orc_program_add_constant (p, 2, 0x000000ff, "c8"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -13719,79 +13449,75 @@ video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 66, 71, 82, 49, 54, 95, 116, 114, 117, 110, 99, 11, - 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, - 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3, - 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, - 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 35, 32, 16, 73, 34, - 32, 17, 73, 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, - 33, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, - 160, 0, 38, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 66, 71, 82, 49, 54, 95, 116, 114, 117, 110, 99, 11, + 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, + 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3, + 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, + 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 35, 32, 16, 73, 34, + 32, 17, 73, 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, + 33, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, + 160, 0, 38, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_BGR16_trunc"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x0000f800, "c1"); - orc_program_add_constant (p, 2, 0x000007e0, "c2"); - orc_program_add_constant (p, 2, 0x0000001f, "c3"); - orc_program_add_constant (p, 2, 0x00000008, "c4"); - orc_program_add_constant (p, 2, 0x00000003, "c5"); - orc_program_add_constant (p, 2, 0x000000ff, "c6"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_BGR16_trunc"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x0000f800, "c1"); + orc_program_add_constant (p, 2, 0x000007e0, "c2"); + orc_program_add_constant (p, 2, 0x0000001f, "c3"); + orc_program_add_constant (p, 2, 0x00000008, "c4"); + orc_program_add_constant (p, 2, 0x00000003, "c5"); + orc_program_add_constant (p, 2, 0x000000ff, "c6"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -13962,74 +13688,70 @@ video_orc_pack_BGR16_le (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 66, 71, 82, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, - 0, 248, 14, 4, 11, 0, 0, 0, 14, 4, 13, 0, 0, 0, 14, 4, - 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, - 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 190, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 66, 71, 82, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, + 0, 248, 14, 4, 11, 0, 0, 0, 14, 4, 13, 0, 0, 0, 14, 4, + 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, + 19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 190, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_BGR16_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x0000f800, "c1"); - orc_program_add_constant (p, 4, 0x00fc0000, "c2"); - orc_program_add_constant (p, 4, 0xf8000000, "c3"); - orc_program_add_constant (p, 4, 0x0000000b, "c4"); - orc_program_add_constant (p, 4, 0x0000000d, "c5"); - orc_program_add_constant (p, 4, 0x00000010, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_BGR16_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x0000f800, "c1"); + orc_program_add_constant (p, 4, 0x00fc0000, "c2"); + orc_program_add_constant (p, 4, 0xf8000000, "c3"); + orc_program_add_constant (p, 4, 0x0000000b, "c4"); + orc_program_add_constant (p, 4, 0x0000000d, "c5"); + orc_program_add_constant (p, 4, 0x00000010, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -14200,74 +13922,70 @@ video_orc_pack_BGR16_be (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 66, 71, 82, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0, - 0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4, - 19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, - 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35, - 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, - 35, 191, 0, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 66, 71, 82, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4, + 14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0, + 0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4, + 19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, + 4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35, + 19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, + 35, 191, 0, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_BGR16_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00f80000, "c1"); - orc_program_add_constant (p, 4, 0x0000fc00, "c2"); - orc_program_add_constant (p, 4, 0x000000f8, "c3"); - orc_program_add_constant (p, 4, 0x00000008, "c4"); - orc_program_add_constant (p, 4, 0x00000005, "c5"); - orc_program_add_constant (p, 4, 0x00000013, "c6"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_BGR16_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00f80000, "c1"); + orc_program_add_constant (p, 4, 0x0000fc00, "c2"); + orc_program_add_constant (p, 4, 0x000000f8, "c3"); + orc_program_add_constant (p, 4, 0x00000008, "c4"); + orc_program_add_constant (p, 4, 0x00000005, "c5"); + orc_program_add_constant (p, 4, 0x00000013, "c6"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -14450,79 +14168,75 @@ video_orc_unpack_RBGA_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 66, 71, 65, 95, 108, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 0, 0, 0, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, - 0, 255, 0, 14, 4, 0, 255, 0, 0, 14, 4, 24, 0, 0, 0, 14, - 4, 8, 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, - 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, - 32, 17, 106, 35, 32, 18, 106, 36, 32, 19, 126, 33, 33, 20, 124, 34, - 34, 21, 124, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, - 37, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_le); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 66, 71, 65, 95, 108, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 0, 0, 0, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, + 0, 255, 0, 14, 4, 0, 255, 0, 0, 14, 4, 24, 0, 0, 0, 14, + 4, 8, 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, + 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, + 32, 17, 106, 35, 32, 18, 106, 36, 32, 19, 126, 33, 33, 20, 124, 34, + 34, 21, 124, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, + 37, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RBGA_le"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x000000ff, "c2"); - orc_program_add_constant (p, 4, 0x00ff0000, "c3"); - orc_program_add_constant (p, 4, 0x0000ff00, "c4"); - orc_program_add_constant (p, 4, 0x00000018, "c5"); - orc_program_add_constant (p, 4, 0x00000008, "c6"); - orc_program_add_constant (p, 4, 0x00000010, "c7"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RBGA_le"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x000000ff, "c2"); + orc_program_add_constant (p, 4, 0x00ff0000, "c3"); + orc_program_add_constant (p, 4, 0x0000ff00, "c4"); + orc_program_add_constant (p, 4, 0x00000018, "c5"); + orc_program_add_constant (p, 4, 0x00000008, "c6"); + orc_program_add_constant (p, 4, 0x00000010, "c7"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -14705,79 +14419,75 @@ video_orc_unpack_RBGA_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 82, 66, 71, 65, 95, 98, 101, 11, 4, 4, 12, 4, - 4, 14, 4, 255, 0, 0, 0, 14, 4, 0, 0, 0, 255, 14, 4, 0, - 255, 0, 0, 14, 4, 0, 0, 255, 0, 14, 4, 24, 0, 0, 0, 14, - 4, 8, 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, - 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, - 32, 17, 106, 35, 32, 18, 106, 36, 32, 19, 124, 33, 33, 20, 126, 34, - 34, 21, 126, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, - 37, 36, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_be); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 82, 66, 71, 65, 95, 98, 101, 11, 4, 4, 12, 4, + 4, 14, 4, 255, 0, 0, 0, 14, 4, 0, 0, 0, 255, 14, 4, 0, + 255, 0, 0, 14, 4, 0, 0, 255, 0, 14, 4, 24, 0, 0, 0, 14, + 4, 8, 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, + 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, + 32, 17, 106, 35, 32, 18, 106, 36, 32, 19, 124, 33, 33, 20, 126, 34, + 34, 21, 126, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, + 37, 36, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_unpack_RBGA_be"); - orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 4, 0xff000000, "c2"); - orc_program_add_constant (p, 4, 0x0000ff00, "c3"); - orc_program_add_constant (p, 4, 0x00ff0000, "c4"); - orc_program_add_constant (p, 4, 0x00000018, "c5"); - orc_program_add_constant (p, 4, 0x00000008, "c6"); - orc_program_add_constant (p, 4, 0x00000010, "c7"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_unpack_RBGA_be"); + orc_program_set_backup_function (p, _backup_video_orc_unpack_RBGA_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 4, 0xff000000, "c2"); + orc_program_add_constant (p, 4, 0x0000ff00, "c3"); + orc_program_add_constant (p, 4, 0x00ff0000, "c4"); + orc_program_add_constant (p, 4, 0x00000018, "c5"); + orc_program_add_constant (p, 4, 0x00000008, "c6"); + orc_program_add_constant (p, 4, 0x00000010, "c7"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -14960,79 +14670,75 @@ video_orc_pack_RBGA_le (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 66, 71, 65, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 255, 0, 0, 0, 14, 4, 0, 255, 0, 0, 14, 4, 0, 0, 255, - 0, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, 14, 4, 8, - 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, - 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, 32, 17, - 106, 35, 32, 18, 106, 36, 32, 19, 124, 33, 33, 20, 126, 34, 34, 21, - 126, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, 37, 36, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_le); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 66, 71, 65, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 255, 0, 0, 0, 14, 4, 0, 255, 0, 0, 14, 4, 0, 0, 255, + 0, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, 14, 4, 8, + 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, + 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, 32, 17, + 106, 35, 32, 18, 106, 36, 32, 19, 124, 33, 33, 20, 126, 34, 34, 21, + 126, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, 37, 36, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_le); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RBGA_le"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_le); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 4, 0x0000ff00, "c2"); - orc_program_add_constant (p, 4, 0x00ff0000, "c3"); - orc_program_add_constant (p, 4, 0xff000000, "c4"); - orc_program_add_constant (p, 4, 0x00000018, "c5"); - orc_program_add_constant (p, 4, 0x00000008, "c6"); - orc_program_add_constant (p, 4, 0x00000010, "c7"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RBGA_le"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_le); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 4, 0x0000ff00, "c2"); + orc_program_add_constant (p, 4, 0x00ff0000, "c3"); + orc_program_add_constant (p, 4, 0xff000000, "c4"); + orc_program_add_constant (p, 4, 0x00000018, "c5"); + orc_program_add_constant (p, 4, 0x00000008, "c6"); + orc_program_add_constant (p, 4, 0x00000010, "c7"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15215,79 +14921,75 @@ video_orc_pack_RBGA_be (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 82, 66, 71, 65, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, - 4, 0, 0, 0, 255, 14, 4, 0, 0, 255, 0, 14, 4, 0, 255, 0, - 0, 14, 4, 255, 0, 0, 0, 14, 4, 24, 0, 0, 0, 14, 4, 8, - 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, - 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, 32, 17, - 106, 35, 32, 18, 106, 36, 32, 19, 126, 33, 33, 20, 124, 34, 34, 21, - 124, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, 37, 36, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_be); + static const orc_uint8 bc[] = { + 1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99, + 107, 95, 82, 66, 71, 65, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14, + 4, 0, 0, 0, 255, 14, 4, 0, 0, 255, 0, 14, 4, 0, 255, 0, + 0, 14, 4, 255, 0, 0, 0, 14, 4, 24, 0, 0, 0, 14, 4, 8, + 0, 0, 0, 14, 4, 16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, + 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, 32, 17, + 106, 35, 32, 18, 106, 36, 32, 19, 126, 33, 33, 20, 124, 34, 34, 21, + 124, 36, 36, 22, 123, 37, 33, 34, 123, 37, 37, 35, 123, 0, 37, 36, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_be); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_pack_RBGA_be"); - orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_be); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00ff0000, "c2"); - orc_program_add_constant (p, 4, 0x0000ff00, "c3"); - orc_program_add_constant (p, 4, 0x000000ff, "c4"); - orc_program_add_constant (p, 4, 0x00000018, "c5"); - orc_program_add_constant (p, 4, 0x00000008, "c6"); - orc_program_add_constant (p, 4, 0x00000010, "c7"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_pack_RBGA_be"); + orc_program_set_backup_function (p, _backup_video_orc_pack_RBGA_be); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00ff0000, "c2"); + orc_program_add_constant (p, 4, 0x0000ff00, "c3"); + orc_program_add_constant (p, 4, 0x000000ff, "c4"); + orc_program_add_constant (p, 4, 0x00000018, "c5"); + orc_program_add_constant (p, 4, 0x00000008, "c6"); + orc_program_add_constant (p, 4, 0x00000010, "c7"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C7, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15386,46 +15088,41 @@ video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 98, 105, 108, 105, 110, 101, 97, 114, 95, - 117, - 51, 50, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, 24, - 25, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_bilinear_u32); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 98, 105, 108, 105, 110, 101, 97, 114, 95, 117, + 51, 50, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, 24, + 25, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_bilinear_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_bilinear_u32"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_bilinear_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_parameter (p, 4, "p2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_bilinear_u32"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_bilinear_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_parameter (p, 4, "p2"); - orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_P1, ORC_VAR_P2); + orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_P2); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15574,64 +15271,60 @@ video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, 114, - 103, 101, 95, 108, 105, 110, 101, 97, 114, 95, 117, 56, 11, 1, 1, 12, - 1, 1, 12, 1, 1, 14, 2, 128, 0, 0, 0, 16, 1, 20, 2, 20, - 2, 20, 1, 20, 1, 43, 34, 4, 150, 32, 4, 150, 33, 5, 98, 33, - 33, 32, 89, 33, 33, 24, 70, 33, 33, 16, 158, 35, 33, 33, 0, 35, - 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, 114, + 103, 101, 95, 108, 105, 110, 101, 97, 114, 95, 117, 56, 11, 1, 1, 12, + 1, 1, 12, 1, 1, 14, 2, 128, 0, 0, 0, 16, 1, 20, 2, 20, + 2, 20, 1, 20, 1, 43, 34, 4, 150, 32, 4, 150, 33, 5, 98, 33, + 33, 32, 89, 33, 33, 24, 70, 33, 33, 16, 158, 35, 33, 33, 0, 35, + 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_merge_linear_u8"); - orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_constant (p, 2, 0x00000080, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_merge_linear_u8"); + orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_constant (p, 2, 0x00000080, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); - orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15703,41 +15396,37 @@ video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, - 109, 115, 101, 116, 95, 50, 100, 11, 1, 1, 16, 1, 64, 0, 24, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_memset_2d); + static const orc_uint8 bc[] = { + 1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, + 109, 115, 101, 116, 95, 50, 100, 11, 1, 1, 16, 1, 64, 0, 24, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_memset_2d); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_memset_2d"); - orc_program_set_backup_function (p, _backup_video_orc_memset_2d); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_parameter (p, 1, "p1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_memset_2d"); + orc_program_set_backup_function (p, _backup_video_orc_memset_2d); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_parameter (p, 1, "p1"); - orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15819,41 +15508,37 @@ video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, - 109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d); + static const orc_uint8 bc[] = { + 1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, + 109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_memcpy_2d"); - orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_memcpy_2d"); + orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -15929,40 +15614,36 @@ video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 117, 49, 54, 95, 116, 111, 95, 117, 56, 11, 1, - 1, 12, 2, 2, 158, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 117, 49, 54, 95, 116, 111, 95, 117, 56, 11, 1, + 1, 12, 2, 2, 158, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_u16_to_u8"); - orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_u16_to_u8"); + orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16051,40 +15732,36 @@ video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 117, 56, 95, 116, 111, 95, 117, 49, 54, 11, 2, - 2, 12, 1, 1, 196, 0, 4, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 117, 56, 95, 116, 111, 95, 117, 49, 54, 11, 2, + 2, 12, 1, 1, 196, 0, 4, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_u8_to_u16"); - orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_u8_to_u16"); + orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16145,40 +15822,36 @@ void video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 97, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 97, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_splat_u16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_splat_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_splat_u16"); - orc_program_set_backup_function (p, _backup_video_orc_splat_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_splat_u16"); + orc_program_set_backup_function (p, _backup_video_orc_splat_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_parameter (p, 2, "p1"); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16239,40 +15912,36 @@ void video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 128, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 128, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_splat_u32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_video_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_video_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16322,7 +15991,7 @@ _backup_video_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var32.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: storeq */ @@ -16335,40 +16004,36 @@ void video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 95, 117, 54, 52, 11, 8, 8, 18, 8, 135, 0, 24, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 95, 117, 54, 52, 11, 8, 8, 18, 8, 135, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_splat_u64); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_splat_u64); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_splat_u64"); - orc_program_set_backup_function (p, _backup_video_orc_splat_u64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter_int64 (p, 8, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_splat_u64"); + orc_program_set_backup_function (p, _backup_video_orc_splat_u64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_append_2 (p, "storeq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storeq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16486,43 +16151,39 @@ void video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, - 97, 116, 50, 95, 117, 54, 52, 11, 8, 8, 16, 4, 20, 4, 115, 32, - 24, 21, 2, 196, 0, 32, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_splat2_u64); + static const orc_uint8 bc[] = { + 1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108, + 97, 116, 50, 95, 117, 54, 52, 11, 8, 8, 16, 4, 20, 4, 115, 32, + 24, 21, 2, 196, 0, 32, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_splat2_u64); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_splat2_u64"); - orc_program_set_backup_function (p, _backup_video_orc_splat2_u64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_splat2_u64"); + orc_program_set_backup_function (p, _backup_video_orc_splat2_u64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16701,51 +16362,47 @@ video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4, - 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, - 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21, 1, 196, 1, - 32, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4, + 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, + 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21, 1, 196, 1, + 32, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_I420_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_I420_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -16928,51 +16585,47 @@ video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4, - 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, - 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21, 1, 196, 1, - 5, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4, + 4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1, + 20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21, 1, 196, 1, + 5, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_I420_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_I420_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17171,64 +16824,60 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4, - 4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, - 16, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7, - 196, 32, 34, 35, 196, 33, 24, 4, 195, 0, 33, 32, 196, 33, 24, 5, - 195, 1, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4, + 4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, + 16, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7, + 196, 32, 34, 35, 196, 33, 24, 4, 195, 0, 33, 32, 196, 33, 24, 5, + 195, 1, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_I420_AYUV"); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_I420_AYUV"); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17422,60 +17071,56 @@ video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2, - 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, - 20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97, 0, 34, 21, - 1, 199, 33, 34, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3, - 2, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2, + 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, + 20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97, 0, 34, 21, + 1, 199, 33, 34, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3, + 2, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_YUY2_I420"); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_destination (p, 1, "d4"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_YUY2_I420"); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17561,41 +17206,37 @@ video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11, - 4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11, + 4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_UYVY_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_UYVY_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17700,47 +17341,43 @@ video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, - 52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42, - 1, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_420_422); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, + 52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42, + 1, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_420_422); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_420_422"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_420_422); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_420_422"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_420_422); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17835,50 +17472,46 @@ video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, - 52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, - 4, 97, 0, 32, 97, 1, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_420_444); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95, + 52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, + 4, 97, 0, 32, 97, 1, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_420_444); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_420_444"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_420_444); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_420_444"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_420_444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -17963,47 +17596,43 @@ video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, - 52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, - 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_422_444); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, + 52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, + 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_422_444); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_422_444"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_422_444); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_422_444"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_422_444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -18104,48 +17733,44 @@ video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, - 52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33, - 4, 39, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_444_422); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, + 52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33, + 4, 39, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_444_422); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_444_422"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_444_422); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_444_422"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_444_422); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -18270,53 +17895,49 @@ video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, - 52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1, - 20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39, 0, 33, 34, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_444_420); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95, + 52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1, + 20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39, 0, 33, 34, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_444_420); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_444_420"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_444_420); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_444_420"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_444_420); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -18413,45 +18034,41 @@ video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, - 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, - 52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_422_420); + static const orc_uint8 bc[] = { + 1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108, + 97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95, + 52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_422_420); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_planar_chroma_422_420"); - orc_program_set_backup_function (p, - _backup_video_orc_planar_chroma_422_420); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_planar_chroma_422_420"); + orc_program_set_backup_function (p, + _backup_video_orc_planar_chroma_422_420); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -18640,54 +18257,50 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11, - 8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21, - 1, 199, 33, 32, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21, - 1, 195, 0, 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11, + 8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21, + 1, 199, 33, 32, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21, + 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_YUY2_AYUV"); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_YUY2_AYUV"); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -18875,54 +18488,50 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11, - 8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21, - 1, 199, 32, 33, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21, - 1, 195, 0, 34, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11, + 8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21, + 1, 199, 32, 33, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21, + 1, 195, 0, 34, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_UYVY_AYUV"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_UYVY_AYUV"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -19066,47 +18675,43 @@ video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11, - 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, - 32, 0, 4, 199, 2, 1, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11, + 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, + 32, 0, 4, 199, 2, 1, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_YUY2_Y42B"); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_YUY2_Y42B"); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -19253,47 +18858,43 @@ video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11, - 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, - 0, 32, 4, 199, 2, 1, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11, + 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199, + 0, 32, 4, 199, 2, 1, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_UYVY_Y42B"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_UYVY_Y42B"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -19452,54 +19053,50 @@ video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11, - 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, - 1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, - 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11, + 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, + 1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, + 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_YUY2_Y444"); - orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 2, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_YUY2_Y444"); + orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 2, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -19658,54 +19255,50 @@ video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11, - 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, - 1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, - 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11, + 2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20, + 1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2, + 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_UYVY_Y444"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 2, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_UYVY_Y444"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 2, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -19901,60 +19494,56 @@ video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2, - 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, - 20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97, 0, 34, 21, - 1, 199, 34, 33, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3, - 2, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2, + 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4, + 20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97, 0, 34, 21, + 1, 199, 34, 33, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3, + 2, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_UYVY_I420"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_destination (p, 1, "d4"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_UYVY_I420"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -20278,76 +19867,72 @@ video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11, - 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8, - 8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, - 1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 198, 34, - 32, 5, 21, 1, 189, 1, 32, 21, 2, 39, 35, 33, 34, 21, 1, 199, - 37, 36, 35, 199, 38, 39, 36, 39, 2, 38, 39, 199, 38, 39, 37, 39, - 3, 38, 39, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11, + 2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8, + 8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, + 1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 198, 34, + 32, 5, 21, 1, 189, 1, 32, 21, 2, 39, 35, 33, 34, 21, 1, 199, + 37, 36, 35, 199, 38, 39, 36, 39, 2, 38, 39, 199, 38, 39, 37, 39, + 3, 38, 39, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_I420"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 2, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_destination (p, 1, "d4"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_source (p, 8, "s2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_I420"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 2, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_destination (p, 1, "d4"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_source (p, 8, "s2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -20544,56 +20129,52 @@ video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11, - 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, - 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, - 1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11, + 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, + 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, + 1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -20782,56 +20363,52 @@ video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11, - 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, - 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, - 1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11, + 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21, + 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21, + 1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -21028,57 +20605,53 @@ video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11, - 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, - 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39, - 34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11, + 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20, + 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39, + 34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_Y42B"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_Y42B"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); - orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -21227,50 +20800,46 @@ video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11, - 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198, - 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11, + 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198, + 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_Y444"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_destination (p, 1, "d2"); - orc_program_add_destination (p, 1, "d3"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_Y444"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_destination (p, 1, "d2"); + orc_program_add_destination (p, 1, "d3"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -21419,47 +20988,43 @@ video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11, - 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, - 6, 21, 1, 196, 0, 4, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11, + 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, + 6, 21, 1, 196, 0, 4, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y42B_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y42B_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -21608,47 +21173,43 @@ video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11, - 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, - 6, 21, 1, 196, 0, 32, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11, + 4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5, + 6, 21, 1, 196, 0, 32, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y42B_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y42B_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -21849,56 +21410,52 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11, - 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20, - 2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 24, 4, 195, - 34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11, + 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20, + 2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 24, 4, 195, + 34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y42B_AYUV"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y42B_AYUV"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -22090,55 +21647,51 @@ video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11, - 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, - 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, - 32, 34, 35, 21, 1, 196, 0, 4, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11, + 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, + 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, + 32, 34, 35, 21, 1, 196, 0, 4, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y444_YUY2"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y444_YUY2"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -22329,55 +21882,51 @@ video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11, - 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, - 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, - 32, 34, 35, 21, 1, 196, 0, 32, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11, + 4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20, + 2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39, + 32, 34, 35, 21, 1, 196, 0, 32, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y444_UYVY"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y444_UYVY"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -22536,51 +22085,47 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11, - 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20, - 2, 196, 32, 5, 6, 196, 33, 24, 4, 195, 0, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11, + 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20, + 2, 196, 32, 5, 6, 196, 33, 24, 4, 195, 0, 33, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_Y444_AYUV"); - orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_Y444_AYUV"); + orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -22930,113 +22475,109 @@ video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, int p4, int p5, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11, - 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, - 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, - 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, - 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 32, 42, 90, - 41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40, - 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 43, - 44, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11, + 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, + 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, + 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, + 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 32, 42, 90, + 41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40, + 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 43, + 44, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_ARGB"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 2, "t7"); - orc_program_add_temporary (p, 2, "t8"); - orc_program_add_temporary (p, 2, "t9"); - orc_program_add_temporary (p, 2, "t10"); - orc_program_add_temporary (p, 1, "t11"); - orc_program_add_temporary (p, 1, "t12"); - orc_program_add_temporary (p, 1, "t13"); - orc_program_add_temporary (p, 4, "t14"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_ARGB"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 4, "t14"); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_T14, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1, - ORC_VAR_T11, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12, - ORC_VAR_T13, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8, - ORC_VAR_T10, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T14, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_T11, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12, + ORC_VAR_T13, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -23386,113 +22927,109 @@ video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, int p4, int p5, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11, - 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, - 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, - 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, - 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 42, 32, 90, - 41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40, - 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 44, - 43, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11, + 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, + 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, + 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, + 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 42, 32, 90, + 41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40, + 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 44, + 43, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_BGRA"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 2, "t7"); - orc_program_add_temporary (p, 2, "t8"); - orc_program_add_temporary (p, 2, "t9"); - orc_program_add_temporary (p, 2, "t10"); - orc_program_add_temporary (p, 1, "t11"); - orc_program_add_temporary (p, 1, "t12"); - orc_program_add_temporary (p, 1, "t13"); - orc_program_add_temporary (p, 4, "t14"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_BGRA"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 4, "t14"); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_T14, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11, - ORC_VAR_T1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13, - ORC_VAR_T12, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10, - ORC_VAR_T8, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T14, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13, + ORC_VAR_T12, ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -23842,113 +23379,109 @@ video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, int p4, int p5, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11, - 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, - 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, - 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, - 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70, - 41, 36, 41, 159, 44, 41, 196, 41, 32, 44, 90, 40, 37, 27, 70, 40, - 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 43, - 42, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11, + 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, + 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, + 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, + 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70, + 41, 36, 41, 159, 44, 41, 196, 41, 32, 44, 90, 40, 37, 27, 70, 40, + 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 43, + 42, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_ABGR"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 2, "t7"); - orc_program_add_temporary (p, 2, "t8"); - orc_program_add_temporary (p, 2, "t9"); - orc_program_add_temporary (p, 2, "t10"); - orc_program_add_temporary (p, 1, "t11"); - orc_program_add_temporary (p, 1, "t12"); - orc_program_add_temporary (p, 1, "t13"); - orc_program_add_temporary (p, 4, "t14"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_ABGR"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 4, "t14"); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_T14, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_T13, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12, - ORC_VAR_T11, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10, - ORC_VAR_T8, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T14, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1, ORC_VAR_T13, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12, ORC_VAR_T11, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -24298,113 +23831,109 @@ video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, int p4, int p5, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11, - 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, - 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, - 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, - 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70, - 41, 36, 41, 159, 44, 41, 196, 41, 44, 32, 90, 40, 37, 27, 70, 40, - 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 42, - 43, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11, + 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16, + 2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199, + 35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24, + 90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70, + 41, 36, 41, 159, 44, 41, 196, 41, 44, 32, 90, 40, 37, 27, 70, 40, + 36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 42, + 43, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_AYUV_RGBA"); - orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 2, "t7"); - orc_program_add_temporary (p, 2, "t8"); - orc_program_add_temporary (p, 2, "t9"); - orc_program_add_temporary (p, 2, "t10"); - orc_program_add_temporary (p, 1, "t11"); - orc_program_add_temporary (p, 1, "t12"); - orc_program_add_temporary (p, 1, "t13"); - orc_program_add_temporary (p, 4, "t14"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_AYUV_RGBA"); + orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 2, "t7"); + orc_program_add_temporary (p, 2, "t8"); + orc_program_add_temporary (p, 2, "t9"); + orc_program_add_temporary (p, 2, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); + orc_program_add_temporary (p, 1, "t13"); + orc_program_add_temporary (p, 4, "t14"); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_T14, ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13, - ORC_VAR_T1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11, - ORC_VAR_T12, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8, - ORC_VAR_T10, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T14, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, + ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11, ORC_VAR_T12, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -24749,115 +24278,111 @@ video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, - 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, - 14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2, - 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32, - 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38, - 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, - 35, 159, 38, 35, 196, 35, 38, 18, 90, 37, 33, 26, 70, 37, 32, 37, - 159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, - 36, 36, 32, 159, 39, 36, 196, 37, 40, 39, 195, 41, 37, 35, 21, 2, - 33, 0, 41, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, + 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, + 14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2, + 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32, + 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38, + 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, + 35, 159, 38, 35, 196, 35, 38, 18, 90, 37, 33, 26, 70, 37, 32, 37, + 159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, + 36, 36, 32, 159, 39, 36, 196, 37, 40, 39, 195, 41, 37, 35, 21, 2, + 33, 0, 41, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_I420_BGRA"); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 4, 0x00000080, "c2"); - orc_program_add_constant (p, 1, 0x0000007f, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); - orc_program_add_temporary (p, 1, "t9"); - orc_program_add_temporary (p, 4, "t10"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_I420_BGRA"); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 1, 0x0000007f, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + orc_program_add_temporary (p, 1, "t9"); + orc_program_add_temporary (p, 4, "t10"); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6, - ORC_VAR_T4, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -25201,115 +24726,111 @@ video_orc_convert_I420_ARGB (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 82, 71, 66, 11, 4, - 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, - 14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2, - 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, - 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32, - 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38, - 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, - 35, 159, 38, 35, 196, 35, 18, 38, 90, 37, 33, 26, 70, 37, 32, 37, - 159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, - 36, 36, 32, 159, 39, 36, 196, 37, 39, 40, 195, 41, 35, 37, 21, 2, - 33, 0, 41, 17, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 82, 71, 66, 11, 4, + 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, + 14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2, + 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, + 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32, + 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38, + 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, + 35, 159, 38, 35, 196, 35, 18, 38, 90, 37, 33, 26, 70, 37, 32, 37, + 159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, + 36, 36, 32, 159, 39, 36, 196, 37, 39, 40, 195, 41, 35, 37, 21, 2, + 33, 0, 41, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_I420_ARGB"); - orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 4, 0x00000080, "c2"); - orc_program_add_constant (p, 1, 0x0000007f, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); - orc_program_add_temporary (p, 1, "t9"); - orc_program_add_temporary (p, 4, "t10"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_I420_ARGB"); + orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 4, 0x00000080, "c2"); + orc_program_add_constant (p, 1, 0x0000007f, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + orc_program_add_temporary (p, 1, "t9"); + orc_program_add_temporary (p, 4, "t10"); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_C3, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T4, - ORC_VAR_T6, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_C3, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T4, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -25655,117 +25176,113 @@ video_orc_convert_A420_ARGB (guint8 * ORC_RESTRICT d1, int p2, int p3, int p4, int p5, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 65, 52, 50, 48, 95, 65, 82, 71, 66, 11, 4, - 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, - 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 4, 65, 38, 4, 16, 151, 32, 38, 45, 38, 5, 65, 38, 38, - 16, 151, 33, 38, 45, 38, 6, 65, 38, 38, 16, 151, 34, 38, 65, 41, - 7, 16, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, 35, 159, 38, - 35, 196, 35, 41, 38, 90, 37, 33, 26, 70, 37, 32, 37, 159, 40, 37, - 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, 36, 36, 32, - 159, 39, 36, 196, 37, 39, 40, 195, 42, 35, 37, 21, 2, 33, 0, 42, - 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_A420_ARGB); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 65, 52, 50, 48, 95, 65, 82, 71, 66, 11, 4, + 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, + 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 4, 65, 38, 4, 16, 151, 32, 38, 45, 38, 5, 65, 38, 38, + 16, 151, 33, 38, 45, 38, 6, 65, 38, 38, 16, 151, 34, 38, 65, 41, + 7, 16, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, 35, 159, 38, + 35, 196, 35, 41, 38, 90, 37, 33, 26, 70, 37, 32, 37, 159, 40, 37, + 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, 36, 36, 32, + 159, 39, 36, 196, 37, 39, 40, 195, 42, 35, 37, 21, 2, 33, 0, 42, + 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_A420_ARGB); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_A420_ARGB"); - orc_program_set_backup_function (p, _backup_video_orc_convert_A420_ARGB); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); - orc_program_add_temporary (p, 1, "t9"); - orc_program_add_temporary (p, 1, "t10"); - orc_program_add_temporary (p, 4, "t11"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_A420_ARGB"); + orc_program_set_backup_function (p, _backup_video_orc_convert_A420_ARGB); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + orc_program_add_temporary (p, 1, "t9"); + orc_program_add_temporary (p, 1, "t10"); + orc_program_add_temporary (p, 4, "t11"); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T10, ORC_VAR_S4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T10, - ORC_VAR_T7, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T11, ORC_VAR_T4, - ORC_VAR_T6, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T11, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T10, ORC_VAR_S4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T10, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T11, ORC_VAR_T4, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T11, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26112,117 +25629,113 @@ video_orc_convert_A420_BGRA (guint8 * ORC_RESTRICT d1, int p2, int p3, int p4, int p5, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, - 118, 101, 114, 116, 95, 65, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, - 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, - 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, - 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 4, 65, 38, 4, 16, 151, 32, 38, 45, 38, 5, 65, 38, 38, - 16, 151, 33, 38, 45, 38, 6, 65, 38, 38, 16, 151, 34, 38, 65, 41, - 7, 16, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, 35, 159, 38, - 35, 196, 35, 38, 41, 90, 37, 33, 26, 70, 37, 32, 37, 159, 40, 37, - 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, 36, 36, 32, - 159, 39, 36, 196, 37, 40, 39, 195, 42, 37, 35, 21, 2, 33, 0, 42, - 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_A420_BGRA); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110, + 118, 101, 114, 116, 95, 65, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4, + 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, + 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, + 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 4, 65, 38, 4, 16, 151, 32, 38, 45, 38, 5, 65, 38, 38, + 16, 151, 33, 38, 45, 38, 6, 65, 38, 38, 16, 151, 34, 38, 65, 41, + 7, 16, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32, 35, 159, 38, + 35, 196, 35, 38, 41, 90, 37, 33, 26, 70, 37, 32, 37, 159, 40, 37, + 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70, 36, 36, 32, + 159, 39, 36, 196, 37, 40, 39, 195, 42, 37, 35, 21, 2, 33, 0, 42, + 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_A420_BGRA); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_convert_A420_BGRA"); - orc_program_set_backup_function (p, _backup_video_orc_convert_A420_BGRA); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_parameter (p, 2, "p5"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); - orc_program_add_temporary (p, 2, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); - orc_program_add_temporary (p, 1, "t9"); - orc_program_add_temporary (p, 1, "t10"); - orc_program_add_temporary (p, 4, "t11"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_convert_A420_BGRA"); + orc_program_set_backup_function (p, _backup_video_orc_convert_A420_BGRA); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_parameter (p, 2, "p5"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); + orc_program_add_temporary (p, 2, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + orc_program_add_temporary (p, 1, "t9"); + orc_program_add_temporary (p, 1, "t10"); + orc_program_add_temporary (p, 4, "t11"); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T10, ORC_VAR_S4, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, - ORC_VAR_T10, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T11, ORC_VAR_T6, - ORC_VAR_T4, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T11, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T10, ORC_VAR_S4, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T11, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T11, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26274,117 +25787,113 @@ video_orc_matrix8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_int64 p1, orc_int64 p2, orc_int64 p3, orc_int64 p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 97, 116, - 114, 105, 120, 56, 11, 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, - 18, 8, 18, 8, 18, 8, 18, 8, 20, 2, 20, 2, 20, 1, 20, 1, - 20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 20, 8, 20, 8, 134, 40, - 24, 134, 41, 25, 134, 42, 26, 21, 2, 65, 36, 4, 16, 190, 32, 36, - 191, 33, 36, 188, 34, 32, 189, 35, 32, 150, 32, 34, 154, 36, 32, 21, - 2, 196, 38, 36, 36, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, - 39, 40, 21, 2, 70, 38, 38, 39, 188, 34, 33, 152, 36, 34, 194, 39, - 36, 36, 21, 2, 90, 39, 39, 41, 21, 2, 70, 38, 38, 39, 189, 35, - 33, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, 39, 42, 21, 2, - 70, 38, 38, 39, 21, 2, 159, 37, 38, 21, 2, 33, 0, 37, 16, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_matrix8); + static const orc_uint8 bc[] = { + 1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 97, 116, + 114, 105, 120, 56, 11, 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, + 18, 8, 18, 8, 18, 8, 18, 8, 20, 2, 20, 2, 20, 1, 20, 1, + 20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 20, 8, 20, 8, 134, 40, + 24, 134, 41, 25, 134, 42, 26, 21, 2, 65, 36, 4, 16, 190, 32, 36, + 191, 33, 36, 188, 34, 32, 189, 35, 32, 150, 32, 34, 154, 36, 32, 21, + 2, 196, 38, 36, 36, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, + 39, 40, 21, 2, 70, 38, 38, 39, 188, 34, 33, 152, 36, 34, 194, 39, + 36, 36, 21, 2, 90, 39, 39, 41, 21, 2, 70, 38, 38, 39, 189, 35, + 33, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, 39, 42, 21, 2, + 70, 38, 38, 39, 21, 2, 159, 37, 38, 21, 2, 33, 0, 37, 16, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_matrix8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_matrix8"); - orc_program_set_backup_function (p, _backup_video_orc_matrix8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_add_parameter_int64 (p, 8, "p2"); - orc_program_add_parameter_int64 (p, 8, "p3"); - orc_program_add_parameter_int64 (p, 8, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); - orc_program_add_temporary (p, 8, "t9"); - orc_program_add_temporary (p, 8, "t10"); - orc_program_add_temporary (p, 8, "t11"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_matrix8"); + orc_program_set_backup_function (p, _backup_video_orc_matrix8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter_int64 (p, 8, "p1"); + orc_program_add_parameter_int64 (p, 8, "p2"); + orc_program_add_parameter_int64 (p, 8, "p3"); + orc_program_add_parameter_int64 (p, 8, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); + orc_program_add_temporary (p, 8, "t9"); + orc_program_add_temporary (p, 8, "t10"); + orc_program_add_temporary (p, 8, "t11"); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T9, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T10, ORC_VAR_P2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T11, ORC_VAR_P3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 2, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T11, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 2, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T9, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T10, ORC_VAR_P2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T11, ORC_VAR_P3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergebw", 2, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T11, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26475,45 +25984,41 @@ video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 110, 101, 97, 114, 95, 117, 51, 50, - 95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 49, 0, 4, - 24, 25, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_near_u32_lq); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 110, 101, 97, 114, 95, 117, 51, 50, + 95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 49, 0, 4, + 24, 25, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_near_u32_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_near_u32_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_near_u32_lq); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_parameter (p, 4, "p2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_near_u32_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_near_u32_lq); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_parameter (p, 4, "p2"); - orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_P1, ORC_VAR_P2); + orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_P1, ORC_VAR_P2); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26592,45 +26097,41 @@ video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 49, 117, 56, - 95, 108, 113, 11, 1, 1, 12, 1, 1, 16, 4, 16, 4, 50, 0, 4, - 24, 25, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_1u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 49, 117, 56, + 95, 108, 113, 11, 1, 1, 12, 1, 1, 16, 4, 16, 4, 50, 0, 4, + 24, 25, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_1u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_2tap_1u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_1u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_parameter (p, 4, "p2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_2tap_1u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_1u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_parameter (p, 4, "p2"); - orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_P1, ORC_VAR_P2); + orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_P2); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26731,45 +26232,41 @@ video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 52, 117, 56, - 95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, - 24, 25, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_4u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 52, 117, 56, + 95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, + 24, 25, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_4u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_2tap_4u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_4u8_lq); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_parameter (p, 4, "p2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_2tap_4u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_4u8_lq); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_parameter (p, 4, "p2"); - orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_P1, ORC_VAR_P2); + orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_P2); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -26932,67 +26429,63 @@ video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 56, 95, - 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, - 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 20, 2, 20, - 2, 150, 32, 4, 89, 32, 32, 6, 150, 33, 5, 89, 33, 33, 7, 70, - 32, 32, 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 56, 95, + 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, + 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 20, 2, 20, + 2, 150, 32, 4, 89, 32, 32, 6, 150, 33, 5, 89, 33, 33, 7, 70, + 32, 32, 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_u8_lq); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_2tap_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_constant (p, 2, 0x00000020, "c1"); - orc_program_add_constant (p, 2, 0x00000006, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_2tap_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_2tap_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_constant (p, 2, 0x00000020, "c1"); + orc_program_add_constant (p, 2, 0x00000006, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S3, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S3, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -27168,73 +26661,67 @@ video_orc_resample_h_2tap_u16 (guint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 49, 54, - 11, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, - 4, 0, 16, 0, 0, 14, 4, 12, 0, 0, 0, 20, 4, 20, 4, 20, - 4, 20, 4, 154, 32, 4, 153, 34, 6, 120, 32, 32, 34, 154, 33, 5, - 153, 35, 7, 120, 33, 33, 35, 103, 32, 32, 33, 103, 32, 32, 16, 125, - 32, 32, 17, 166, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_u16); + static const orc_uint8 bc[] = { + 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 49, 54, + 11, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14, + 4, 0, 16, 0, 0, 14, 4, 12, 0, 0, 0, 20, 4, 20, 4, 20, + 4, 20, 4, 154, 32, 4, 153, 34, 6, 120, 32, 32, 34, 154, 33, 5, + 153, 35, 7, 120, 33, 33, 35, 103, 32, 32, 33, 103, 32, 32, 16, 125, + 32, 32, 17, 166, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_resample_h_2tap_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_2tap_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_2tap_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_constant (p, 4, 0x00001000, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_2tap_u16"); + orc_program_set_backup_function (p, _backup_video_orc_resample_h_2tap_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_constant (p, 4, 0x00001000, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -27384,63 +26871,59 @@ video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 95, - 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 128, 0, 0, - 0, 16, 2, 20, 1, 20, 2, 20, 2, 150, 33, 4, 150, 34, 5, 98, - 34, 34, 33, 89, 34, 34, 24, 70, 34, 34, 16, 158, 32, 34, 33, 0, - 32, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_2tap_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 95, + 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 128, 0, 0, + 0, 16, 2, 20, 1, 20, 2, 20, 2, 150, 33, 4, 150, 34, 5, 98, + 34, 34, 33, 89, 34, 34, 24, 70, 34, 34, 16, 158, 32, 34, 33, 0, + 32, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_2tap_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_2tap_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_2tap_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_constant (p, 2, 0x00000080, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_2tap_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_2tap_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_constant (p, 2, 0x00000080, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -27595,68 +27078,62 @@ video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 49, 54, - 11, 2, 2, 12, 2, 2, 12, 2, 2, 14, 4, 0, 16, 0, 0, 14, - 4, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 4, 154, 32, 4, - 154, 33, 5, 129, 33, 33, 32, 154, 34, 24, 120, 33, 33, 34, 103, 33, - 33, 16, 125, 33, 33, 17, 103, 32, 32, 33, 166, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_2tap_u16); + static const orc_uint8 bc[] = { + 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 49, 54, + 11, 2, 2, 12, 2, 2, 12, 2, 2, 14, 4, 0, 16, 0, 0, 14, + 4, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 4, 154, 32, 4, + 154, 33, 5, 129, 33, 33, 32, 154, 34, 24, 120, 33, 33, 34, 103, 33, + 33, 16, 125, 33, 33, 17, 103, 32, 32, 33, 166, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_2tap_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_2tap_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 4, 0x00001000, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_2tap_u16"); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 4, 0x00001000, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -27811,69 +27288,65 @@ video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 11, - 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 255, 15, 0, 0, 14, 4, - 12, 0, 0, 0, 16, 2, 20, 1, 20, 2, 20, 2, 20, 4, 20, 4, - 150, 33, 4, 150, 34, 5, 98, 34, 34, 33, 176, 36, 34, 24, 103, 36, - 36, 16, 125, 36, 36, 17, 163, 34, 36, 70, 34, 34, 33, 160, 0, 34, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 11, + 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 255, 15, 0, 0, 14, 4, + 12, 0, 0, 0, 16, 2, 20, 1, 20, 2, 20, 2, 20, 4, 20, 4, + 150, 33, 4, 150, 34, 5, 98, 34, 34, 33, 176, 36, 34, 24, 103, 36, + 36, 16, 125, 36, 36, 17, 163, 34, 36, 70, 34, 34, 33, 160, 0, 34, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_2tap_u8"); - orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_constant (p, 4, 0x00000fff, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_2tap_u8"); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_constant (p, 4, 0x00000fff, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -28098,84 +27571,80 @@ video_orc_resample_v_4tap_u8_lq (guint8 * ORC_RESTRICT d1, int p2, int p3, int p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 95, - 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, - 1, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, - 2, 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, - 150, 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, - 33, 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, - 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_4tap_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 95, + 108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, + 1, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, + 2, 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, + 150, 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, + 33, 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, + 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_4tap_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_4tap_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_4tap_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_constant (p, 2, 0x00000020, "c1"); - orc_program_add_constant (p, 2, 0x00000006, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_4tap_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_4tap_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 2, 0x00000020, "c1"); + orc_program_add_constant (p, 2, 0x00000006, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -28411,87 +27880,83 @@ video_orc_resample_v_4tap_u8 (guint8 * ORC_RESTRICT d1, int p2, int p3, int p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 11, - 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, - 255, 15, 0, 0, 14, 4, 12, 0, 0, 0, 16, 2, 16, 2, 16, 2, - 16, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, 176, 34, 32, - 24, 150, 33, 5, 176, 35, 33, 25, 103, 34, 34, 35, 150, 33, 6, 176, - 35, 33, 26, 103, 34, 34, 35, 150, 33, 7, 176, 35, 33, 27, 103, 34, - 34, 35, 103, 34, 34, 16, 125, 34, 34, 17, 166, 32, 34, 160, 0, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 11, + 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, + 255, 15, 0, 0, 14, 4, 12, 0, 0, 0, 16, 2, 16, 2, 16, 2, + 16, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, 176, 34, 32, + 24, 150, 33, 5, 176, 35, 33, 25, 103, 34, 34, 35, 150, 33, 6, 176, + 35, 33, 26, 103, 34, 34, 35, 150, 33, 7, 176, 35, 33, 27, 103, 34, + 34, 35, 103, 34, 34, 16, 125, 34, 34, 17, 166, 32, 34, 160, 0, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_4tap_u8"); - orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_constant (p, 4, 0x00000fff, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_4tap_u8"); + orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 4, 0x00000fff, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -28587,48 +28052,43 @@ video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, 2, 150, 32, 4, - 176, 0, 32, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u8); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, 2, 150, 32, 4, + 176, 0, 32, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_multaps_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_multaps_u8"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -28739,53 +28199,49 @@ video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, int d1_stride, const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, - 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, - 116, - 97, 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, - 2, 20, 4, 150, 32, 4, 176, 33, 32, 5, 103, 0, 0, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 7, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, + 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, + 116, + 97, 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, + 2, 20, 4, 150, 32, 4, 176, 33, 32, 5, 103, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u8); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -28895,55 +28351,50 @@ video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, - 95, - 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, 4, - 12, 0, 0, 0, 20, 2, 20, 4, 103, 33, 4, 16, 125, 33, 33, 17, - 166, 32, 33, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u8); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, 95, + 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, 4, + 12, 0, 0, 0, 20, 2, 20, 4, 103, 33, 4, 16, 125, 33, 33, 17, + 166, 32, 33, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_scaletaps_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000fff, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_scaletaps_u8"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000fff, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -29032,48 +28483,43 @@ video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 2, 2, 20, 2, - 150, 32, 4, 89, 0, 32, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 2, 2, 20, 2, + 150, 32, 4, 89, 0, 32, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_multaps_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_multaps_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -29184,52 +28630,48 @@ video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, int d1_stride, const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, - 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, - 116, - 97, 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, - 2, 2, 20, 2, 150, 32, 4, 89, 32, 32, 5, 70, 0, 0, 32, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u8_lq); + static const orc_uint8 bc[] = { + 1, 7, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, + 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, + 116, + 97, 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, + 2, 2, 20, 2, 150, 32, 4, 89, 32, 32, 5, 70, 0, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u8_lq); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -29403,67 +28845,62 @@ video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, - 51, - 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12, - 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 2, 150, - 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, 70, 32, 32, - 33, 150, 33, 6, 89, 33, 33, 9, 70, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps3_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, 51, + 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12, + 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 2, 150, + 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, 70, 32, 32, + 33, 150, 33, 6, 89, 33, 33, 9, 70, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps3_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_multaps3_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps3_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_multaps3_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps3_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -29649,70 +29086,65 @@ video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 116, - 97, - 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, - 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, - 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, - 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, 32, 32, 33, 70, - 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps3_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 116, 97, + 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, + 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, + 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, + 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, 32, 32, 33, 70, + 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps3_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_muladdtaps3_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps3_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_muladdtaps3_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps3_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -29937,81 +29369,76 @@ video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s7, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 115, - 99, - 97, 108, 101, 116, 97, 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 1, - 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, - 12, 2, 2, 12, 2, 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, - 0, 0, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, - 89, 33, 33, 8, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, - 32, 32, 33, 70, 32, 32, 10, 70, 32, 32, 16, 94, 32, 32, 17, 160, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdscaletaps3_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 115, 99, + 97, 108, 101, 116, 97, 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 1, + 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, + 12, 2, 2, 12, 2, 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, + 0, 0, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, + 89, 33, 33, 8, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, + 32, 32, 33, 70, 32, 32, 10, 70, 32, 32, 16, 94, 32, 32, 17, 160, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdscaletaps3_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_muladdscaletaps3_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdscaletaps3_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_source (p, 2, "s6"); - orc_program_add_source (p, 2, "s7"); - orc_program_add_constant (p, 2, 0x00000020, "c1"); - orc_program_add_constant (p, 2, 0x00000006, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_muladdscaletaps3_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdscaletaps3_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_source (p, 2, "s6"); + orc_program_add_source (p, 2, "s7"); + orc_program_add_constant (p, 2, 0x00000020, "c1"); + orc_program_add_constant (p, 2, 0x00000006, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30116,52 +29543,47 @@ video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, - 95, - 117, 56, 95, 108, 113, 11, 1, 1, 12, 2, 2, 14, 2, 32, 0, 0, - 0, 14, 2, 6, 0, 0, 0, 20, 2, 70, 32, 4, 16, 94, 32, 32, - 17, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, 95, + 117, 56, 95, 108, 113, 11, 1, 1, 12, 2, 2, 14, 2, 32, 0, 0, + 0, 14, 2, 6, 0, 0, 0, 20, 2, 70, 32, 4, 16, 94, 32, 32, + 17, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_scaletaps_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00000020, "c1"); - orc_program_add_constant (p, 2, 0x00000006, "c2"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_scaletaps_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00000020, "c1"); + orc_program_add_constant (p, 2, 0x00000006, "c2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30256,51 +29678,46 @@ video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, 20, 4, 20, 4, - 154, 32, 4, 153, 33, 5, 120, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u16); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, 20, 4, 20, 4, + 154, 32, 4, 153, 33, 5, 120, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_h_multaps_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_multaps_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_h_multaps_u16"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_multaps_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30417,55 +29834,51 @@ video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, int d1_stride, const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, - 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, - 116, - 97, 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, - 20, 4, 20, 4, 154, 32, 4, 153, 33, 5, 120, 32, 32, 33, 103, 0, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u16); + static const orc_uint8 bc[] = { + 1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, + 115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, + 116, + 97, 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, + 20, 4, 20, 4, 154, 32, 4, 153, 33, 5, 120, 32, 32, 33, 103, 0, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u16); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_h_muladdtaps_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u16"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_h_muladdtaps_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30569,52 +29982,47 @@ video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, - 95, - 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, - 4, 12, 0, 0, 0, 20, 4, 103, 32, 4, 16, 125, 32, 32, 17, 166, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u16); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115, 95, + 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, + 4, 12, 0, 0, 0, 20, 4, 103, 32, 4, 16, 125, 32, 32, 17, 166, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_scaletaps_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_scaletaps_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000fff, "c1"); - orc_program_add_constant (p, 4, 0x0000000c, "c2"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_scaletaps_u16"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_scaletaps_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x00000fff, "c1"); + orc_program_add_constant (p, 4, 0x0000000c, "c2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30699,48 +30107,43 @@ video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 150, 32, 4, 176, - 0, 32, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u8); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 150, 32, 4, 176, + 0, 32, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_multaps_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_multaps_u8"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30838,51 +30241,46 @@ video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, - 97, - 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 20, - 4, 150, 32, 4, 176, 33, 32, 24, 103, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u8); + static const orc_uint8 bc[] = { + 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, 97, + 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 20, + 4, 150, 32, 4, 176, 33, 32, 24, 103, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -30968,48 +30366,43 @@ video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, 154, 32, 4, - 120, 0, 32, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u16); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, 154, 32, 4, + 120, 0, 32, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_multaps_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_multaps_u16"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -31113,54 +30506,49 @@ video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, - 97, - 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, - 20, 4, 154, 32, 4, 153, 33, 24, 120, 32, 32, 33, 103, 0, 0, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u16); + static const orc_uint8 bc[] = { + 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, 97, + 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, + 20, 4, 154, 32, 4, 153, 33, 24, 120, 32, 32, 33, 103, 0, 0, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u16"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u16"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -31246,48 +30634,43 @@ video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, - 95, - 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, 20, 2, 150, - 32, 4, 89, 0, 32, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, 95, + 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, 20, 2, 150, + 32, 4, 89, 0, 32, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_multaps_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_multaps_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -31479,76 +30862,71 @@ video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1, int p2, int p3, int p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, - 52, - 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12, - 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, - 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, 33, 25, 70, - 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, 33, 150, 33, - 7, 89, 33, 33, 27, 70, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps4_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115, 52, + 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12, + 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, + 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, 33, 25, 70, + 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, 33, 150, 33, + 7, 89, 33, 33, 27, 70, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps4_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_multaps4_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_multaps4_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_multaps4_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_multaps4_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -31652,50 +31030,45 @@ video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, - 97, - 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, - 20, 2, 150, 32, 4, 89, 32, 32, 24, 70, 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, 97, + 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, + 20, 2, 150, 32, 4, 89, 32, 32, 24, 70, 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -31899,79 +31272,74 @@ video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1, int p2, int p3, int p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, - 97, - 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, - 1, 1, 12, 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, - 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, - 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, - 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, 70, 0, 0, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps4_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116, 97, + 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, + 1, 1, 12, 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, + 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, + 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, + 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, 70, 0, 0, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps4_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_muladdtaps4_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdtaps4_u8_lq); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_muladdtaps4_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdtaps4_u8_lq); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -32218,90 +31586,85 @@ video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, - 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 115, - 99, - 97, 108, 101, 116, 97, 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 1, - 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, - 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, 2, - 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, - 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, - 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, - 70, 32, 32, 8, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdscaletaps4_u8_lq); + static const orc_uint8 bc[] = { + 1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115, + 97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 115, 99, + 97, 108, 101, 116, 97, 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 1, + 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, + 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, 2, + 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, + 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, + 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, + 70, 32, 32, 8, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdscaletaps4_u8_lq); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_resample_v_muladdscaletaps4_u8_lq"); - orc_program_set_backup_function (p, - _backup_video_orc_resample_v_muladdscaletaps4_u8_lq); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_constant (p, 2, 0x00000020, "c1"); - orc_program_add_constant (p, 2, 0x00000006, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_parameter (p, 2, "p3"); - orc_program_add_parameter (p, 2, "p4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_resample_v_muladdscaletaps4_u8_lq"); + orc_program_set_backup_function (p, + _backup_video_orc_resample_v_muladdscaletaps4_u8_lq); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_constant (p, 2, 0x00000020, "c1"); + orc_program_add_constant (p, 2, 0x00000006, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_parameter (p, 2, "p3"); + orc_program_add_parameter (p, 2, "p4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -32466,57 +31829,53 @@ video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 100, 111, 119, 110, 95, 104, 50, 95, 117, 56, 11, 8, - 8, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 197, 33, - 32, 4, 198, 35, 34, 32, 191, 36, 33, 21, 1, 39, 35, 35, 36, 195, - 32, 34, 35, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 100, 111, 119, 110, 95, 104, 50, 95, 117, 56, 11, 8, + 8, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 197, 33, + 32, 4, 198, 35, 34, 32, 191, 36, 33, 21, 1, 39, 35, 35, 36, 195, + 32, 34, 35, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_down_h2_u8"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 2, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_down_h2_u8"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 2, "t5"); - orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T5, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -32649,52 +32008,48 @@ video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 56, 11, 4, - 4, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 198, 33, 32, - 4, 191, 34, 5, 21, 1, 39, 33, 33, 34, 195, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 56, 11, 4, + 4, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 198, 33, 32, + 4, 191, 34, 5, 21, 1, 39, 33, 33, 34, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_down_v2_u8"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_down_v2_u8"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -32976,88 +32331,84 @@ video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 56, 11, 4, 4, 11, - 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 3, 0, 0, 0, 14, 2, - 2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, - 20, 4, 198, 34, 32, 4, 198, 35, 33, 5, 21, 1, 150, 36, 34, 21, - 1, 150, 37, 35, 21, 1, 89, 38, 36, 16, 21, 1, 70, 38, 38, 37, - 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, 34, - 38, 195, 0, 32, 34, 21, 1, 89, 38, 37, 16, 21, 1, 70, 38, 38, - 36, 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, - 35, 38, 195, 1, 33, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 56, 11, 4, 4, 11, + 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 3, 0, 0, 0, 14, 2, + 2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, + 20, 4, 198, 34, 32, 4, 198, 35, 33, 5, 21, 1, 150, 36, 34, 21, + 1, 150, 37, 35, 21, 1, 89, 38, 36, 16, 21, 1, 70, 38, 38, 37, + 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, 34, + 38, 195, 0, 32, 34, 21, 1, 89, 38, 37, 16, 21, 1, 70, 38, 38, + 36, 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, + 35, 38, 195, 1, 33, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_up_v2_u8"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 4, "d2"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_constant (p, 2, 0x00000002, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 2, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 4, "t6"); - orc_program_add_temporary (p, 4, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_up_v2_u8"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 4, "d2"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_constant (p, 2, 0x00000002, "c2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 2, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 4, "t6"); + orc_program_add_temporary (p, 4, "t7"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T4, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -33350,88 +32701,84 @@ video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 49, 54, 11, 8, 8, - 11, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, 3, 0, 0, 0, 14, - 4, 2, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 8, 20, - 8, 20, 8, 197, 34, 32, 4, 197, 35, 33, 5, 21, 1, 154, 36, 34, - 21, 1, 154, 37, 35, 21, 1, 120, 38, 36, 16, 21, 1, 103, 38, 38, - 37, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, 166, - 34, 38, 194, 0, 32, 34, 21, 1, 120, 38, 37, 16, 21, 1, 103, 38, - 38, 36, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, - 166, 35, 38, 194, 1, 33, 35, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16); + static const orc_uint8 bc[] = { + 1, 9, 26, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 49, 54, 11, 8, 8, + 11, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, 3, 0, 0, 0, 14, + 4, 2, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 8, 20, + 8, 20, 8, 197, 34, 32, 4, 197, 35, 33, 5, 21, 1, 154, 36, 34, + 21, 1, 154, 37, 35, 21, 1, 120, 38, 36, 16, 21, 1, 103, 38, 38, + 37, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, 166, + 34, 38, 194, 0, 32, 34, 21, 1, 120, 38, 37, 16, 21, 1, 103, 38, + 38, 36, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, + 166, 35, 38, 194, 1, 33, 35, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_up_v2_u16"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_source (p, 8, "s2"); - orc_program_add_constant (p, 4, 0x00000003, "c1"); - orc_program_add_constant (p, 4, 0x00000002, "c2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_up_v2_u16"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_source (p, 8, "s2"); + orc_program_add_constant (p, 4, 0x00000003, "c1"); + orc_program_add_constant (p, 4, 0x00000002, "c2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "splitql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "splitql", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T3, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T4, ORC_VAR_T7, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); + orc_program_append_2 (p, "splitql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "splitql", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -33570,52 +32917,48 @@ video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 49, 54, 11, - 8, 8, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 197, 33, - 32, 4, 193, 34, 5, 21, 1, 76, 33, 33, 34, 194, 0, 32, 33, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 49, 54, 11, + 8, 8, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 197, 33, + 32, 4, 193, 34, 5, 21, 1, 76, 33, 33, 34, 194, 0, 32, 33, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_down_v2_u16"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_source (p, 8, "s2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_down_v2_u16"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_source (p, 8, "s2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -33903,90 +33246,86 @@ video_orc_chroma_down_v4_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 56, 11, 4, - 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 1, - 0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, - 2, 20, 2, 20, 4, 20, 4, 20, 4, 198, 33, 32, 4, 21, 1, 150, - 34, 33, 191, 33, 7, 21, 1, 150, 35, 33, 21, 1, 70, 36, 34, 35, - 191, 33, 5, 21, 1, 150, 34, 33, 191, 33, 6, 21, 1, 150, 35, 33, - 21, 1, 70, 34, 34, 35, 21, 1, 93, 35, 34, 16, 21, 1, 70, 34, - 34, 35, 21, 1, 70, 36, 36, 34, 21, 1, 70, 36, 36, 17, 21, 1, - 95, 36, 36, 18, 21, 1, 160, 33, 36, 195, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 56, 11, 4, + 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 1, + 0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, + 2, 20, 2, 20, 4, 20, 4, 20, 4, 198, 33, 32, 4, 21, 1, 150, + 34, 33, 191, 33, 7, 21, 1, 150, 35, 33, 21, 1, 70, 36, 34, 35, + 191, 33, 5, 21, 1, 150, 34, 33, 191, 33, 6, 21, 1, 150, 35, 33, + 21, 1, 70, 34, 34, 35, 21, 1, 93, 35, 34, 16, 21, 1, 70, 34, + 34, 35, 21, 1, 70, 36, 36, 34, 21, 1, 70, 36, 36, 17, 21, 1, + 95, 36, 36, 18, 21, 1, 160, 33, 36, 195, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_down_v4_u8"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_source (p, 4, "s2"); - orc_program_add_source (p, 4, "s3"); - orc_program_add_source (p, 4, "s4"); - orc_program_add_constant (p, 2, 0x00000001, "c1"); - orc_program_add_constant (p, 2, 0x00000004, "c2"); - orc_program_add_constant (p, 2, 0x00000003, "c3"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 4, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_down_v4_u8"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_source (p, 4, "s2"); + orc_program_add_source (p, 4, "s3"); + orc_program_add_source (p, 4, "s4"); + orc_program_add_constant (p, 2, 0x00000001, "c1"); + orc_program_add_constant (p, 2, 0x00000004, "c2"); + orc_program_add_constant (p, 2, 0x00000003, "c3"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 4, "t5"); - orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T2, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -34276,91 +33615,87 @@ video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, - 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 49, 54, 11, - 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, - 1, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 3, 0, 0, 0, - 20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 197, 33, 32, 4, 21, 1, - 154, 34, 33, 193, 33, 7, 21, 1, 154, 35, 33, 21, 1, 103, 36, 34, - 35, 193, 33, 5, 21, 1, 154, 34, 33, 193, 33, 6, 21, 1, 154, 35, - 33, 21, 1, 103, 34, 34, 35, 21, 1, 124, 35, 34, 16, 21, 1, 103, - 34, 34, 35, 21, 1, 103, 36, 36, 34, 21, 1, 103, 36, 36, 17, 21, - 1, 126, 36, 36, 18, 21, 1, 166, 33, 36, 194, 0, 32, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114, + 111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 49, 54, 11, + 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, + 1, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 3, 0, 0, 0, + 20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 197, 33, 32, 4, 21, 1, + 154, 34, 33, 193, 33, 7, 21, 1, 154, 35, 33, 21, 1, 103, 36, 34, + 35, 193, 33, 5, 21, 1, 154, 34, 33, 193, 33, 6, 21, 1, 154, 35, + 33, 21, 1, 103, 34, 34, 35, 21, 1, 124, 35, 34, 16, 21, 1, 103, + 34, 34, 35, 21, 1, 103, 36, 36, 34, 21, 1, 103, 36, 36, 17, 21, + 1, 126, 36, 36, 18, 21, 1, 166, 33, 36, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_chroma_down_v4_u16"); - orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_source (p, 8, "s2"); - orc_program_add_source (p, 8, "s3"); - orc_program_add_source (p, 8, "s4"); - orc_program_add_constant (p, 4, 0x00000001, "c1"); - orc_program_add_constant (p, 4, 0x00000004, "c2"); - orc_program_add_constant (p, 4, 0x00000003, "c3"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 8, "t3"); - orc_program_add_temporary (p, 8, "t4"); - orc_program_add_temporary (p, 8, "t5"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_chroma_down_v4_u16"); + orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_source (p, 8, "s2"); + orc_program_add_source (p, 8, "s3"); + orc_program_add_source (p, 8, "s4"); + orc_program_add_constant (p, 4, 0x00000001, "c1"); + orc_program_add_constant (p, 4, 0x00000004, "c2"); + orc_program_add_constant (p, 4, 0x00000003, "c3"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 8, "t3"); + orc_program_add_temporary (p, 8, "t4"); + orc_program_add_temporary (p, 8, "t5"); - orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S4, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S3, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T2, ORC_VAR_T5, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T2, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -34442,47 +33777,40 @@ void video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 30, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 56, 95, 109, 97, - 115, - 107, 11, 4, 4, 16, 4, 20, 4, 115, 32, 24, 21, 2, 37, 0, 32, - 0, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_none_4u8_mask); + static const orc_uint8 bc[] = { + 1, 9, 30, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 56, 95, 109, 97, 115, + 107, 11, 4, 4, 16, 4, 20, 4, 115, 32, 24, 21, 2, 37, 0, 32, + 0, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_dither_none_4u8_mask); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_none_4u8_mask"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_none_4u8_mask); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_none_4u8_mask"); + orc_program_set_backup_function (p, _backup_video_orc_dither_none_4u8_mask); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andnb", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andnb", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -34543,7 +33871,7 @@ _backup_video_orc_dither_none_4u16_mask (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var35.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: loadq */ @@ -34563,46 +33891,42 @@ void video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 49, 54, 95, 109, 97, - 115, 107, 11, 8, 8, 18, 8, 20, 8, 134, 32, 24, 21, 2, 74, 0, - 32, 0, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_none_4u16_mask); + static const orc_uint8 bc[] = { + 1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 49, 54, 95, 109, 97, + 115, 107, 11, 8, 8, 18, 8, 20, 8, 134, 32, 24, 21, 2, 74, 0, + 32, 0, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_dither_none_4u16_mask); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_none_4u16_mask"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_none_4u16_mask); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_none_4u16_mask"); + orc_program_set_backup_function (p, + _backup_video_orc_dither_none_4u16_mask); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter_int64 (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -34707,7 +34031,7 @@ _backup_video_orc_dither_verterr_4u8_mask (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var38.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: loadl */ @@ -34752,59 +34076,54 @@ video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1, guint16 * ORC_RESTRICT d2, orc_int64 p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 118, 101, 114, 116, 101, 114, 114, 95, 52, 117, 56, - 95, - 109, 97, 115, 107, 11, 4, 4, 11, 8, 8, 18, 8, 20, 8, 20, 8, - 134, 32, 24, 21, 2, 150, 33, 0, 21, 2, 70, 33, 1, 33, 21, 2, - 73, 1, 32, 33, 21, 2, 74, 33, 32, 33, 21, 2, 160, 0, 33, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_verterr_4u8_mask); + static const orc_uint8 bc[] = { + 1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 118, 101, 114, 116, 101, 114, 114, 95, 52, 117, 56, 95, + 109, 97, 115, 107, 11, 4, 4, 11, 8, 8, 18, 8, 20, 8, 20, 8, + 134, 32, 24, 21, 2, 150, 33, 0, 21, 2, 70, 33, 1, 33, 21, 2, + 73, 1, 32, 33, 21, 2, 74, 33, 32, 33, 21, 2, 160, 0, 33, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_dither_verterr_4u8_mask); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_verterr_4u8_mask"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_verterr_4u8_mask); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_destination (p, 8, "d2"); - orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 8, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_verterr_4u8_mask"); + orc_program_set_backup_function (p, + _backup_video_orc_dither_verterr_4u8_mask); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_destination (p, 8, "d2"); + orc_program_add_parameter_int64 (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 8, "t2"); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "andw", 2, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "andnw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "andw", 2, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "andnw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -34935,61 +34254,54 @@ void video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 102, 115, 95, 109, 117, 108, 97, 100, 100, 95, 117, - 56, - 11, 2, 2, 14, 4, 4, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, - 4, 8, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, 2, 20, 2, 83, - 33, 0, 16, 89, 33, 33, 17, 70, 32, 33, 0, 83, 33, 0, 18, 89, - 33, 33, 19, 70, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_fs_muladd_u8); + static const orc_uint8 bc[] = { + 1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 102, 115, 95, 109, 117, 108, 97, 100, 100, 95, 117, 56, + 11, 2, 2, 14, 4, 4, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, + 4, 8, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, 2, 20, 2, 83, + 33, 0, 16, 89, 33, 33, 17, 70, 32, 33, 0, 83, 33, 0, 18, 89, + 33, 33, 19, 70, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_dither_fs_muladd_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_fs_muladd_u8"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_fs_muladd_u8); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 4, 0x00000004, "c1"); - orc_program_add_constant (p, 2, 0x00000005, "c2"); - orc_program_add_constant (p, 4, 0x00000008, "c3"); - orc_program_add_constant (p, 2, 0x00000003, "c4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_fs_muladd_u8"); + orc_program_set_backup_function (p, _backup_video_orc_dither_fs_muladd_u8); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x00000004, "c1"); + orc_program_add_constant (p, 2, 0x00000005, "c2"); + orc_program_add_constant (p, 4, 0x00000008, "c3"); + orc_program_add_constant (p, 2, 0x00000003, "c4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_C3, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -35067,41 +34379,36 @@ video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 117, 56, 11, - 1, - 1, 12, 1, 1, 35, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8); + static const orc_uint8 bc[] = { + 1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 117, 56, 11, 1, + 1, 12, 1, 1, 35, 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_ordered_u8"); - orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_ordered_u8"); + orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -35192,7 +34499,7 @@ _backup_video_orc_dither_ordered_4u8_mask (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var37.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: loadl */ @@ -35230,56 +34537,51 @@ video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 56, - 95, - 109, 97, 115, 107, 11, 4, 4, 12, 8, 8, 18, 8, 20, 8, 20, 8, - 134, 33, 24, 21, 2, 150, 32, 0, 21, 2, 70, 32, 32, 4, 21, 2, - 74, 32, 33, 32, 21, 2, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_ordered_4u8_mask); + static const orc_uint8 bc[] = { + 1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 56, 95, + 109, 97, 115, 107, 11, 4, 4, 12, 8, 8, 18, 8, 20, 8, 20, 8, + 134, 33, 24, 21, 2, 150, 32, 0, 21, 2, 70, 32, 32, 4, 21, 2, + 74, 32, 33, 32, 21, 2, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_dither_ordered_4u8_mask); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_ordered_4u8_mask"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_ordered_4u8_mask); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 8, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_ordered_4u8_mask"); + orc_program_set_backup_function (p, + _backup_video_orc_dither_ordered_4u8_mask); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_int64 (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 8, "t2"); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "andnw", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "andnw", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -35366,7 +34668,7 @@ _backup_video_orc_dither_ordered_4u16_mask (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var37.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: loadq */ @@ -35398,52 +34700,47 @@ video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, - 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 49, - 54, - 95, 109, 97, 115, 107, 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 20, - 8, 134, 33, 24, 21, 2, 72, 32, 0, 4, 21, 2, 74, 0, 33, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_video_orc_dither_ordered_4u16_mask); + static const orc_uint8 bc[] = { + 1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116, + 104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 49, 54, + 95, 109, 97, 115, 107, 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 20, + 8, 134, 33, 24, 21, 2, 72, 32, 0, 4, 21, 2, 74, 0, 33, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_video_orc_dither_ordered_4u16_mask); #else - p = orc_program_new (); - orc_program_set_name (p, "video_orc_dither_ordered_4u16_mask"); - orc_program_set_backup_function (p, - _backup_video_orc_dither_ordered_4u16_mask); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_int64 (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 8, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "video_orc_dither_ordered_4u16_mask"); + orc_program_set_backup_function (p, + _backup_video_orc_dither_ordered_4u16_mask); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_int64 (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 8, "t2"); - orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -35529,48 +34826,44 @@ video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride, const orc_uint16 * ORC_RESTRICT s1, int s1_stride, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, - 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 71, 82, 65, 89, 56, - 11, 1, 1, 12, 2, 2, 20, 1, 20, 2, 82, 33, 4, 158, 32, 33, - 64, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8); + static const orc_uint8 bc[] = { + 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, + 110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 71, 82, 65, 89, 56, + 11, 1, 1, 12, 2, 2, 20, 1, 20, 2, 82, 33, 4, 158, 32, 33, + 64, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_orc_convert_UYVY_GRAY8"); - orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_orc_convert_UYVY_GRAY8"); + orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "loadw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.h b/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.h index 35a6b7fae0..10f8d6a8f8 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.h +++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-orc-dist.h @@ -55,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif diff --git a/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.c b/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.c index cdddba4c23..5744761791 100644 --- a/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.c +++ b/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -138,6 +141,7 @@ void adder_orc_add_volume_f64 (double *ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -173,6 +177,8 @@ void adder_orc_add_volume_f64 (double *ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -245,40 +251,36 @@ adder_orc_add_s32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 104, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 104, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_s32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_s32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_s32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -357,40 +359,36 @@ adder_orc_add_s16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 115, 49, 54, 11, 2, 2, 12, 2, 2, 71, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 115, 49, 54, 11, 2, 2, 12, 2, 2, 71, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_s16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_s16"); - orc_program_set_backup_function (p, _backup_adder_orc_add_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_s16"); + orc_program_set_backup_function (p, _backup_adder_orc_add_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -467,39 +465,35 @@ void adder_orc_add_s8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 16, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 115, 56, 11, 1, 1, 12, 1, 1, 34, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_s8); + static const orc_uint8 bc[] = { + 1, 9, 16, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 115, 56, 11, 1, 1, 12, 1, 1, 34, 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_s8"); - orc_program_set_backup_function (p, _backup_adder_orc_add_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_s8"); + orc_program_set_backup_function (p, _backup_adder_orc_add_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -582,40 +576,36 @@ adder_orc_add_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 105, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 105, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_u32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_u32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_u32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -694,40 +684,36 @@ adder_orc_add_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 117, 49, 54, 11, 2, 2, 12, 2, 2, 72, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 117, 49, 54, 11, 2, 2, 12, 2, 2, 72, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_u16); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_u16"); - orc_program_set_backup_function (p, _backup_adder_orc_add_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_u16"); + orc_program_set_backup_function (p, _backup_adder_orc_add_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -806,39 +792,35 @@ adder_orc_add_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 16, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 117, 56, 11, 1, 1, 12, 1, 1, 35, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_u8); + static const orc_uint8 bc[] = { + 1, 9, 16, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 117, 56, 11, 1, 1, 12, 1, 1, 35, 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_u8"); - orc_program_set_backup_function (p, _backup_adder_orc_add_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_u8"); + orc_program_set_backup_function (p, _backup_adder_orc_add_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -931,40 +913,36 @@ void adder_orc_add_f32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 102, 51, 50, 11, 4, 4, 12, 4, 4, 200, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 102, 51, 50, 11, 4, 4, 12, 4, 4, 200, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_f32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_f32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_f32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1059,40 +1037,36 @@ adder_orc_add_f64 (double *ORC_RESTRICT d1, const double *ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 212, 0, 0, 4, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 17, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 212, 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_f64); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_f64"); - orc_program_set_backup_function (p, _backup_adder_orc_add_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_f64"); + orc_program_set_backup_function (p, _backup_adder_orc_add_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1203,54 +1177,50 @@ void adder_orc_volume_u8 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 117, 56, 11, 1, 1, 14, 1, 128, 0, 0, 0, 14, - 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, 68, 33, 0, 16, 174, - 32, 33, 24, 94, 32, 32, 17, 159, 33, 32, 68, 0, 33, 16, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 117, 56, 11, 1, 1, 14, 1, 128, 0, 0, 0, 14, + 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, 68, 33, 0, 16, 174, + 32, 33, 24, 94, 32, 32, 17, 159, 33, 32, 68, 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_u8"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 2, 0x00000003, "c2"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_u8"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 2, 0x00000003, "c2"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1335,47 +1305,43 @@ void adder_orc_volume_s8 (gint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 19, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 115, 56, 11, 1, 1, 14, 2, 3, 0, 0, 0, 16, - 1, 20, 2, 174, 32, 0, 24, 94, 32, 32, 16, 159, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 19, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 115, 56, 11, 1, 1, 14, 2, 3, 0, 0, 0, 16, + 1, 20, 2, 174, 32, 0, 24, 94, 32, 32, 16, 159, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_s8"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_s8"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1486,54 +1452,50 @@ void adder_orc_volume_u16 (guint16 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 117, 49, 54, 11, 2, 2, 14, 2, 0, 128, 0, 0, - 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 20, 2, 101, 33, 0, 16, - 176, 32, 33, 24, 125, 32, 32, 17, 165, 33, 32, 101, 0, 33, 16, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u16); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 117, 49, 54, 11, 2, 2, 14, 2, 0, 128, 0, 0, + 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 20, 2, 101, 33, 0, 16, + 176, 32, 33, 24, 125, 32, 32, 17, 165, 33, 32, 101, 0, 33, 16, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_u16"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 2, 0x00008000, "c1"); - orc_program_add_constant (p, 4, 0x0000000b, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_u16"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 2, 0x00008000, "c1"); + orc_program_add_constant (p, 4, 0x0000000b, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1618,47 +1580,43 @@ void adder_orc_volume_s16 (gint16 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 115, 49, 54, 11, 2, 2, 14, 4, 11, 0, 0, 0, - 16, 2, 20, 4, 176, 32, 0, 24, 125, 32, 32, 16, 165, 0, 32, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s16); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 115, 49, 54, 11, 2, 2, 14, 4, 11, 0, 0, 0, + 16, 2, 20, 4, 176, 32, 0, 24, 125, 32, 32, 16, 165, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_s16"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 4, 0x0000000b, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_s16"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x0000000b, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1769,54 +1727,50 @@ void adder_orc_volume_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 117, 51, 50, 11, 4, 4, 14, 4, 0, 0, 0, 128, - 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, 4, - 132, 33, 0, 16, 178, 32, 33, 24, 147, 32, 32, 17, 170, 33, 32, 132, - 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 117, 51, 50, 11, 4, 4, 14, 4, 0, 0, 0, 128, + 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, 4, + 132, 33, 0, 16, 178, 32, 33, 24, 147, 32, 32, 17, 170, 33, 32, 132, + 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_u32"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_u32"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1901,47 +1855,43 @@ void adder_orc_volume_s32 (gint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 115, 51, 50, 11, 4, 4, 15, 8, 27, 0, 0, 0, - 0, 0, 0, 0, 16, 4, 20, 8, 178, 32, 0, 24, 147, 32, 32, 16, - 170, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 115, 51, 50, 11, 4, 4, 15, 8, 27, 0, 0, 0, + 0, 0, 0, 0, 16, 4, 20, 8, 178, 32, 0, 24, 147, 32, 32, 16, + 170, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_s32"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_s32"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2030,40 +1980,36 @@ void adder_orc_volume_f32 (float *ORC_RESTRICT d1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 102, 51, 50, 11, 4, 4, 17, 4, 202, 0, 0, 24, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_f32); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 102, 51, 50, 11, 4, 4, 17, 4, 202, 0, 0, 24, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_f32"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter_float (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_f32"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter_float (p, 4, "p1"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2133,7 +2079,7 @@ _backup_adder_orc_volume_f64 (OrcExecutor * ORC_RESTRICT ex) /* 1: loadpq */ var33.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 0: loadq */ @@ -2158,40 +2104,36 @@ void adder_orc_volume_f64 (double *ORC_RESTRICT d1, double p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, - 117, 109, 101, 95, 102, 54, 52, 11, 8, 8, 18, 8, 214, 0, 0, 24, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_volume_f64); + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 118, 111, 108, + 117, 109, 101, 95, 102, 54, 52, 11, 8, 8, 18, 8, 214, 0, 0, 24, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_volume_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_volume_f64"); - orc_program_set_backup_function (p, _backup_adder_orc_volume_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter_double (p, 8, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_volume_f64"); + orc_program_set_backup_function (p, _backup_adder_orc_volume_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter_double (p, 8, "p1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2325,57 +2267,53 @@ adder_orc_add_volume_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, 1, 1, 12, 1, 1, - 14, 1, 128, 0, 0, 0, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, - 20, 1, 68, 33, 4, 16, 174, 32, 33, 24, 94, 32, 32, 17, 159, 33, - 32, 68, 33, 33, 16, 35, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u8); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, 1, 1, 12, 1, 1, + 14, 1, 128, 0, 0, 0, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, + 20, 1, 68, 33, 4, 16, 174, 32, 33, 24, 94, 32, 32, 17, 159, 33, + 32, 68, 33, 33, 16, 35, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_u8"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 2, 0x00000003, "c2"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_u8"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 2, 0x00000003, "c2"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2479,51 +2417,47 @@ adder_orc_add_volume_s8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 115, 56, 11, 1, 1, 12, 1, 1, - 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, 174, 32, 4, 24, - 94, 32, 32, 16, 159, 33, 32, 34, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s8); + static const orc_uint8 bc[] = { + 1, 9, 23, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 115, 56, 11, 1, 1, 12, 1, 1, + 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, 174, 32, 4, 24, + 94, 32, 32, 16, 159, 33, 32, 34, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_s8"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_s8"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2653,57 +2587,53 @@ adder_orc_add_volume_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 117, 49, 54, 11, 2, 2, 12, 2, - 2, 14, 2, 0, 128, 0, 0, 14, 4, 11, 0, 0, 0, 16, 2, 20, - 4, 20, 2, 101, 33, 4, 16, 176, 32, 33, 24, 125, 32, 32, 17, 165, - 33, 32, 101, 33, 33, 16, 72, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u16); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 117, 49, 54, 11, 2, 2, 12, 2, + 2, 14, 2, 0, 128, 0, 0, 14, 4, 11, 0, 0, 0, 16, 2, 20, + 4, 20, 2, 101, 33, 4, 16, 176, 32, 33, 24, 125, 32, 32, 17, 165, + 33, 32, 101, 33, 33, 16, 72, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_u16"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00008000, "c1"); - orc_program_add_constant (p, 4, 0x0000000b, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_u16"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00008000, "c1"); + orc_program_add_constant (p, 4, 0x0000000b, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2807,51 +2737,47 @@ adder_orc_add_volume_s16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 115, 49, 54, 11, 2, 2, 12, 2, - 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 20, 2, 176, 32, 4, - 24, 125, 32, 32, 16, 165, 33, 32, 71, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s16); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 115, 49, 54, 11, 2, 2, 12, 2, + 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 20, 2, 176, 32, 4, + 24, 125, 32, 32, 16, 165, 33, 32, 71, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_s16"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x0000000b, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_s16"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x0000000b, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2985,58 +2911,54 @@ adder_orc_add_volume_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 117, 51, 50, 11, 4, 4, 12, 4, - 4, 14, 4, 0, 0, 0, 128, 15, 8, 27, 0, 0, 0, 0, 0, 0, - 0, 16, 4, 20, 8, 20, 4, 132, 33, 4, 16, 178, 32, 33, 24, 147, - 32, 32, 17, 170, 33, 32, 132, 33, 33, 16, 105, 0, 0, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 117, 51, 50, 11, 4, 4, 12, 4, + 4, 14, 4, 0, 0, 0, 128, 15, 8, 27, 0, 0, 0, 0, 0, 0, + 0, 16, 4, 20, 8, 20, 4, 132, 33, 4, 16, 178, 32, 33, 24, 147, + 32, 32, 17, 170, 33, 32, 132, 33, 33, 16, 105, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u32); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_u32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_u32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3140,52 +3062,48 @@ adder_orc_add_volume_s32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 115, 51, 50, 11, 4, 4, 12, 4, - 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, - 4, 178, 32, 4, 24, 147, 32, 32, 16, 170, 33, 32, 104, 0, 0, 33, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s32); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 115, 51, 50, 11, 4, 4, 12, 4, + 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, + 4, 178, 32, 4, 24, 147, 32, 32, 16, 170, 33, 32, 104, 0, 0, 33, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_s32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_s32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3309,44 +3227,40 @@ adder_orc_add_volume_f32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 102, 51, 50, 11, 4, 4, 12, 4, - 4, 17, 4, 20, 4, 202, 32, 4, 24, 200, 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f32); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 102, 51, 50, 11, 4, 4, 12, 4, + 4, 17, 4, 20, 4, 202, 32, 4, 24, 200, 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_f32"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_f32"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3438,7 +3352,7 @@ _backup_adder_orc_add_volume_f64 (OrcExecutor * ORC_RESTRICT ex) /* 1: loadpq */ var34.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 0: loadq */ @@ -3476,44 +3390,40 @@ adder_orc_add_volume_f64 (double *ORC_RESTRICT d1, const double *ORC_RESTRICT s1, double p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, - 95, 118, 111, 108, 117, 109, 101, 95, 102, 54, 52, 11, 8, 8, 12, 8, - 8, 18, 8, 20, 8, 214, 32, 4, 24, 212, 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f64); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 100, 100, 101, 114, 95, 111, 114, 99, 95, 97, 100, 100, + 95, 118, 111, 108, 117, 109, 101, 95, 102, 54, 52, 11, 8, 8, 12, 8, + 8, 18, 8, 20, 8, 214, 32, 4, 24, 212, 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "adder_orc_add_volume_f64"); - orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_double (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "adder_orc_add_volume_f64"); + orc_program_set_backup_function (p, _backup_adder_orc_add_volume_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_double (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.h b/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.h index 2bc0682d32..2c44bdac67 100644 --- a/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.h +++ b/subprojects/gst-plugins-base/gst/adder/gstadderorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstadderorc.orc */ -#ifndef _GSTADDERORC_H_ -#define _GSTADDERORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -109,5 +110,3 @@ void adder_orc_add_volume_f64 (double * ORC_RESTRICT d1, const double * ORC_REST } #endif -#endif - diff --git a/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.c b/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.c index fae10cf260..d0d37a0e9c 100644 --- a/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.c +++ b/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -131,6 +134,7 @@ void audiomixer_orc_add_volume_f64 (double *ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -166,6 +170,8 @@ void audiomixer_orc_add_volume_f64 (double *ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -238,40 +244,36 @@ audiomixer_orc_add_s32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 104, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s32); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 115, 51, 50, 11, 4, 4, 12, 4, 4, 104, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_s32"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_s32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -350,40 +352,36 @@ audiomixer_orc_add_s16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 115, 49, 54, 11, 2, 2, 12, 2, 2, 71, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s16); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 115, 49, 54, 11, 2, 2, 12, 2, 2, 71, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_s16"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_s16"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -462,40 +460,36 @@ audiomixer_orc_add_s8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 115, 56, 11, 1, 1, 12, 1, 1, 34, 0, - 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s8); + static const orc_uint8 bc[] = { + 1, 9, 21, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 115, 56, 11, 1, 1, 12, 1, 1, 34, 0, + 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_s8"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_s8"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -578,40 +572,36 @@ audiomixer_orc_add_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 105, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u32); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 105, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_u32"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_u32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -690,40 +680,36 @@ audiomixer_orc_add_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 117, 49, 54, 11, 2, 2, 12, 2, 2, 72, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u16); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 117, 49, 54, 11, 2, 2, 12, 2, 2, 72, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_u16"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_u16"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -802,40 +788,36 @@ audiomixer_orc_add_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 117, 56, 11, 1, 1, 12, 1, 1, 35, 0, - 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u8); + static const orc_uint8 bc[] = { + 1, 9, 21, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 117, 56, 11, 1, 1, 12, 1, 1, 35, 0, + 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_u8"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_u8"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -930,40 +912,36 @@ audiomixer_orc_add_f32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 102, 51, 50, 11, 4, 4, 12, 4, 4, 200, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f32); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 102, 51, 50, 11, 4, 4, 12, 4, 4, 200, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_f32"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_f32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1058,40 +1036,36 @@ audiomixer_orc_add_f64 (double *ORC_RESTRICT d1, const double *ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 212, - 0, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f64); + static const orc_uint8 bc[] = { + 1, 9, 22, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 102, 54, 52, 11, 8, 8, 12, 8, 8, 212, + 0, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_f64"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_f64"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1202,54 +1176,50 @@ void audiomixer_orc_volume_u8 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, 1, 1, 14, 1, - 128, 0, 0, 0, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, - 68, 33, 0, 16, 174, 32, 33, 24, 94, 32, 32, 17, 159, 33, 32, 68, - 0, 33, 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_volume_u8); + static const orc_uint8 bc[] = { + 1, 9, 24, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, 1, 1, 14, 1, + 128, 0, 0, 0, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, 1, + 68, 33, 0, 16, 174, 32, 33, 24, 94, 32, 32, 17, 159, 33, 32, 68, + 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_volume_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_volume_u8"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_volume_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 2, 0x00000003, "c2"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_volume_u8"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_volume_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 2, 0x00000003, "c2"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1378,58 +1348,54 @@ audiomixer_orc_add_volume_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, - 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, 14, 2, 3, 0, 0, - 0, 16, 1, 20, 2, 20, 1, 68, 33, 4, 16, 174, 32, 33, 24, 94, - 32, 32, 17, 159, 33, 32, 68, 33, 33, 16, 35, 0, 0, 33, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 28, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 56, 11, + 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, 14, 2, 3, 0, 0, + 0, 16, 1, 20, 2, 20, 1, 68, 33, 4, 16, 174, 32, 33, 24, 94, + 32, 32, 17, 159, 33, 32, 68, 33, 33, 16, 35, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u8); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u8); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_u8"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_constant (p, 2, 0x00000003, "c2"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_u8"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_constant (p, 2, 0x00000003, "c2"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1533,52 +1499,48 @@ audiomixer_orc_add_volume_s8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 56, 11, - 1, 1, 12, 1, 1, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, - 1, 174, 32, 4, 24, 94, 32, 32, 16, 159, 33, 32, 34, 0, 0, 33, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s8); + static const orc_uint8 bc[] = { + 1, 9, 28, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 56, 11, + 1, 1, 12, 1, 1, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 20, + 1, 174, 32, 4, 24, 94, 32, 32, 16, 159, 33, 32, 34, 0, 0, 33, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s8); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_s8"); - orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 1, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_s8"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 1, "t2"); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1708,60 +1670,54 @@ audiomixer_orc_add_volume_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 49, 54, - 11, 2, 2, 12, 2, 2, 14, 2, 0, 128, 0, 0, 14, 4, 11, 0, - 0, 0, 16, 2, 20, 4, 20, 2, 101, 33, 4, 16, 176, 32, 33, 24, - 125, 32, 32, 17, 165, 33, 32, 101, 33, 33, 16, 72, 0, 0, 33, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_u16); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 49, 54, + 11, 2, 2, 12, 2, 2, 14, 2, 0, 128, 0, 0, 14, 4, 11, 0, + 0, 0, 16, 2, 20, 4, 20, 2, 101, 33, 4, 16, 176, 32, 33, 24, + 125, 32, 32, 17, 165, 33, 32, 101, 33, 33, 16, 72, 0, 0, 33, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u16); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_u16"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 2, 0x00008000, "c1"); - orc_program_add_constant (p, 4, 0x0000000b, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_u16"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 2, 0x00008000, "c1"); + orc_program_add_constant (p, 4, 0x0000000b, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1865,54 +1821,48 @@ audiomixer_orc_add_volume_s16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 49, 54, - 11, 2, 2, 12, 2, 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, - 20, 2, 176, 32, 4, 24, 125, 32, 32, 16, 165, 33, 32, 71, 0, 0, - 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_s16); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 49, 54, + 11, 2, 2, 12, 2, 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, + 20, 2, 176, 32, 4, 24, 125, 32, 32, 16, 165, 33, 32, 71, 0, 0, + 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s16); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_s16"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x0000000b, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_s16"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x0000000b, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2046,60 +1996,54 @@ audiomixer_orc_add_volume_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 51, 50, - 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, 0, 128, 15, 8, 27, 0, - 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, 4, 132, 33, 4, 16, - 178, 32, 33, 24, 147, 32, 32, 17, 170, 33, 32, 132, 33, 33, 16, 105, - 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_u32); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 117, 51, 50, + 11, 4, 4, 12, 4, 4, 14, 4, 0, 0, 0, 128, 15, 8, 27, 0, + 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 20, 4, 132, 33, 4, 16, + 178, 32, 33, 24, 147, 32, 32, 17, 170, 33, 32, 132, 33, 33, 16, 105, + 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_u32"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_u32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c2"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2203,54 +2147,48 @@ audiomixer_orc_add_volume_s32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 51, 50, - 11, 4, 4, 12, 4, 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, - 16, 4, 20, 8, 20, 4, 178, 32, 4, 24, 147, 32, 32, 16, 170, 33, - 32, 104, 0, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_s32); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 115, 51, 50, + 11, 4, 4, 12, 4, 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, + 16, 4, 20, 8, 20, 4, 178, 32, 4, 24, 147, 32, 32, 16, 170, 33, + 32, 104, 0, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_s32"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_s32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2374,47 +2312,41 @@ audiomixer_orc_add_volume_f32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 102, 51, 50, - 11, 4, 4, 12, 4, 4, 17, 4, 20, 4, 202, 32, 4, 24, 200, 0, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_f32); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 102, 51, 50, + 11, 4, 4, 12, 4, 4, 17, 4, 20, 4, 202, 32, 4, 24, 200, 0, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_f32); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_f32"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_f32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_f32"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_f32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2506,7 +2438,7 @@ _backup_audiomixer_orc_add_volume_f64 (OrcExecutor * ORC_RESTRICT ex) /* 1: loadpq */ var34.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 0: loadq */ @@ -2544,47 +2476,41 @@ audiomixer_orc_add_volume_f64 (double *ORC_RESTRICT d1, const double *ORC_RESTRICT s1, double p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, - 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 102, 54, 52, - 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 214, 32, 4, 24, 212, 0, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_f64); + static const orc_uint8 bc[] = { + 1, 9, 29, 97, 117, 100, 105, 111, 109, 105, 120, 101, 114, 95, 111, 114, + 99, 95, 97, 100, 100, 95, 118, 111, 108, 117, 109, 101, 95, 102, 54, 52, + 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 214, 32, 4, 24, 212, 0, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "audiomixer_orc_add_volume_f64"); - orc_program_set_backup_function (p, - _backup_audiomixer_orc_add_volume_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_double (p, 8, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "audiomixer_orc_add_volume_f64"); + orc_program_set_backup_function (p, _backup_audiomixer_orc_add_volume_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_double (p, 8, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addd", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.h b/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.h index af0de01394..723870260f 100644 --- a/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.h +++ b/subprojects/gst-plugins-base/gst/audiomixer/gstaudiomixerorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstaudiomixerorc.orc */ -#ifndef _GSTAUDIOMIXERORC_H_ -#define _GSTAUDIOMIXERORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -102,5 +103,3 @@ void audiomixer_orc_add_volume_f64 (double * ORC_RESTRICT d1, const double * ORC } #endif -#endif - diff --git a/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.c b/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.c index d5318b24ae..8767720c97 100644 --- a/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.c +++ b/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -135,6 +138,7 @@ void compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -170,6 +174,8 @@ void compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -230,40 +236,36 @@ void compositor_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114, - 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, - 112, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32); + static const orc_uint8 bc[] = { + 1, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114, + 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, + 112, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "compositor_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "compositor_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -336,40 +338,36 @@ compositor_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114, - 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, 12, - 4, 4, 112, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32); + static const orc_uint8 bc[] = { + 1, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114, + 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, 12, + 4, 4, 112, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "compositor_orc_memcpy_u32"); - orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "compositor_orc_memcpy_u32"); + orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -439,41 +437,37 @@ compositor_orc_memset_u16_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 28, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 109, 101, 109, 115, 101, 116, 95, 117, 49, 54, 95, 50, 100, - 11, 2, 2, 16, 2, 97, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_memset_u16_2d); + static const orc_uint8 bc[] = { + 1, 7, 9, 28, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 109, 101, 109, 115, 101, 116, 95, 117, 49, 54, 95, 50, 100, + 11, 2, 2, 16, 2, 97, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_memset_u16_2d); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_memset_u16_2d"); - orc_program_set_backup_function (p, _backup_compositor_orc_memset_u16_2d); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_memset_u16_2d"); + orc_program_set_backup_function (p, _backup_compositor_orc_memset_u16_2d); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_parameter (p, 2, "p1"); - orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -609,61 +603,57 @@ compositor_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 23, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, 1, - 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, 0, - 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, 70, - 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8); + static const orc_uint8 bc[] = { + 1, 7, 9, 23, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, 1, + 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, 0, + 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, 70, + 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u8"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000008, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u8"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -801,61 +791,57 @@ compositor_orc_blend_u10 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 48, 11, 2, 2, 12, - 2, 2, 14, 1, 10, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, - 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, - 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10); + static const orc_uint8 bc[] = { + 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 48, 11, 2, 2, 12, + 2, 2, 14, 1, 10, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, + 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, + 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u10"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x0000000a, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u10"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x0000000a, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -993,61 +979,57 @@ compositor_orc_blend_u12 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 50, 11, 2, 2, 12, - 2, 2, 14, 1, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, - 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, - 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12); + static const orc_uint8 bc[] = { + 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 50, 11, 2, 2, 12, + 2, 2, 14, 1, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, + 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, + 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u12"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x0000000c, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u12"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x0000000c, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1185,61 +1167,57 @@ compositor_orc_blend_u16 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 54, 11, 2, 2, 12, - 2, 2, 14, 1, 16, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, - 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, - 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16); + static const orc_uint8 bc[] = { + 1, 7, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 54, 11, 2, 2, 12, + 2, 2, 14, 1, 16, 0, 0, 0, 16, 2, 20, 4, 20, 4, 154, 32, + 0, 154, 33, 4, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, + 103, 33, 32, 33, 126, 33, 33, 16, 166, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u16"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x00000010, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u16"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x00000010, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1395,71 +1373,65 @@ compositor_orc_blend_u10_swap (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 48, 95, 115, 119, 97, - 112, 11, 2, 2, 12, 2, 2, 14, 1, 10, 0, 0, 0, 16, 2, 20, - 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, - 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, - 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u10_swap); + static const orc_uint8 bc[] = { + 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 48, 95, 115, 119, 97, + 112, 11, 2, 2, 12, 2, 2, 14, 1, 10, 0, 0, 0, 16, 2, 20, + 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, + 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, + 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10_swap); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u10_swap"); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u10_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x0000000a, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u10_swap"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u10_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x0000000a, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1615,71 +1587,65 @@ compositor_orc_blend_u12_swap (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 50, 95, 115, 119, 97, - 112, 11, 2, 2, 12, 2, 2, 14, 1, 12, 0, 0, 0, 16, 2, 20, - 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, - 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, - 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u12_swap); + static const orc_uint8 bc[] = { + 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 50, 95, 115, 119, 97, + 112, 11, 2, 2, 12, 2, 2, 14, 1, 12, 0, 0, 0, 16, 2, 20, + 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, + 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, + 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12_swap); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u12_swap"); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u12_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x0000000c, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u12_swap"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u12_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x0000000c, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1835,71 +1801,65 @@ compositor_orc_blend_u16_swap (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 54, 95, 115, 119, 97, - 112, 11, 2, 2, 12, 2, 2, 14, 1, 16, 0, 0, 0, 16, 2, 20, - 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, - 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, - 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u16_swap); + static const orc_uint8 bc[] = { + 1, 7, 9, 29, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 49, 54, 95, 115, 119, 97, + 112, 11, 2, 2, 12, 2, 2, 14, 1, 16, 0, 0, 0, 16, 2, 20, + 4, 20, 4, 20, 2, 183, 34, 0, 154, 32, 34, 183, 34, 4, 154, 33, + 34, 129, 33, 33, 32, 120, 33, 33, 24, 124, 32, 32, 16, 103, 33, 32, + 33, 126, 33, 33, 16, 166, 34, 33, 183, 0, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16_swap); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_u16_swap"); - orc_program_set_backup_function (p, - _backup_compositor_orc_blend_u16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 1, 0x00000010, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_u16_swap"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_u16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 1, 0x00000010, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1997,18 +1957,10 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var47.x4[2] = (var46.x4[2] * var39.x4[2]) & 0xffff; var47.x4[3] = (var46.x4[3] * var39.x4[3]) & 0xffff; /* 7: div255w */ - var48.x4[0] = - ((orc_uint16) (((orc_uint16) (var47.x4[0] + 128)) + - (((orc_uint16) (var47.x4[0] + 128)) >> 8))) >> 8; - var48.x4[1] = - ((orc_uint16) (((orc_uint16) (var47.x4[1] + 128)) + - (((orc_uint16) (var47.x4[1] + 128)) >> 8))) >> 8; - var48.x4[2] = - ((orc_uint16) (((orc_uint16) (var47.x4[2] + 128)) + - (((orc_uint16) (var47.x4[2] + 128)) >> 8))) >> 8; - var48.x4[3] = - ((orc_uint16) (((orc_uint16) (var47.x4[3] + 128)) + - (((orc_uint16) (var47.x4[3] + 128)) >> 8))) >> 8; + var48.x4[0] = (((orc_uint16) var47.x4[0]) * 0x8081u) >> 23; + var48.x4[1] = (((orc_uint16) var47.x4[1]) * 0x8081u) >> 23; + var48.x4[2] = (((orc_uint16) var47.x4[2]) * 0x8081u) >> 23; + var48.x4[3] = (((orc_uint16) var47.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var49.x4[0] = (orc_uint8) var42.x4[0]; var49.x4[1] = (orc_uint8) var42.x4[1]; @@ -2042,18 +1994,10 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var55.x4[2] = var54.x4[2] + var50.x4[2]; var55.x4[3] = var54.x4[3] + var50.x4[3]; /* 16: div255w */ - var56.x4[0] = - ((orc_uint16) (((orc_uint16) (var55.x4[0] + 128)) + - (((orc_uint16) (var55.x4[0] + 128)) >> 8))) >> 8; - var56.x4[1] = - ((orc_uint16) (((orc_uint16) (var55.x4[1] + 128)) + - (((orc_uint16) (var55.x4[1] + 128)) >> 8))) >> 8; - var56.x4[2] = - ((orc_uint16) (((orc_uint16) (var55.x4[2] + 128)) + - (((orc_uint16) (var55.x4[2] + 128)) >> 8))) >> 8; - var56.x4[3] = - ((orc_uint16) (((orc_uint16) (var55.x4[3] + 128)) + - (((orc_uint16) (var55.x4[3] + 128)) >> 8))) >> 8; + var56.x4[0] = (((orc_uint16) var55.x4[0]) * 0x8081u) >> 23; + var56.x4[1] = (((orc_uint16) var55.x4[1]) * 0x8081u) >> 23; + var56.x4[2] = (((orc_uint16) var55.x4[2]) * 0x8081u) >> 23; + var56.x4[3] = (((orc_uint16) var55.x4[3]) * 0x8081u) >> 23; /* 17: convwb */ var57.x4[0] = var56.x4[0]; var57.x4[1] = var56.x4[1]; @@ -2147,18 +2091,10 @@ _backup_compositor_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) var47.x4[2] = (var46.x4[2] * var39.x4[2]) & 0xffff; var47.x4[3] = (var46.x4[3] * var39.x4[3]) & 0xffff; /* 7: div255w */ - var48.x4[0] = - ((orc_uint16) (((orc_uint16) (var47.x4[0] + 128)) + - (((orc_uint16) (var47.x4[0] + 128)) >> 8))) >> 8; - var48.x4[1] = - ((orc_uint16) (((orc_uint16) (var47.x4[1] + 128)) + - (((orc_uint16) (var47.x4[1] + 128)) >> 8))) >> 8; - var48.x4[2] = - ((orc_uint16) (((orc_uint16) (var47.x4[2] + 128)) + - (((orc_uint16) (var47.x4[2] + 128)) >> 8))) >> 8; - var48.x4[3] = - ((orc_uint16) (((orc_uint16) (var47.x4[3] + 128)) + - (((orc_uint16) (var47.x4[3] + 128)) >> 8))) >> 8; + var48.x4[0] = (((orc_uint16) var47.x4[0]) * 0x8081u) >> 23; + var48.x4[1] = (((orc_uint16) var47.x4[1]) * 0x8081u) >> 23; + var48.x4[2] = (((orc_uint16) var47.x4[2]) * 0x8081u) >> 23; + var48.x4[3] = (((orc_uint16) var47.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var49.x4[0] = (orc_uint8) var42.x4[0]; var49.x4[1] = (orc_uint8) var42.x4[1]; @@ -2192,18 +2128,10 @@ _backup_compositor_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) var55.x4[2] = var54.x4[2] + var50.x4[2]; var55.x4[3] = var54.x4[3] + var50.x4[3]; /* 16: div255w */ - var56.x4[0] = - ((orc_uint16) (((orc_uint16) (var55.x4[0] + 128)) + - (((orc_uint16) (var55.x4[0] + 128)) >> 8))) >> 8; - var56.x4[1] = - ((orc_uint16) (((orc_uint16) (var55.x4[1] + 128)) + - (((orc_uint16) (var55.x4[1] + 128)) >> 8))) >> 8; - var56.x4[2] = - ((orc_uint16) (((orc_uint16) (var55.x4[2] + 128)) + - (((orc_uint16) (var55.x4[2] + 128)) >> 8))) >> 8; - var56.x4[3] = - ((orc_uint16) (((orc_uint16) (var55.x4[3] + 128)) + - (((orc_uint16) (var55.x4[3] + 128)) >> 8))) >> 8; + var56.x4[0] = (((orc_uint16) var55.x4[0]) * 0x8081u) >> 23; + var56.x4[1] = (((orc_uint16) var55.x4[1]) * 0x8081u) >> 23; + var56.x4[2] = (((orc_uint16) var55.x4[2]) * 0x8081u) >> 23; + var56.x4[3] = (((orc_uint16) var55.x4[3]) * 0x8081u) >> 23; /* 17: convwb */ var57.x4[0] = var56.x4[0]; var57.x4[1] = var56.x4[1]; @@ -2223,92 +2151,88 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, 4, - 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 2, 255, 0, 0, 0, 16, - 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, - 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, 35, - 21, 2, 89, 38, 38, 24, 21, 2, 80, 38, 38, 21, 2, 150, 37, 32, - 21, 2, 89, 37, 37, 38, 21, 2, 98, 38, 17, 38, 113, 32, 0, 21, - 2, 150, 36, 32, 21, 2, 89, 36, 36, 38, 21, 2, 70, 36, 36, 37, - 21, 2, 80, 36, 36, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, - 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb); + static const orc_uint8 bc[] = { + 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, 4, + 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 2, 255, 0, 0, 0, 16, + 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, + 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, 35, + 21, 2, 89, 38, 38, 24, 21, 2, 80, 38, 38, 21, 2, 150, 37, 32, + 21, 2, 89, 37, 37, 38, 21, 2, 98, 38, 17, 38, 113, 32, 0, 21, + 2, 150, 36, 32, 21, 2, 89, 36, 36, 38, 21, 2, 70, 36, 36, 37, + 21, 2, 80, 36, 36, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, + 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_argb"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x000000ff, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_argb"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x000000ff, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_C2, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_C2, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2397,18 +2321,10 @@ compositor_orc_source_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff; /* 7: div255w */ - var47.x4[0] = - ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) + - (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8; - var47.x4[1] = - ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) + - (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8; - var47.x4[2] = - ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) + - (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8; - var47.x4[3] = - ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) + - (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8; + var47.x4[0] = (((orc_uint16) var46.x4[0]) * 0x8081u) >> 23; + var47.x4[1] = (((orc_uint16) var46.x4[1]) * 0x8081u) >> 23; + var47.x4[2] = (((orc_uint16) var46.x4[2]) * 0x8081u) >> 23; + var47.x4[3] = (((orc_uint16) var46.x4[3]) * 0x8081u) >> 23; /* 9: andl */ var48.i = var41.i & var39.i; /* 10: convwb */ @@ -2497,18 +2413,10 @@ _backup_compositor_orc_source_argb (OrcExecutor * ORC_RESTRICT ex) var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff; /* 7: div255w */ - var47.x4[0] = - ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) + - (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8; - var47.x4[1] = - ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) + - (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8; - var47.x4[2] = - ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) + - (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8; - var47.x4[3] = - ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) + - (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8; + var47.x4[0] = (((orc_uint16) var46.x4[0]) * 0x8081u) >> 23; + var47.x4[1] = (((orc_uint16) var46.x4[1]) * 0x8081u) >> 23; + var47.x4[2] = (((orc_uint16) var46.x4[2]) * 0x8081u) >> 23; + var47.x4[3] = (((orc_uint16) var46.x4[3]) * 0x8081u) >> 23; /* 9: andl */ var48.i = var41.i & var39.i; /* 10: convwb */ @@ -2532,77 +2440,73 @@ compositor_orc_source_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 97, 114, 103, 98, 11, 4, - 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, - 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32, - 4, 163, 34, 32, 157, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21, - 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2, - 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 97, 114, 103, 98, 11, 4, + 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, + 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32, + 4, 163, 34, 32, 157, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21, + 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2, + 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_source_argb); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_source_argb); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_source_argb"); - orc_program_set_backup_function (p, _backup_compositor_orc_source_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 4, 0xffffff00, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_source_argb"); + orc_program_set_backup_function (p, _backup_compositor_orc_source_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 4, 0xffffff00, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2703,18 +2607,10 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var49.x4[2] = (var48.x4[2] * var40.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var40.x4[3]) & 0xffff; /* 8: div255w */ - var50.x4[0] = - ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) + - (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8; - var50.x4[1] = - ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) + - (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8; - var50.x4[2] = - ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) + - (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8; - var50.x4[3] = - ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) + - (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8; + var50.x4[0] = (((orc_uint16) var49.x4[0]) * 0x8081u) >> 23; + var50.x4[1] = (((orc_uint16) var49.x4[1]) * 0x8081u) >> 23; + var50.x4[2] = (((orc_uint16) var49.x4[2]) * 0x8081u) >> 23; + var50.x4[3] = (((orc_uint16) var49.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var51.x4[0] = (orc_uint8) var43.x4[0]; var51.x4[1] = (orc_uint8) var43.x4[1]; @@ -2748,18 +2644,10 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var57.x4[2] = var56.x4[2] + var52.x4[2]; var57.x4[3] = var56.x4[3] + var52.x4[3]; /* 17: div255w */ - var58.x4[0] = - ((orc_uint16) (((orc_uint16) (var57.x4[0] + 128)) + - (((orc_uint16) (var57.x4[0] + 128)) >> 8))) >> 8; - var58.x4[1] = - ((orc_uint16) (((orc_uint16) (var57.x4[1] + 128)) + - (((orc_uint16) (var57.x4[1] + 128)) >> 8))) >> 8; - var58.x4[2] = - ((orc_uint16) (((orc_uint16) (var57.x4[2] + 128)) + - (((orc_uint16) (var57.x4[2] + 128)) >> 8))) >> 8; - var58.x4[3] = - ((orc_uint16) (((orc_uint16) (var57.x4[3] + 128)) + - (((orc_uint16) (var57.x4[3] + 128)) >> 8))) >> 8; + var58.x4[0] = (((orc_uint16) var57.x4[0]) * 0x8081u) >> 23; + var58.x4[1] = (((orc_uint16) var57.x4[1]) * 0x8081u) >> 23; + var58.x4[2] = (((orc_uint16) var57.x4[2]) * 0x8081u) >> 23; + var58.x4[3] = (((orc_uint16) var57.x4[3]) * 0x8081u) >> 23; /* 18: convwb */ var59.x4[0] = var58.x4[0]; var59.x4[1] = var58.x4[1]; @@ -2856,18 +2744,10 @@ _backup_compositor_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) var49.x4[2] = (var48.x4[2] * var40.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var40.x4[3]) & 0xffff; /* 8: div255w */ - var50.x4[0] = - ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) + - (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8; - var50.x4[1] = - ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) + - (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8; - var50.x4[2] = - ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) + - (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8; - var50.x4[3] = - ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) + - (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8; + var50.x4[0] = (((orc_uint16) var49.x4[0]) * 0x8081u) >> 23; + var50.x4[1] = (((orc_uint16) var49.x4[1]) * 0x8081u) >> 23; + var50.x4[2] = (((orc_uint16) var49.x4[2]) * 0x8081u) >> 23; + var50.x4[3] = (((orc_uint16) var49.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var51.x4[0] = (orc_uint8) var43.x4[0]; var51.x4[1] = (orc_uint8) var43.x4[1]; @@ -2901,18 +2781,10 @@ _backup_compositor_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) var57.x4[2] = var56.x4[2] + var52.x4[2]; var57.x4[3] = var56.x4[3] + var52.x4[3]; /* 17: div255w */ - var58.x4[0] = - ((orc_uint16) (((orc_uint16) (var57.x4[0] + 128)) + - (((orc_uint16) (var57.x4[0] + 128)) >> 8))) >> 8; - var58.x4[1] = - ((orc_uint16) (((orc_uint16) (var57.x4[1] + 128)) + - (((orc_uint16) (var57.x4[1] + 128)) >> 8))) >> 8; - var58.x4[2] = - ((orc_uint16) (((orc_uint16) (var57.x4[2] + 128)) + - (((orc_uint16) (var57.x4[2] + 128)) >> 8))) >> 8; - var58.x4[3] = - ((orc_uint16) (((orc_uint16) (var57.x4[3] + 128)) + - (((orc_uint16) (var57.x4[3] + 128)) >> 8))) >> 8; + var58.x4[0] = (((orc_uint16) var57.x4[0]) * 0x8081u) >> 23; + var58.x4[1] = (((orc_uint16) var57.x4[1]) * 0x8081u) >> 23; + var58.x4[2] = (((orc_uint16) var57.x4[2]) * 0x8081u) >> 23; + var58.x4[3] = (((orc_uint16) var57.x4[3]) * 0x8081u) >> 23; /* 18: convwb */ var59.x4[0] = var58.x4[0]; var59.x4[1] = var58.x4[1]; @@ -2932,96 +2804,92 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, 4, - 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, 14, - 2, 255, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, - 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, 34, - 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, 39, - 39, 24, 21, 2, 80, 39, 39, 21, 2, 150, 38, 32, 21, 2, 89, 38, - 38, 39, 21, 2, 98, 39, 18, 39, 113, 32, 0, 21, 2, 150, 37, 32, - 21, 2, 89, 37, 37, 39, 21, 2, 70, 37, 37, 38, 21, 2, 80, 37, - 37, 21, 2, 157, 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra); + static const orc_uint8 bc[] = { + 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, 4, + 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, 14, + 2, 255, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, + 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, 34, + 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, 39, + 39, 24, 21, 2, 80, 39, 39, 21, 2, 150, 38, 32, 21, 2, 89, 38, + 38, 39, 21, 2, 98, 39, 18, 39, 113, 32, 0, 21, 2, 150, 37, 32, + 21, 2, 89, 37, 37, 39, 21, 2, 70, 37, 37, 38, 21, 2, 80, 37, + 37, 21, 2, 157, 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_blend_bgra"); - orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_constant (p, 2, 0x000000ff, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_blend_bgra"); + orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_constant (p, 2, 0x000000ff, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T8, ORC_VAR_C3, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T8, ORC_VAR_C3, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3110,18 +2978,10 @@ compositor_orc_source_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff; /* 7: div255w */ - var47.x4[0] = - ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) + - (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8; - var47.x4[1] = - ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) + - (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8; - var47.x4[2] = - ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) + - (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8; - var47.x4[3] = - ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) + - (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8; + var47.x4[0] = (((orc_uint16) var46.x4[0]) * 0x8081u) >> 23; + var47.x4[1] = (((orc_uint16) var46.x4[1]) * 0x8081u) >> 23; + var47.x4[2] = (((orc_uint16) var46.x4[2]) * 0x8081u) >> 23; + var47.x4[3] = (((orc_uint16) var46.x4[3]) * 0x8081u) >> 23; /* 9: andl */ var48.i = var41.i & var39.i; /* 10: convwb */ @@ -3210,18 +3070,10 @@ _backup_compositor_orc_source_bgra (OrcExecutor * ORC_RESTRICT ex) var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff; /* 7: div255w */ - var47.x4[0] = - ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) + - (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8; - var47.x4[1] = - ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) + - (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8; - var47.x4[2] = - ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) + - (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8; - var47.x4[3] = - ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) + - (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8; + var47.x4[0] = (((orc_uint16) var46.x4[0]) * 0x8081u) >> 23; + var47.x4[1] = (((orc_uint16) var46.x4[1]) * 0x8081u) >> 23; + var47.x4[2] = (((orc_uint16) var46.x4[2]) * 0x8081u) >> 23; + var47.x4[3] = (((orc_uint16) var46.x4[3]) * 0x8081u) >> 23; /* 9: andl */ var48.i = var41.i & var39.i; /* 10: convwb */ @@ -3245,77 +3097,73 @@ compositor_orc_source_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 98, 103, 114, 97, 11, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, - 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32, - 4, 164, 34, 32, 158, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21, - 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2, - 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 98, 103, 114, 97, 11, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, + 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32, + 4, 164, 34, 32, 158, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21, + 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2, + 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_source_bgra"); - orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00ffffff, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_source_bgra"); + orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00ffffff, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3424,18 +3272,10 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; /* 7: div255w */ - var50.x4[0] = - ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) + - (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8; - var50.x4[1] = - ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) + - (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8; - var50.x4[2] = - ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) + - (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8; - var50.x4[3] = - ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) + - (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8; + var50.x4[0] = (((orc_uint16) var49.x4[0]) * 0x8081u) >> 23; + var50.x4[1] = (((orc_uint16) var49.x4[1]) * 0x8081u) >> 23; + var50.x4[2] = (((orc_uint16) var49.x4[2]) * 0x8081u) >> 23; + var50.x4[3] = (((orc_uint16) var49.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var51.x4[0] = (orc_uint8) var44.x4[0]; var51.x4[1] = (orc_uint8) var44.x4[1]; @@ -3478,18 +3318,10 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + var62.x4[0] = (((orc_uint16) var61.x4[0]) * 0x8081u) >> 23; + var62.x4[1] = (((orc_uint16) var61.x4[1]) * 0x8081u) >> 23; + var62.x4[2] = (((orc_uint16) var61.x4[2]) * 0x8081u) >> 23; + var62.x4[3] = (((orc_uint16) var61.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var63.x4[0] = (orc_uint8) var56.x4[0]; var63.x4[1] = (orc_uint8) var56.x4[1]; @@ -3640,18 +3472,10 @@ _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; /* 7: div255w */ - var50.x4[0] = - ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) + - (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8; - var50.x4[1] = - ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) + - (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8; - var50.x4[2] = - ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) + - (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8; - var50.x4[3] = - ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) + - (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8; + var50.x4[0] = (((orc_uint16) var49.x4[0]) * 0x8081u) >> 23; + var50.x4[1] = (((orc_uint16) var49.x4[1]) * 0x8081u) >> 23; + var50.x4[2] = (((orc_uint16) var49.x4[2]) * 0x8081u) >> 23; + var50.x4[3] = (((orc_uint16) var49.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var51.x4[0] = (orc_uint8) var44.x4[0]; var51.x4[1] = (orc_uint8) var44.x4[1]; @@ -3694,18 +3518,10 @@ _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + var62.x4[0] = (((orc_uint16) var61.x4[0]) * 0x8081u) >> 23; + var62.x4[1] = (((orc_uint16) var61.x4[1]) * 0x8081u) >> 23; + var62.x4[2] = (((orc_uint16) var61.x4[2]) * 0x8081u) >> 23; + var62.x4[3] = (((orc_uint16) var61.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var63.x4[0] = (orc_uint8) var56.x4[0]; var63.x4[1] = (orc_uint8) var56.x4[1]; @@ -3771,123 +3587,119 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 11, - 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, 0, - 0, 14, 4, 0, 255, 255, 255, 16, 2, 20, 4, 20, 2, 20, 1, 20, - 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33, - 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 35, 38, 21, 2, 89, 35, - 35, 24, 21, 2, 80, 35, 35, 21, 2, 150, 40, 32, 21, 2, 89, 40, - 40, 35, 115, 38, 16, 21, 2, 150, 36, 38, 21, 2, 98, 36, 36, 35, - 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 37, - 38, 21, 2, 89, 37, 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 39, - 32, 21, 2, 89, 39, 39, 37, 21, 2, 70, 39, 39, 40, 21, 2, 70, - 37, 37, 35, 21, 2, 81, 39, 39, 37, 21, 2, 157, 32, 39, 106, 32, - 32, 18, 21, 2, 157, 38, 37, 106, 38, 38, 17, 123, 32, 32, 38, 128, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 11, + 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, 0, + 0, 14, 4, 0, 255, 255, 255, 16, 2, 20, 4, 20, 2, 20, 1, 20, + 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33, + 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 35, 38, 21, 2, 89, 35, + 35, 24, 21, 2, 80, 35, 35, 21, 2, 150, 40, 32, 21, 2, 89, 40, + 40, 35, 115, 38, 16, 21, 2, 150, 36, 38, 21, 2, 98, 36, 36, 35, + 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 37, + 38, 21, 2, 89, 37, 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 39, + 32, 21, 2, 89, 39, 39, 37, 21, 2, 70, 39, 39, 40, 21, 2, 70, + 37, 37, 35, 21, 2, 81, 39, 39, 37, 21, 2, 157, 32, 39, 106, 32, + 32, 18, 21, 2, 157, 38, 37, 106, 38, 38, 17, 123, 32, 32, 38, 128, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_overlay_argb"); - orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0x000000ff, "c2"); - orc_program_add_constant (p, 4, 0xffffff00, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 8, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 4, "t7"); - orc_program_add_temporary (p, 8, "t8"); - orc_program_add_temporary (p, 8, "t9"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_overlay_argb"); + orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0x000000ff, "c2"); + orc_program_add_constant (p, 4, 0xffffff00, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 8, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 4, "t7"); + orc_program_add_temporary (p, 8, "t8"); + orc_program_add_temporary (p, 8, "t9"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4002,18 +3814,10 @@ compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1, int d1_stride, var50.x4[2] = (var49.x4[2] * var42.x4[2]) & 0xffff; var50.x4[3] = (var49.x4[3] * var42.x4[3]) & 0xffff; /* 7: div255w */ - var51.x4[0] = - ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) + - (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8; - var51.x4[1] = - ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) + - (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8; - var51.x4[2] = - ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) + - (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8; - var51.x4[3] = - ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) + - (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8; + var51.x4[0] = (((orc_uint16) var50.x4[0]) * 0x8081u) >> 23; + var51.x4[1] = (((orc_uint16) var50.x4[1]) * 0x8081u) >> 23; + var51.x4[2] = (((orc_uint16) var50.x4[2]) * 0x8081u) >> 23; + var51.x4[3] = (((orc_uint16) var50.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var52.x4[0] = (orc_uint8) var45.x4[0]; var52.x4[1] = (orc_uint8) var45.x4[1]; @@ -4056,18 +3860,10 @@ compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1, int d1_stride, var62.x4[2] = (var61.x4[2] * var56.x4[2]) & 0xffff; var62.x4[3] = (var61.x4[3] * var56.x4[3]) & 0xffff; /* 19: div255w */ - var63.x4[0] = - ((orc_uint16) (((orc_uint16) (var62.x4[0] + 128)) + - (((orc_uint16) (var62.x4[0] + 128)) >> 8))) >> 8; - var63.x4[1] = - ((orc_uint16) (((orc_uint16) (var62.x4[1] + 128)) + - (((orc_uint16) (var62.x4[1] + 128)) >> 8))) >> 8; - var63.x4[2] = - ((orc_uint16) (((orc_uint16) (var62.x4[2] + 128)) + - (((orc_uint16) (var62.x4[2] + 128)) >> 8))) >> 8; - var63.x4[3] = - ((orc_uint16) (((orc_uint16) (var62.x4[3] + 128)) + - (((orc_uint16) (var62.x4[3] + 128)) >> 8))) >> 8; + var63.x4[0] = (((orc_uint16) var62.x4[0]) * 0x8081u) >> 23; + var63.x4[1] = (((orc_uint16) var62.x4[1]) * 0x8081u) >> 23; + var63.x4[2] = (((orc_uint16) var62.x4[2]) * 0x8081u) >> 23; + var63.x4[3] = (((orc_uint16) var62.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var64.x4[0] = (orc_uint8) var57.x4[0]; var64.x4[1] = (orc_uint8) var57.x4[1]; @@ -4245,18 +4041,10 @@ _backup_compositor_orc_overlay_argb_addition (OrcExecutor * ORC_RESTRICT ex) var50.x4[2] = (var49.x4[2] * var42.x4[2]) & 0xffff; var50.x4[3] = (var49.x4[3] * var42.x4[3]) & 0xffff; /* 7: div255w */ - var51.x4[0] = - ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) + - (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8; - var51.x4[1] = - ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) + - (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8; - var51.x4[2] = - ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) + - (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8; - var51.x4[3] = - ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) + - (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8; + var51.x4[0] = (((orc_uint16) var50.x4[0]) * 0x8081u) >> 23; + var51.x4[1] = (((orc_uint16) var50.x4[1]) * 0x8081u) >> 23; + var51.x4[2] = (((orc_uint16) var50.x4[2]) * 0x8081u) >> 23; + var51.x4[3] = (((orc_uint16) var50.x4[3]) * 0x8081u) >> 23; /* 8: convubw */ var52.x4[0] = (orc_uint8) var45.x4[0]; var52.x4[1] = (orc_uint8) var45.x4[1]; @@ -4299,18 +4087,10 @@ _backup_compositor_orc_overlay_argb_addition (OrcExecutor * ORC_RESTRICT ex) var62.x4[2] = (var61.x4[2] * var56.x4[2]) & 0xffff; var62.x4[3] = (var61.x4[3] * var56.x4[3]) & 0xffff; /* 19: div255w */ - var63.x4[0] = - ((orc_uint16) (((orc_uint16) (var62.x4[0] + 128)) + - (((orc_uint16) (var62.x4[0] + 128)) >> 8))) >> 8; - var63.x4[1] = - ((orc_uint16) (((orc_uint16) (var62.x4[1] + 128)) + - (((orc_uint16) (var62.x4[1] + 128)) >> 8))) >> 8; - var63.x4[2] = - ((orc_uint16) (((orc_uint16) (var62.x4[2] + 128)) + - (((orc_uint16) (var62.x4[2] + 128)) >> 8))) >> 8; - var63.x4[3] = - ((orc_uint16) (((orc_uint16) (var62.x4[3] + 128)) + - (((orc_uint16) (var62.x4[3] + 128)) >> 8))) >> 8; + var63.x4[0] = (((orc_uint16) var62.x4[0]) * 0x8081u) >> 23; + var63.x4[1] = (((orc_uint16) var62.x4[1]) * 0x8081u) >> 23; + var63.x4[2] = (((orc_uint16) var62.x4[2]) * 0x8081u) >> 23; + var63.x4[3] = (((orc_uint16) var62.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var64.x4[0] = (orc_uint8) var57.x4[0]; var64.x4[1] = (orc_uint8) var57.x4[1]; @@ -4397,140 +4177,136 @@ compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 95, - 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4, - 255, 255, 255, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, - 16, 2, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 8, - 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, - 39, 34, 21, 2, 150, 35, 39, 21, 2, 89, 35, 35, 24, 21, 2, 80, - 35, 35, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 35, 115, 39, 16, - 21, 2, 150, 36, 39, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, - 32, 157, 34, 33, 152, 39, 34, 21, 2, 150, 37, 39, 21, 2, 89, 37, - 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 40, 32, 21, 2, 89, 40, - 40, 37, 21, 2, 70, 40, 40, 41, 21, 2, 70, 37, 37, 35, 21, 2, - 81, 40, 40, 37, 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 39, 34, - 21, 2, 150, 38, 39, 21, 2, 70, 38, 38, 35, 21, 2, 157, 32, 40, - 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32, - 39, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_compositor_orc_overlay_argb_addition); + static const orc_uint8 bc[] = { + 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 95, + 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4, + 255, 255, 255, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255, + 16, 2, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 8, + 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, + 39, 34, 21, 2, 150, 35, 39, 21, 2, 89, 35, 35, 24, 21, 2, 80, + 35, 35, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 35, 115, 39, 16, + 21, 2, 150, 36, 39, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, + 32, 157, 34, 33, 152, 39, 34, 21, 2, 150, 37, 39, 21, 2, 89, 37, + 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 40, 32, 21, 2, 89, 40, + 40, 37, 21, 2, 70, 40, 40, 41, 21, 2, 70, 37, 37, 35, 21, 2, + 81, 40, 40, 37, 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 39, 34, + 21, 2, 150, 38, 39, 21, 2, 70, 38, 38, 35, 21, 2, 157, 32, 40, + 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32, + 39, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_compositor_orc_overlay_argb_addition); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_overlay_argb_addition"); - orc_program_set_backup_function (p, - _backup_compositor_orc_overlay_argb_addition); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0x000000ff, "c2"); - orc_program_add_constant (p, 4, 0xffffff00, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 8, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 4, "t8"); - orc_program_add_temporary (p, 8, "t9"); - orc_program_add_temporary (p, 8, "t10"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_overlay_argb_addition"); + orc_program_set_backup_function (p, + _backup_compositor_orc_overlay_argb_addition); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0x000000ff, "c2"); + orc_program_add_constant (p, 4, 0xffffff00, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 8, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 4, "t8"); + orc_program_add_temporary (p, 8, "t9"); + orc_program_add_temporary (p, 8, "t10"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -4643,18 +4419,10 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; /* 8: div255w */ - var52.x4[0] = - ((orc_uint16) (((orc_uint16) (var51.x4[0] + 128)) + - (((orc_uint16) (var51.x4[0] + 128)) >> 8))) >> 8; - var52.x4[1] = - ((orc_uint16) (((orc_uint16) (var51.x4[1] + 128)) + - (((orc_uint16) (var51.x4[1] + 128)) >> 8))) >> 8; - var52.x4[2] = - ((orc_uint16) (((orc_uint16) (var51.x4[2] + 128)) + - (((orc_uint16) (var51.x4[2] + 128)) >> 8))) >> 8; - var52.x4[3] = - ((orc_uint16) (((orc_uint16) (var51.x4[3] + 128)) + - (((orc_uint16) (var51.x4[3] + 128)) >> 8))) >> 8; + var52.x4[0] = (((orc_uint16) var51.x4[0]) * 0x8081u) >> 23; + var52.x4[1] = (((orc_uint16) var51.x4[1]) * 0x8081u) >> 23; + var52.x4[2] = (((orc_uint16) var51.x4[2]) * 0x8081u) >> 23; + var52.x4[3] = (((orc_uint16) var51.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var53.x4[0] = (orc_uint8) var45.x4[0]; var53.x4[1] = (orc_uint8) var45.x4[1]; @@ -4699,18 +4467,10 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + var65.x4[0] = (((orc_uint16) var64.x4[0]) * 0x8081u) >> 23; + var65.x4[1] = (((orc_uint16) var64.x4[1]) * 0x8081u) >> 23; + var65.x4[2] = (((orc_uint16) var64.x4[2]) * 0x8081u) >> 23; + var65.x4[3] = (((orc_uint16) var64.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var66.x4[0] = (orc_uint8) var58.x4[0]; var66.x4[1] = (orc_uint8) var58.x4[1]; @@ -4865,18 +4625,10 @@ _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; /* 8: div255w */ - var52.x4[0] = - ((orc_uint16) (((orc_uint16) (var51.x4[0] + 128)) + - (((orc_uint16) (var51.x4[0] + 128)) >> 8))) >> 8; - var52.x4[1] = - ((orc_uint16) (((orc_uint16) (var51.x4[1] + 128)) + - (((orc_uint16) (var51.x4[1] + 128)) >> 8))) >> 8; - var52.x4[2] = - ((orc_uint16) (((orc_uint16) (var51.x4[2] + 128)) + - (((orc_uint16) (var51.x4[2] + 128)) >> 8))) >> 8; - var52.x4[3] = - ((orc_uint16) (((orc_uint16) (var51.x4[3] + 128)) + - (((orc_uint16) (var51.x4[3] + 128)) >> 8))) >> 8; + var52.x4[0] = (((orc_uint16) var51.x4[0]) * 0x8081u) >> 23; + var52.x4[1] = (((orc_uint16) var51.x4[1]) * 0x8081u) >> 23; + var52.x4[2] = (((orc_uint16) var51.x4[2]) * 0x8081u) >> 23; + var52.x4[3] = (((orc_uint16) var51.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var53.x4[0] = (orc_uint8) var45.x4[0]; var53.x4[1] = (orc_uint8) var45.x4[1]; @@ -4921,18 +4673,10 @@ _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + var65.x4[0] = (((orc_uint16) var64.x4[0]) * 0x8081u) >> 23; + var65.x4[1] = (((orc_uint16) var64.x4[1]) * 0x8081u) >> 23; + var65.x4[2] = (((orc_uint16) var64.x4[2]) * 0x8081u) >> 23; + var65.x4[3] = (((orc_uint16) var64.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var66.x4[0] = (orc_uint8) var58.x4[0]; var66.x4[1] = (orc_uint8) var58.x4[1]; @@ -4998,130 +4742,126 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 11, - 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, 0, - 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 16, 2, 20, - 4, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, - 8, 20, 8, 113, 32, 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34, - 152, 39, 35, 21, 2, 150, 36, 39, 21, 2, 89, 36, 36, 24, 21, 2, - 80, 36, 36, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 36, 115, 39, - 16, 21, 2, 150, 37, 39, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126, - 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 38, - 39, 21, 2, 89, 38, 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 40, - 32, 21, 2, 89, 40, 40, 38, 21, 2, 70, 40, 40, 41, 21, 2, 70, - 38, 38, 36, 21, 2, 81, 40, 40, 38, 21, 2, 157, 32, 40, 106, 32, - 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32, 39, 128, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra); + static const orc_uint8 bc[] = { + 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 11, + 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, 0, + 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 16, 2, 20, + 4, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, + 8, 20, 8, 113, 32, 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34, + 152, 39, 35, 21, 2, 150, 36, 39, 21, 2, 89, 36, 36, 24, 21, 2, + 80, 36, 36, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 36, 115, 39, + 16, 21, 2, 150, 37, 39, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126, + 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 38, + 39, 21, 2, 89, 38, 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 40, + 32, 21, 2, 89, 40, 40, 38, 21, 2, 70, 40, 40, 41, 21, 2, 70, + 38, 38, 36, 21, 2, 81, 40, 40, 38, 21, 2, 157, 32, 40, 106, 32, + 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32, 39, 128, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_overlay_bgra"); - orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0xff000000, "c2"); - orc_program_add_constant (p, 4, 0x00ffffff, "c3"); - orc_program_add_constant (p, 4, 0x00000018, "c4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 4, "t8"); - orc_program_add_temporary (p, 8, "t9"); - orc_program_add_temporary (p, 8, "t10"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_overlay_bgra"); + orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0xff000000, "c2"); + orc_program_add_constant (p, 4, 0x00ffffff, "c3"); + orc_program_add_constant (p, 4, 0x00000018, "c4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 4, "t8"); + orc_program_add_temporary (p, 8, "t9"); + orc_program_add_temporary (p, 8, "t10"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -5241,18 +4981,10 @@ compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, int d1_stride, var52.x4[2] = (var51.x4[2] * var43.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var43.x4[3]) & 0xffff; /* 8: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var54.x4[0] = (orc_uint8) var46.x4[0]; var54.x4[1] = (orc_uint8) var46.x4[1]; @@ -5297,18 +5029,10 @@ compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, int d1_stride, var65.x4[2] = (var64.x4[2] * var58.x4[2]) & 0xffff; var65.x4[3] = (var64.x4[3] * var58.x4[3]) & 0xffff; /* 21: div255w */ - var66.x4[0] = - ((orc_uint16) (((orc_uint16) (var65.x4[0] + 128)) + - (((orc_uint16) (var65.x4[0] + 128)) >> 8))) >> 8; - var66.x4[1] = - ((orc_uint16) (((orc_uint16) (var65.x4[1] + 128)) + - (((orc_uint16) (var65.x4[1] + 128)) >> 8))) >> 8; - var66.x4[2] = - ((orc_uint16) (((orc_uint16) (var65.x4[2] + 128)) + - (((orc_uint16) (var65.x4[2] + 128)) >> 8))) >> 8; - var66.x4[3] = - ((orc_uint16) (((orc_uint16) (var65.x4[3] + 128)) + - (((orc_uint16) (var65.x4[3] + 128)) >> 8))) >> 8; + var66.x4[0] = (((orc_uint16) var65.x4[0]) * 0x8081u) >> 23; + var66.x4[1] = (((orc_uint16) var65.x4[1]) * 0x8081u) >> 23; + var66.x4[2] = (((orc_uint16) var65.x4[2]) * 0x8081u) >> 23; + var66.x4[3] = (((orc_uint16) var65.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var67.x4[0] = (orc_uint8) var59.x4[0]; var67.x4[1] = (orc_uint8) var59.x4[1]; @@ -5493,18 +5217,10 @@ _backup_compositor_orc_overlay_bgra_addition (OrcExecutor * ORC_RESTRICT ex) var52.x4[2] = (var51.x4[2] * var43.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var43.x4[3]) & 0xffff; /* 8: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 9: convubw */ var54.x4[0] = (orc_uint8) var46.x4[0]; var54.x4[1] = (orc_uint8) var46.x4[1]; @@ -5549,18 +5265,10 @@ _backup_compositor_orc_overlay_bgra_addition (OrcExecutor * ORC_RESTRICT ex) var65.x4[2] = (var64.x4[2] * var58.x4[2]) & 0xffff; var65.x4[3] = (var64.x4[3] * var58.x4[3]) & 0xffff; /* 21: div255w */ - var66.x4[0] = - ((orc_uint16) (((orc_uint16) (var65.x4[0] + 128)) + - (((orc_uint16) (var65.x4[0] + 128)) >> 8))) >> 8; - var66.x4[1] = - ((orc_uint16) (((orc_uint16) (var65.x4[1] + 128)) + - (((orc_uint16) (var65.x4[1] + 128)) >> 8))) >> 8; - var66.x4[2] = - ((orc_uint16) (((orc_uint16) (var65.x4[2] + 128)) + - (((orc_uint16) (var65.x4[2] + 128)) >> 8))) >> 8; - var66.x4[3] = - ((orc_uint16) (((orc_uint16) (var65.x4[3] + 128)) + - (((orc_uint16) (var65.x4[3] + 128)) >> 8))) >> 8; + var66.x4[0] = (((orc_uint16) var65.x4[0]) * 0x8081u) >> 23; + var66.x4[1] = (((orc_uint16) var65.x4[1]) * 0x8081u) >> 23; + var66.x4[2] = (((orc_uint16) var65.x4[2]) * 0x8081u) >> 23; + var66.x4[3] = (((orc_uint16) var65.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var67.x4[0] = (orc_uint8) var59.x4[0]; var67.x4[1] = (orc_uint8) var59.x4[1]; @@ -5649,149 +5357,145 @@ compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, - 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 95, - 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4, - 255, 255, 255, 255, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, - 14, 4, 24, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, - 20, 8, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, - 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 40, 35, 21, 2, - 150, 36, 40, 21, 2, 89, 36, 36, 24, 21, 2, 80, 36, 36, 21, 2, - 150, 42, 32, 21, 2, 89, 42, 42, 36, 115, 40, 16, 21, 2, 150, 37, - 40, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, - 33, 157, 35, 34, 152, 40, 35, 21, 2, 150, 38, 40, 21, 2, 89, 38, - 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 41, 32, 21, 2, 89, 41, - 41, 38, 21, 2, 70, 41, 41, 42, 21, 2, 70, 38, 38, 36, 21, 2, - 81, 41, 41, 38, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35, - 34, 152, 40, 35, 21, 2, 150, 39, 40, 21, 2, 70, 39, 39, 36, 21, - 2, 157, 32, 41, 106, 32, 32, 18, 21, 2, 157, 40, 39, 106, 40, 40, - 17, 123, 32, 32, 40, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_compositor_orc_overlay_bgra_addition); + static const orc_uint8 bc[] = { + 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, + 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 95, + 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4, + 255, 255, 255, 255, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0, + 14, 4, 24, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, + 20, 8, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, + 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 40, 35, 21, 2, + 150, 36, 40, 21, 2, 89, 36, 36, 24, 21, 2, 80, 36, 36, 21, 2, + 150, 42, 32, 21, 2, 89, 42, 42, 36, 115, 40, 16, 21, 2, 150, 37, + 40, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, + 33, 157, 35, 34, 152, 40, 35, 21, 2, 150, 38, 40, 21, 2, 89, 38, + 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 41, 32, 21, 2, 89, 41, + 41, 38, 21, 2, 70, 41, 41, 42, 21, 2, 70, 38, 38, 36, 21, 2, + 81, 41, 41, 38, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35, + 34, 152, 40, 35, 21, 2, 150, 39, 40, 21, 2, 70, 39, 39, 36, 21, + 2, 157, 32, 41, 106, 32, 32, 18, 21, 2, 157, 40, 39, 106, 40, 40, + 17, 123, 32, 32, 40, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_compositor_orc_overlay_bgra_addition); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "compositor_orc_overlay_bgra_addition"); - orc_program_set_backup_function (p, - _backup_compositor_orc_overlay_bgra_addition); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0xff000000, "c2"); - orc_program_add_constant (p, 4, 0x00ffffff, "c3"); - orc_program_add_constant (p, 4, 0x00000018, "c4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); - orc_program_add_temporary (p, 4, "t9"); - orc_program_add_temporary (p, 8, "t10"); - orc_program_add_temporary (p, 8, "t11"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "compositor_orc_overlay_bgra_addition"); + orc_program_set_backup_function (p, + _backup_compositor_orc_overlay_bgra_addition); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0xff000000, "c2"); + orc_program_add_constant (p, 4, 0x00ffffff, "c3"); + orc_program_add_constant (p, 4, 0x00000018, "c4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); + orc_program_add_temporary (p, 4, "t9"); + orc_program_add_temporary (p, 8, "t10"); + orc_program_add_temporary (p, 8, "t11"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T11, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T11, ORC_VAR_T11, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T9, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T11, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T10, ORC_VAR_T10, - ORC_VAR_T7, ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T10, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T9, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T11, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T11, ORC_VAR_T11, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T9, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T11, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T10, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T9, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.h b/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.h index 9a991e1344..5b5cabde72 100644 --- a/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.h +++ b/subprojects/gst-plugins-base/gst/compositor/compositororc-dist.h @@ -55,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif diff --git a/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.c b/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.c index 4805ef4b4c..31d703addd 100644 --- a/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.c +++ b/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -99,6 +102,7 @@ void video_test_src_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n); /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -134,6 +138,8 @@ void video_test_src_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n); #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -188,40 +194,36 @@ void video_test_src_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 118, 105, 100, 101, 111, 95, 116, 101, 115, 116, 95, 115, 114, - 99, 95, 111, 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, - 4, 4, 16, 4, 128, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_test_src_orc_splat_u32); + static const orc_uint8 bc[] = { + 1, 9, 28, 118, 105, 100, 101, 111, 95, 116, 101, 115, 116, 95, 115, 114, + 99, 95, 111, 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, + 4, 4, 16, 4, 128, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_test_src_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_test_src_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_video_test_src_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_test_src_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_video_test_src_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.h b/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.h index 4f189c53e3..9a16ce33ad 100644 --- a/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.h +++ b/subprojects/gst-plugins-base/gst/videotestsrc/gstvideotestsrcorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstvideotestsrcorc.orc */ -#ifndef _GSTVIDEOTESTSRCORC_H_ -#define _GSTVIDEOTESTSRCORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -86,5 +87,3 @@ void video_test_src_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n); } #endif -#endif - diff --git a/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.c b/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.c index ead5ce20ee..178005bfe2 100644 --- a/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.c +++ b/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -126,6 +129,7 @@ void volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -161,6 +165,8 @@ void volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -220,7 +226,7 @@ _backup_volume_orc_scalarmultiply_f64_ns (OrcExecutor * ORC_RESTRICT ex) /* 1: loadpq */ var33.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 0: loadq */ @@ -245,43 +251,38 @@ void volume_orc_scalarmultiply_f64_ns (double *ORC_RESTRICT d1, double p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99, - 97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 54, - 52, - 95, 110, 115, 11, 8, 8, 18, 8, 214, 0, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_scalarmultiply_f64_ns); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99, + 97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 54, 52, + 95, 110, 115, 11, 8, 8, 18, 8, 214, 0, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_scalarmultiply_f64_ns); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_scalarmultiply_f64_ns"); - orc_program_set_backup_function (p, - _backup_volume_orc_scalarmultiply_f64_ns); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter_double (p, 8, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_scalarmultiply_f64_ns"); + orc_program_set_backup_function (p, + _backup_volume_orc_scalarmultiply_f64_ns); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter_double (p, 8, "p1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -375,43 +376,38 @@ void volume_orc_scalarmultiply_f32_ns (float *ORC_RESTRICT d1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99, - 97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 51, - 50, - 95, 110, 115, 11, 4, 4, 17, 4, 202, 0, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_scalarmultiply_f32_ns); + static const orc_uint8 bc[] = { + 1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99, + 97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 51, 50, + 95, 110, 115, 11, 4, 4, 17, 4, 202, 0, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_scalarmultiply_f32_ns); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_scalarmultiply_f32_ns"); - orc_program_set_backup_function (p, - _backup_volume_orc_scalarmultiply_f32_ns); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter_float (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_scalarmultiply_f32_ns"); + orc_program_set_backup_function (p, + _backup_volume_orc_scalarmultiply_f32_ns); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter_float (p, 4, "p1"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -500,47 +496,43 @@ void volume_orc_process_int32 (gint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 11, 4, 4, 15, 8, - 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 178, 32, 0, 24, - 147, 32, 32, 16, 169, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_volume_orc_process_int32); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 11, 4, 4, 15, 8, + 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 178, 32, 0, 24, + 147, 32, 32, 16, 169, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int32); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int32"); - orc_program_set_backup_function (p, _backup_volume_orc_process_int32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int32"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convql", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convql", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -625,49 +617,43 @@ void volume_orc_process_int32_clamp (gint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 95, 99, 108, 97, 109, - 112, 11, 4, 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, - 20, 8, 178, 32, 0, 24, 147, 32, 32, 16, 170, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int32_clamp); + static const orc_uint8 bc[] = { + 1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 95, 99, 108, 97, 109, + 112, 11, 4, 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4, + 20, 8, 178, 32, 0, 24, 147, 32, 32, 16, 170, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int32_clamp); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int32_clamp"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int32_clamp); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int32_clamp"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int32_clamp); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsssql", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsssql", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -752,47 +738,43 @@ void volume_orc_process_int16 (gint16 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 11, 2, 2, 14, 4, - 11, 0, 0, 0, 16, 2, 20, 4, 176, 32, 0, 24, 125, 32, 32, 16, - 163, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_volume_orc_process_int16); + static const orc_uint8 bc[] = { + 1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 11, 2, 2, 14, 4, + 11, 0, 0, 0, 16, 2, 20, 4, 176, 32, 0, 24, 125, 32, 32, 16, + 163, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int16); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int16"); - orc_program_set_backup_function (p, _backup_volume_orc_process_int16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 4, 0x0000000b, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int16"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x0000000b, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -877,49 +859,43 @@ void volume_orc_process_int16_clamp (gint16 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 95, 99, 108, 97, 109, - 112, 11, 2, 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 176, 32, - 0, 24, 125, 32, 32, 16, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int16_clamp); + static const orc_uint8 bc[] = { + 1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 95, 99, 108, 97, 109, + 112, 11, 2, 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 176, 32, + 0, 24, 125, 32, 32, 16, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int16_clamp); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int16_clamp"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int16_clamp); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 4, 0x0000000b, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int16_clamp"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int16_clamp); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x0000000b, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1004,47 +980,43 @@ void volume_orc_process_int8 (gint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 11, 1, 1, 14, 2, 3, - 0, 0, 0, 16, 1, 20, 2, 174, 32, 0, 24, 94, 32, 32, 16, 157, - 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_volume_orc_process_int8); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 11, 1, 1, 14, 2, 3, + 0, 0, 0, 16, 1, 20, 2, 174, 32, 0, 24, 94, 32, 32, 16, 157, + 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int8); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int8"); - orc_program_set_backup_function (p, _backup_volume_orc_process_int8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int8"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1129,50 +1101,43 @@ void volume_orc_process_int8_clamp (gint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 95, 99, 108, 97, 109, - 112, - 11, 1, 1, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 174, 32, 0, - 24, 94, 32, 32, 16, 159, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int8_clamp); + static const orc_uint8 bc[] = { + 1, 9, 29, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 95, 99, 108, 97, 109, 112, + 11, 1, 1, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 174, 32, 0, + 24, 94, 32, 32, 16, 159, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_process_int8_clamp); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_int8_clamp"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_int8_clamp); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 2, 0x00000003, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_int8_clamp"); + orc_program_set_backup_function (p, _backup_volume_orc_process_int8_clamp); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 2, 0x00000003, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1226,7 +1191,7 @@ _backup_volume_orc_memset_f64 (OrcExecutor * ORC_RESTRICT ex) /* 0: loadpq */ var32.i = (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 + - (ORC_VAR_T1 - ORC_VAR_P1)]) << 32); + (ORC_N_PARAMS)]) << 32); for (i = 0; i < n; i++) { /* 1: copyq */ @@ -1241,40 +1206,36 @@ void volume_orc_memset_f64 (gdouble * ORC_RESTRICT d1, double p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 109, 101, - 109, 115, 101, 116, 95, 102, 54, 52, 11, 8, 8, 18, 8, 137, 0, 24, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_volume_orc_memset_f64); + static const orc_uint8 bc[] = { + 1, 9, 21, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 109, 101, + 109, 115, 101, 116, 95, 102, 54, 52, 11, 8, 8, 18, 8, 137, 0, 24, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_memset_f64); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_memset_f64"); - orc_program_set_backup_function (p, _backup_volume_orc_memset_f64); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_parameter_double (p, 8, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_memset_f64"); + orc_program_set_backup_function (p, _backup_volume_orc_memset_f64); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_parameter_double (p, 8, "p1"); - orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1324,7 +1285,7 @@ volume_orc_prepare_volumes (gdouble * ORC_RESTRICT d1, /* 0: loadl */ var33 = ptr4[i]; /* 1: convld */ - var37.f = var33.i; + var37.f = (double) var33.i; /* 3: subd */ { orc_union64 _src1; @@ -1382,7 +1343,7 @@ _backup_volume_orc_prepare_volumes (OrcExecutor * ORC_RESTRICT ex) /* 0: loadl */ var33 = ptr4[i]; /* 1: convld */ - var37.f = var33.i; + var37.f = (double) var33.i; /* 3: subd */ { orc_union64 _src1; @@ -1416,47 +1377,43 @@ volume_orc_prepare_volumes (gdouble * ORC_RESTRICT d1, const gboolean * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 101, 112, 97, 114, 101, 95, 118, 111, 108, 117, 109, 101, 115, 11, 8, 8, - 12, 4, 4, 15, 8, 0, 0, 0, 0, 0, 0, 240, 63, 20, 8, 223, - 32, 4, 213, 32, 16, 32, 214, 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes); + static const orc_uint8 bc[] = { + 1, 9, 26, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 101, 112, 97, 114, 101, 95, 118, 111, 108, 117, 109, 101, 115, 11, 8, 8, + 12, 4, 4, 15, 8, 0, 0, 0, 0, 0, 0, 240, 63, 20, 8, 223, + 32, 4, 213, 32, 16, 32, 214, 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_prepare_volumes"); - orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant_int64 (p, 8, 0x3ff0000000000000ULL, "c1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_prepare_volumes"); + orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant_int64 (p, 8, 0x3ff0000000000000ULL, "c1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subd", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subd", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1551,44 +1508,40 @@ volume_orc_process_controlled_f64_1ch (gdouble * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 102, 54, 52, 95, 49, 99, 104, 11, 8, 8, 12, 8, 8, 214, 0, - 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f64_1ch); + static const orc_uint8 bc[] = { + 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 102, 54, 52, 95, 49, 99, 104, 11, 8, 8, 12, 8, 8, 214, 0, + 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f64_1ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_f64_1ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f64_1ch); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_f64_1ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f64_1ch); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1701,47 +1654,43 @@ volume_orc_process_controlled_f32_1ch (gfloat * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 102, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8, 20, 4, - 225, 32, 4, 202, 0, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f32_1ch); + static const orc_uint8 bc[] = { + 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 102, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8, 20, 4, + 225, 32, 4, 202, 0, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f32_1ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_f32_1ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f32_1ch); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_f32_1ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f32_1ch); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1888,51 +1837,47 @@ volume_orc_process_controlled_f32_2ch (gfloat * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 102, 51, 50, 95, 50, 99, 104, 11, 8, 8, 12, 8, 8, 20, 4, - 20, 8, 225, 32, 4, 194, 33, 32, 32, 21, 1, 202, 0, 0, 33, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f32_2ch); + static const orc_uint8 bc[] = { + 1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 102, 51, 50, 95, 50, 99, 104, 11, 8, 8, 12, 8, 8, 20, 4, + 20, 8, 225, 32, 4, 194, 33, 32, 32, 21, 1, 202, 0, 0, 33, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f32_2ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_f32_2ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_f32_2ch); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 8, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_f32_2ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_f32_2ch); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 8, "t2"); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1970,7 +1915,7 @@ volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1, /* 0: loadl */ var33 = ptr0[i]; /* 1: convld */ - var36.f = var33.i; + var36.f = (double) var33.i; /* 2: loadq */ var34 = ptr4[i]; /* 3: muld */ @@ -1986,7 +1931,7 @@ volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1, /* 4: convdl */ { int tmp; - tmp = var37.f; + tmp = (int) var37.f; if (tmp == 0x80000000 && !(var37.i & ORC_UINT64_C (0x8000000000000000))) tmp = 0x7fffffff; var35.i = tmp; @@ -2019,7 +1964,7 @@ _backup_volume_orc_process_controlled_int32_1ch (OrcExecutor * ORC_RESTRICT ex) /* 0: loadl */ var33 = ptr0[i]; /* 1: convld */ - var36.f = var33.i; + var36.f = (double) var33.i; /* 2: loadq */ var34 = ptr4[i]; /* 3: muld */ @@ -2035,7 +1980,7 @@ _backup_volume_orc_process_controlled_int32_1ch (OrcExecutor * ORC_RESTRICT ex) /* 4: convdl */ { int tmp; - tmp = var37.f; + tmp = (int) var37.f; if (tmp == 0x80000000 && !(var37.i & ORC_UINT64_C (0x8000000000000000))) tmp = 0x7fffffff; var35.i = tmp; @@ -2051,49 +1996,45 @@ volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 105, 110, 116, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8, - 20, 8, 223, 32, 0, 214, 32, 32, 4, 222, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int32_1ch); + static const orc_uint8 bc[] = { + 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 105, 110, 116, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8, + 20, 8, 223, 32, 0, 214, 32, 32, 4, 222, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int32_1ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_int32_1ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int32_1ch); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 8, "t1"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_int32_1ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int32_1ch); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 8, "t1"); - orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2136,7 +2077,7 @@ volume_orc_process_controlled_int16_1ch (gint16 * ORC_RESTRICT d1, /* 1: convswl */ var37.i = var34.i; /* 2: convlf */ - var38.f = var37.i; + var38.f = (float) var37.i; /* 3: loadq */ var35 = ptr4[i]; /* 4: convdf */ @@ -2200,7 +2141,7 @@ _backup_volume_orc_process_controlled_int16_1ch (OrcExecutor * ORC_RESTRICT ex) /* 1: convswl */ var37.i = var34.i; /* 2: convlf */ - var38.f = var37.i; + var38.f = (float) var37.i; /* 3: loadq */ var35 = ptr4[i]; /* 4: convdf */ @@ -2242,57 +2183,53 @@ volume_orc_process_controlled_int16_1ch (gint16 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 105, 110, 116, 49, 54, 95, 49, 99, 104, 11, 2, 2, 12, 8, 8, - 20, 4, 20, 4, 153, 32, 0, 211, 32, 32, 225, 33, 4, 202, 32, 32, - 33, 210, 32, 32, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int16_1ch); + static const orc_uint8 bc[] = { + 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 105, 110, 116, 49, 54, 95, 49, 99, 104, 11, 2, 2, 12, 8, 8, + 20, 4, 20, 4, 153, 32, 0, 211, 32, 32, 225, 33, 4, 202, 32, 32, + 33, 210, 32, 32, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int16_1ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_int16_1ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int16_1ch); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_int16_1ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int16_1ch); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2337,8 +2274,8 @@ volume_orc_process_controlled_int16_2ch (gint16 * ORC_RESTRICT d1, var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: loadq */ var36 = ptr4[i]; /* 4: convdf */ @@ -2428,8 +2365,8 @@ _backup_volume_orc_process_controlled_int16_2ch (OrcExecutor * ORC_RESTRICT ex) var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: loadq */ var36 = ptr4[i]; /* 4: convdf */ @@ -2495,61 +2432,57 @@ volume_orc_process_controlled_int16_2ch (gint16 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 105, 110, 116, 49, 54, 95, 50, 99, 104, 11, 4, 4, 12, 8, 8, - 20, 8, 20, 4, 20, 8, 21, 1, 153, 32, 0, 21, 1, 211, 32, 32, - 225, 33, 4, 194, 34, 33, 33, 21, 1, 202, 34, 34, 32, 21, 1, 210, - 34, 34, 21, 1, 165, 0, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int16_2ch); + static const orc_uint8 bc[] = { + 1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 105, 110, 116, 49, 54, 95, 50, 99, 104, 11, 4, 4, 12, 8, 8, + 20, 8, 20, 4, 20, 8, 21, 1, 153, 32, 0, 21, 1, 211, 32, 32, + 225, 33, 4, 194, 34, 33, 33, 21, 1, 202, 34, 34, 32, 21, 1, 210, + 34, 34, 21, 1, 165, 0, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int16_2ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_int16_2ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int16_2ch); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 8, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_int16_2ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int16_2ch); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 8, "t3"); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T3, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2596,7 +2529,7 @@ volume_orc_process_controlled_int8_1ch (gint8 * ORC_RESTRICT d1, /* 2: convswl */ var39.i = var38.i; /* 3: convlf */ - var40.f = var39.i; + var40.f = (float) var39.i; /* 4: loadq */ var36 = ptr4[i]; /* 5: convdf */ @@ -2666,7 +2599,7 @@ _backup_volume_orc_process_controlled_int8_1ch (OrcExecutor * ORC_RESTRICT ex) /* 2: convswl */ var39.i = var38.i; /* 3: convlf */ - var40.f = var39.i; + var40.f = (float) var39.i; /* 4: loadq */ var36 = ptr4[i]; /* 5: convdf */ @@ -2710,63 +2643,59 @@ volume_orc_process_controlled_int8_1ch (gint8 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 105, 110, 116, 56, 95, 49, 99, 104, 11, 1, 1, 12, 8, 8, 20, - 2, 20, 4, 20, 4, 149, 32, 0, 153, 33, 32, 211, 33, 33, 225, 34, - 4, 202, 33, 33, 34, 210, 33, 33, 163, 32, 33, 159, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 105, 110, 116, 56, 95, 49, 99, 104, 11, 1, 1, 12, 8, 8, 20, + 2, 20, 4, 20, 4, 149, 32, 0, 153, 33, 32, 211, 33, 33, 225, 34, + 4, 202, 33, 33, 34, 210, 33, 33, 163, 32, 33, 159, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int8_1ch); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int8_1ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_int8_1ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int8_1ch); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_int8_1ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int8_1ch); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2816,8 +2745,8 @@ volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1, var39.x2[0] = var38.x2[0]; var39.x2[1] = var38.x2[1]; /* 3: convlf */ - var40.x2f[0] = var39.x2[0]; - var40.x2f[1] = var39.x2[1]; + var40.x2f[0] = (float) var39.x2[0]; + var40.x2f[1] = (float) var39.x2[1]; /* 4: loadq */ var36 = ptr4[i]; /* 5: convdf */ @@ -2915,8 +2844,8 @@ _backup_volume_orc_process_controlled_int8_2ch (OrcExecutor * ORC_RESTRICT ex) var39.x2[0] = var38.x2[0]; var39.x2[1] = var38.x2[1]; /* 3: convlf */ - var40.x2f[0] = var39.x2[0]; - var40.x2f[1] = var39.x2[1]; + var40.x2f[0] = (float) var39.x2[0]; + var40.x2f[1] = (float) var39.x2[1]; /* 4: loadq */ var36 = ptr4[i]; /* 5: convdf */ @@ -2985,66 +2914,62 @@ volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1, const gdouble * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, - 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, - 100, - 95, 105, 110, 116, 56, 95, 50, 99, 104, 11, 2, 2, 12, 8, 8, 20, - 4, 20, 8, 20, 8, 21, 1, 149, 32, 0, 21, 1, 153, 33, 32, 21, - 1, 211, 33, 33, 225, 32, 4, 194, 34, 32, 32, 21, 1, 202, 33, 33, - 34, 21, 1, 210, 33, 33, 21, 1, 163, 32, 33, 21, 1, 159, 0, 32, - 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int8_2ch); + static const orc_uint8 bc[] = { + 1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114, + 111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101, + 100, + 95, 105, 110, 116, 56, 95, 50, 99, 104, 11, 2, 2, 12, 8, 8, 20, + 4, 20, 8, 20, 8, 21, 1, 149, 32, 0, 21, 1, 153, 33, 32, 21, + 1, 211, 33, 33, 225, 32, 4, 194, 34, 32, 32, 21, 1, 202, 33, 33, + 34, 21, 1, 210, 33, 33, 21, 1, 163, 32, 33, 21, 1, 159, 0, 32, + 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int8_2ch); #else - p = orc_program_new (); - orc_program_set_name (p, "volume_orc_process_controlled_int8_2ch"); - orc_program_set_backup_function (p, - _backup_volume_orc_process_controlled_int8_2ch); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 8, "t2"); - orc_program_add_temporary (p, 8, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "volume_orc_process_controlled_int8_2ch"); + orc_program_set_backup_function (p, + _backup_volume_orc_process_controlled_int8_2ch); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 8, "t2"); + orc_program_add_temporary (p, 8, "t3"); - orc_program_append_2 (p, "convsbw", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convsbw", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.h b/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.h index 60ef6889cd..7a2e54e0f8 100644 --- a/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.h +++ b/subprojects/gst-plugins-base/gst/volume/gstvolumeorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstvolumeorc.orc */ -#ifndef _GSTVOLUMEORC_H_ -#define _GSTVOLUMEORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -103,5 +104,3 @@ void volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1, const gdou } #endif -#endif - diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build index 5a40f44c0a..5f3d1a413b 100644 --- a/subprojects/gst-plugins-base/meson.build +++ b/subprojects/gst-plugins-base/meson.build @@ -28,7 +28,7 @@ else endif glib_req = '>= 2.64.0' -orc_req = '>= 0.4.24' +orc_req = '>= 0.4.34' if gst_version_is_stable gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor) diff --git a/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.c b/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.c index 86d6861fb6..704781f71f 100644 --- a/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.c +++ b/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -134,6 +137,7 @@ void audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -169,6 +173,8 @@ void audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -251,44 +257,39 @@ audiopanoramam_orc_process_s16_ch1_none (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 4, 4, 12, 2, 2, - 195, 0, 4, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_none); + static const orc_uint8 bc[] = { + 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 4, 4, 12, 2, 2, + 195, 0, 4, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_none); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_none"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_none); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_none); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); - orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -377,44 +378,39 @@ audiopanoramam_orc_process_f32_ch1_none (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 8, 8, 12, 4, 4, - 194, 0, 4, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_none); + static const orc_uint8 bc[] = { + 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 49, 95, 110, 111, 110, 101, 11, 8, 8, 12, 4, 4, + 194, 0, 4, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_none); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_none"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_none); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_none); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, - ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -489,44 +485,39 @@ audiopanoramam_orc_process_s16_ch2_none (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 4, 4, 12, 4, 4, - 21, 1, 79, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_none); + static const orc_uint8 bc[] = { + 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 4, 4, 12, 4, 4, + 21, 1, 79, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_none); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_none"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_none); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_none); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -601,44 +592,39 @@ audiopanoramam_orc_process_f32_ch2_none (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 8, 8, 12, 8, 8, - 21, 1, 112, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_none); + static const orc_uint8 bc[] = { + 1, 9, 39, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 50, 95, 110, 111, 110, 101, 11, 8, 8, 12, 8, 8, + 21, 1, 112, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_none); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_none"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_none); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_none"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_none); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); - orc_program_append_2 (p, "copyl", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -687,7 +673,7 @@ audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, /* 1: convswl */ var39.i = var35.i; /* 2: convlf */ - var40.f = var39.i; + var40.f = (float) var39.i; /* 4: mulf */ { orc_union32 _src1; @@ -772,7 +758,7 @@ _backup_audiopanoramam_orc_process_s16_ch1_psy (OrcExecutor * ORC_RESTRICT ex) /* 1: convswl */ var39.i = var35.i; /* 2: convlf */ - var40.f = var39.i; + var40.f = (float) var39.i; /* 4: mulf */ { orc_union32 _src1; @@ -829,63 +815,58 @@ audiopanoramam_orc_process_s16_ch1_psy (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 49, 95, 112, 115, 121, 11, 4, 4, 12, 2, 2, 17, - 4, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, - 34, 33, 25, 202, 33, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, - 21, 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_psy); + static const orc_uint8 bc[] = { + 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 49, 95, 112, 115, 121, 11, 4, 4, 12, 2, 2, 17, + 4, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, 211, 33, 33, 202, + 34, 33, 25, 202, 33, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, + 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_psy); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_psy"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_psy); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_psy"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_psy); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1040,53 +1021,48 @@ audiopanoramam_orc_process_f32_ch1_psy (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 49, 95, 112, 115, 121, 11, 8, 8, 12, 4, 4, 17, - 4, 17, 4, 20, 4, 20, 4, 202, 33, 4, 25, 202, 32, 4, 24, 194, - 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_psy); + static const orc_uint8 bc[] = { + 1, 9, 38, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 49, 95, 112, 115, 121, 11, 8, 8, 12, 4, 4, 17, + 4, 17, 4, 20, 4, 20, 4, 202, 33, 4, 25, 202, 32, 4, 24, 194, + 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_psy); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_psy"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_psy); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_psy"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_psy); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1149,8 +1125,8 @@ audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, var40.x2[0] = var36.x2[0]; var40.x2[1] = var36.x2[1]; /* 2: convlf */ - var41.x2f[0] = var40.x2[0]; - var41.x2f[1] = var40.x2[1]; + var41.x2f[0] = (float) var40.x2[0]; + var41.x2f[1] = (float) var40.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -1262,8 +1238,8 @@ _backup_audiopanoramam_orc_process_s16_ch2_psy_right (OrcExecutor * var40.x2[0] = var36.x2[0]; var40.x2[1] = var36.x2[1]; /* 2: convlf */ - var41.x2f[0] = var40.x2[0]; - var41.x2f[1] = var40.x2[1]; + var41.x2f[0] = (float) var40.x2[0]; + var41.x2f[1] = (float) var40.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -1342,71 +1318,66 @@ audiopanoramam_orc_process_s16_ch2_psy_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, - 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, - 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, - 32, 202, 35, 33, 25, 202, 33, 33, 24, 200, 34, 35, 34, 194, 32, 33, - 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_psy_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, + 4, 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, + 4, 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, + 32, 202, 35, 33, 25, 202, 33, 33, 24, 200, 34, 35, 34, 194, 32, 33, + 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_psy_right); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1469,8 +1440,8 @@ audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, var40.x2[0] = var36.x2[0]; var40.x2[1] = var36.x2[1]; /* 2: convlf */ - var41.x2f[0] = var40.x2[0]; - var41.x2f[1] = var40.x2[1]; + var41.x2f[0] = (float) var40.x2[0]; + var41.x2f[1] = (float) var40.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -1582,8 +1553,8 @@ _backup_audiopanoramam_orc_process_s16_ch2_psy_left (OrcExecutor * var40.x2[0] = var36.x2[0]; var40.x2[1] = var36.x2[1]; /* 2: convlf */ - var41.x2f[0] = var40.x2[0]; - var41.x2f[1] = var40.x2[1]; + var41.x2f[0] = (float) var40.x2[0]; + var41.x2f[1] = (float) var40.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -1662,71 +1633,66 @@ audiopanoramam_orc_process_s16_ch2_psy_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 4, - 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, - 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 35, 32, - 202, 34, 35, 24, 202, 35, 35, 25, 200, 33, 34, 33, 194, 32, 33, 35, - 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_psy_left); + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 4, + 4, 12, 4, 4, 17, 4, 17, 4, 20, 8, 20, 4, 20, 4, 20, 4, + 21, 1, 153, 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 35, 32, + 202, 34, 35, 24, 202, 35, 35, 25, 200, 33, 34, 33, 194, 32, 33, 35, + 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_psy_left); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); - orc_program_add_temporary (p, 4, "t4"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_psy_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_psy_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); + orc_program_add_temporary (p, 4, "t4"); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T4, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1932,61 +1898,56 @@ audiopanoramam_orc_process_f32_ch2_psy_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, - 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, - 32, 4, 193, 33, 4, 202, 34, 32, 25, 202, 32, 32, 24, 200, 33, 34, - 33, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_psy_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 114, 105, 103, 104, 116, 11, + 8, 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, + 32, 4, 193, 33, 4, 202, 34, 32, 25, 202, 32, 32, 24, 200, 33, 34, + 33, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_psy_right); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2192,61 +2153,56 @@ audiopanoramam_orc_process_f32_ch2_psy_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, float p2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 8, - 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, - 4, 193, 34, 4, 202, 33, 34, 24, 202, 34, 34, 25, 200, 32, 33, 32, - 194, 0, 32, 34, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_psy_left); + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 50, 95, 112, 115, 121, 95, 108, 101, 102, 116, 11, 8, + 8, 12, 8, 8, 17, 4, 17, 4, 20, 4, 20, 4, 20, 4, 192, 32, + 4, 193, 34, 4, 202, 33, 34, 24, 202, 34, 34, 25, 200, 32, 33, 32, + 194, 0, 32, 34, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_psy_left); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_parameter_float (p, 4, "p2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_psy_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_psy_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_parameter_float (p, 4, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2301,7 +2257,7 @@ audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, /* 1: convswl */ var38.i = var35.i; /* 2: convlf */ - var39.f = var38.i; + var39.f = (float) var38.i; /* 4: mulf */ { orc_union32 _src1; @@ -2373,7 +2329,7 @@ _backup_audiopanoramam_orc_process_s16_ch1_sim_right (OrcExecutor * /* 1: convswl */ var38.i = var35.i; /* 2: convlf */ - var39.f = var38.i; + var39.f = (float) var38.i; /* 4: mulf */ { orc_union32 _src1; @@ -2420,60 +2376,55 @@ audiopanoramam_orc_process_s16_ch1_sim_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, - 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, - 211, 33, 33, 202, 34, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, - 21, 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_sim_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, + 4, 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 33, 4, + 211, 33, 33, 202, 34, 33, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, + 21, 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_sim_right); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2523,7 +2474,7 @@ audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, /* 1: convswl */ var38.i = var35.i; /* 2: convlf */ - var39.f = var38.i; + var39.f = (float) var38.i; /* 4: mulf */ { orc_union32 _src1; @@ -2595,7 +2546,7 @@ _backup_audiopanoramam_orc_process_s16_ch1_sim_left (OrcExecutor * /* 1: convswl */ var38.i = var35.i; /* 2: convlf */ - var39.f = var38.i; + var39.f = (float) var38.i; /* 4: mulf */ { orc_union32 _src1; @@ -2642,60 +2593,55 @@ audiopanoramam_orc_process_s16_ch1_sim_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, - 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 34, 4, 211, - 34, 34, 202, 33, 34, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, - 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_sim_left); + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, + 4, 12, 2, 2, 17, 4, 20, 8, 20, 4, 20, 4, 153, 34, 4, 211, + 34, 34, 202, 33, 34, 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, + 1, 165, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch1_sim_left); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch1_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch1_sim_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -2748,8 +2694,8 @@ audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -2836,8 +2782,8 @@ _backup_audiopanoramam_orc_process_s16_ch2_sim_right (OrcExecutor * var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -2896,65 +2842,60 @@ audiopanoramam_orc_process_s16_ch2_sim_right (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, - 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, - 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 34, 34, - 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, - 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_sim_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, + 4, 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, + 32, 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 34, 34, + 24, 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, + 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_sim_right); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_right); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3007,8 +2948,8 @@ audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -3095,8 +3036,8 @@ _backup_audiopanoramam_orc_process_s16_ch2_sim_left (OrcExecutor * var38.x2[0] = var35.x2[0]; var38.x2[1] = var35.x2[1]; /* 2: convlf */ - var39.x2f[0] = var38.x2[0]; - var39.x2f[1] = var38.x2[1]; + var39.x2f[0] = (float) var38.x2[0]; + var39.x2f[1] = (float) var38.x2[1]; /* 3: select0ql */ { orc_union64 _src; @@ -3155,65 +3096,60 @@ audiopanoramam_orc_process_s16_ch2_sim_left (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, - 49, - 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, - 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, - 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 33, 33, 24, - 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 115, 49, + 54, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 4, + 4, 12, 4, 4, 17, 4, 20, 8, 20, 4, 20, 4, 21, 1, 153, 32, + 4, 21, 1, 211, 32, 32, 192, 33, 32, 193, 34, 32, 202, 33, 33, 24, + 194, 32, 33, 34, 21, 1, 210, 32, 32, 21, 1, 165, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_sim_left); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_s16_ch2_sim_left); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 8, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_s16_ch2_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_s16_ch2_sim_left); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 8, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3342,52 +3278,47 @@ audiopanoramam_orc_process_f32_ch1_sim_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, - 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 112, 32, 4, 202, 33, - 4, 24, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_sim_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, + 8, 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 112, 32, 4, 202, 33, + 4, 24, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_sim_right); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3516,52 +3447,47 @@ audiopanoramam_orc_process_f32_ch1_sim_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, - 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 202, 32, 4, 24, 112, 33, - 4, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_sim_left); + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 49, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, + 8, 12, 4, 4, 17, 4, 20, 4, 20, 4, 202, 32, 4, 24, 112, 33, + 4, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch1_sim_left); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch1_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch1_sim_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3712,54 +3638,49 @@ audiopanoramam_orc_process_f32_ch2_sim_right (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, - 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, - 4, 202, 33, 33, 24, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_sim_right); + static const orc_uint8 bc[] = { + 1, 9, 44, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 114, 105, 103, 104, 116, 11, + 8, 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, + 4, 202, 33, 33, 24, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_right); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_right"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_sim_right); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_right"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_right); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -3910,54 +3831,49 @@ audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, const gfloat * ORC_RESTRICT s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, - 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, - 51, - 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, - 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, - 202, 32, 32, 24, 194, 0, 32, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_sim_left); + static const orc_uint8 bc[] = { + 1, 9, 43, 97, 117, 100, 105, 111, 112, 97, 110, 111, 114, 97, 109, 97, + 109, 95, 111, 114, 99, 95, 112, 114, 111, 99, 101, 115, 115, 95, 102, 51, + 50, 95, 99, 104, 50, 95, 115, 105, 109, 95, 108, 101, 102, 116, 11, 8, + 8, 12, 8, 8, 17, 4, 20, 4, 20, 4, 192, 32, 4, 193, 33, 4, + 202, 32, 32, 24, 194, 0, 32, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_left); #else - p = orc_program_new (); - orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_left"); - orc_program_set_backup_function (p, - _backup_audiopanoramam_orc_process_f32_ch2_sim_left); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); + p = orc_program_new (); + orc_program_set_name (p, "audiopanoramam_orc_process_f32_ch2_sim_left"); + orc_program_set_backup_function (p, + _backup_audiopanoramam_orc_process_f32_ch2_sim_left); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_parameter_float (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); - orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); + orc_program_append_2 (p, "select0ql", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.h b/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.h index 7611fba774..dd93f87382 100644 --- a/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.h +++ b/subprojects/gst-plugins-good/gst/audiofx/audiopanoramaorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from audiopanoramaorc.orc */ -#ifndef _AUDIOPANORAMAORC_H_ -#define _AUDIOPANORAMAORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -103,5 +104,3 @@ void audiopanoramam_orc_process_f32_ch2_sim_left (gfloat * ORC_RESTRICT d1, cons } #endif -#endif - diff --git a/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.c b/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.c index 0c2628a620..c8fb3b55ea 100644 --- a/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.c +++ b/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -117,6 +120,7 @@ void deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -152,6 +156,8 @@ void deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -352,82 +358,78 @@ deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 21, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 118, 102, 105, 114, 11, 1, 1, 12, 1, 1, 12, 1, - 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 2, 0, 0, 0, - 14, 2, 1, 0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 8, 70, 32, - 32, 33, 150, 33, 5, 150, 34, 7, 70, 33, 33, 34, 93, 33, 33, 16, - 150, 34, 6, 93, 34, 34, 17, 98, 33, 33, 32, 70, 33, 33, 34, 70, - 33, 33, 18, 94, 33, 33, 19, 160, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); + static const orc_uint8 bc[] = { + 1, 9, 21, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 118, 102, 105, 114, 11, 1, 1, 12, 1, 1, 12, 1, + 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 2, 0, 0, 0, + 14, 2, 1, 0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 8, 70, 32, + 32, 33, 150, 33, 5, 150, 34, 7, 70, 33, 33, 34, 93, 33, 33, 16, + 150, 34, 6, 93, 34, 34, 17, 98, 33, 33, 32, 70, 33, 33, 34, 70, + 33, 33, 18, 94, 33, 33, 19, 160, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_vfir"); - orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_source (p, 1, "s5"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_constant (p, 2, 0x00000001, "c2"); - orc_program_add_constant (p, 2, 0x00000004, "c3"); - orc_program_add_constant (p, 2, 0x00000003, "c4"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_vfir"); + orc_program_set_backup_function (p, _backup_deinterlace_line_vfir); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_source (p, 1, "s5"); + orc_program_add_constant (p, 2, 0x00000002, "c1"); + orc_program_add_constant (p, 2, 0x00000001, "c2"); + orc_program_add_constant (p, 2, 0x00000004, "c3"); + orc_program_add_constant (p, 2, 0x00000003, "c4"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -640,84 +642,79 @@ deinterlace_line_vfir_16bits (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s5, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 28, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 118, 102, 105, 114, 95, 49, 54, 98, 105, 116, 115, - 11, - 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, - 2, 14, 4, 2, 0, 0, 0, 14, 4, 1, 0, 0, 0, 14, 4, 4, - 0, 0, 0, 14, 4, 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 154, - 32, 4, 154, 33, 8, 103, 32, 32, 33, 154, 33, 5, 154, 34, 7, 103, - 33, 33, 34, 124, 33, 33, 16, 154, 34, 6, 124, 34, 34, 17, 129, 33, - 33, 32, 103, 33, 33, 34, 103, 33, 33, 18, 125, 33, 33, 19, 166, 0, - 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_deinterlace_line_vfir_16bits); + static const orc_uint8 bc[] = { + 1, 9, 28, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 118, 102, 105, 114, 95, 49, 54, 98, 105, 116, 115, 11, + 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, + 2, 14, 4, 2, 0, 0, 0, 14, 4, 1, 0, 0, 0, 14, 4, 4, + 0, 0, 0, 14, 4, 3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 154, + 32, 4, 154, 33, 8, 103, 32, 32, 33, 154, 33, 5, 154, 34, 7, 103, + 33, 33, 34, 124, 33, 33, 16, 154, 34, 6, 124, 34, 34, 17, 129, 33, + 33, 32, 103, 33, 33, 34, 103, 33, 33, 18, 125, 33, 33, 19, 166, 0, + 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_vfir_16bits); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_vfir_16bits"); - orc_program_set_backup_function (p, _backup_deinterlace_line_vfir_16bits); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_source (p, 2, "s3"); - orc_program_add_source (p, 2, "s4"); - orc_program_add_source (p, 2, "s5"); - orc_program_add_constant (p, 4, 0x00000002, "c1"); - orc_program_add_constant (p, 4, 0x00000001, "c2"); - orc_program_add_constant (p, 4, 0x00000004, "c3"); - orc_program_add_constant (p, 4, 0x00000003, "c4"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 4, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_vfir_16bits"); + orc_program_set_backup_function (p, _backup_deinterlace_line_vfir_16bits); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_source (p, 2, "s3"); + orc_program_add_source (p, 2, "s4"); + orc_program_add_source (p, 2, "s5"); + orc_program_add_constant (p, 4, 0x00000002, "c1"); + orc_program_add_constant (p, 4, 0x00000001, "c2"); + orc_program_add_constant (p, 4, 0x00000004, "c3"); + orc_program_add_constant (p, 4, 0x00000003, "c4"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t3"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -804,41 +801,37 @@ deinterlace_line_linear (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 11, 1, 1, 12, 1, 1, - 12, 1, 1, 39, 0, 4, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_deinterlace_line_linear); + static const orc_uint8 bc[] = { + 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 11, 1, 1, 12, 1, 1, + 12, 1, 1, 39, 0, 4, 5, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_linear"); - orc_program_set_backup_function (p, _backup_deinterlace_line_linear); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_linear"); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -922,45 +915,38 @@ deinterlace_line_linear_16bits (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 30, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 49, 54, 98, 105, - 116, - 115, 11, 2, 2, 12, 2, 2, 12, 2, 2, 76, 0, 4, 5, 2, 0, + static const orc_uint8 bc[] = { + 1, 9, 30, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 49, 54, 98, 105, 116, + 115, 11, 2, 2, 12, 2, 2, 12, 2, 2, 76, 0, 4, 5, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_deinterlace_line_linear_16bits); + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear_16bits); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_linear_16bits"); - orc_program_set_backup_function (p, - _backup_deinterlace_line_linear_16bits); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_linear_16bits"); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear_16bits); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); - orc_program_append_2 (p, "avguw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append_2 (p, "avguw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1118,68 +1104,62 @@ deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s3, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 29, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 98, 108, 101, 110, - 100, - 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 2, 0, - 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 5, 150, 34, - 6, 70, 32, 32, 33, 70, 34, 34, 34, 70, 32, 32, 34, 70, 32, 32, - 16, 94, 32, 32, 16, 160, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_deinterlace_line_linear_blend); + static const orc_uint8 bc[] = { + 1, 9, 29, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 108, 105, 110, 101, 97, 114, 95, 98, 108, 101, 110, + 100, + 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 2, 0, + 0, 0, 20, 2, 20, 2, 20, 2, 150, 32, 4, 150, 33, 5, 150, 34, + 6, 70, 32, 32, 33, 70, 34, 34, 34, 70, 32, 32, 34, 70, 32, 32, + 16, 94, 32, 32, 16, 160, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear_blend); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_linear_blend"); - orc_program_set_backup_function (p, - _backup_deinterlace_line_linear_blend); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 2, "t3"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_linear_blend"); + orc_program_set_backup_function (p, _backup_deinterlace_line_linear_blend); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_constant (p, 2, 0x00000002, "c1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1416,109 +1396,105 @@ deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, - 105, 110, 101, 95, 103, 114, 101, 101, 100, 121, 11, 1, 1, 12, 1, 1, - 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, 16, - 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, - 1, 20, 1, 20, 1, 20, 1, 20, 1, 43, 32, 4, 43, 33, 7, 43, - 34, 6, 43, 35, 5, 39, 36, 35, 34, 53, 39, 32, 36, 55, 40, 32, - 36, 65, 37, 39, 40, 53, 39, 33, 36, 55, 40, 33, 36, 65, 38, 39, - 40, 68, 37, 37, 16, 68, 38, 38, 16, 41, 40, 37, 38, 36, 39, 33, - 40, 37, 40, 40, 32, 59, 41, 39, 40, 53, 43, 35, 34, 55, 42, 35, - 34, 35, 43, 43, 24, 67, 42, 42, 24, 55, 41, 41, 43, 53, 0, 41, - 42, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); + static const orc_uint8 bc[] = { + 1, 9, 23, 100, 101, 105, 110, 116, 101, 114, 108, 97, 99, 101, 95, 108, + 105, 110, 101, 95, 103, 114, 101, 101, 100, 121, 11, 1, 1, 12, 1, 1, + 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0, 16, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, + 1, 20, 1, 20, 1, 20, 1, 20, 1, 43, 32, 4, 43, 33, 7, 43, + 34, 6, 43, 35, 5, 39, 36, 35, 34, 53, 39, 32, 36, 55, 40, 32, + 36, 65, 37, 39, 40, 53, 39, 33, 36, 55, 40, 33, 36, 65, 38, 39, + 40, 68, 37, 37, 16, 68, 38, 38, 16, 41, 40, 37, 38, 36, 39, 33, + 40, 37, 40, 40, 32, 59, 41, 39, 40, 53, 43, 35, 34, 55, 42, 35, + 34, 35, 43, 43, 24, 67, 42, 42, 24, 55, 41, 41, 43, 53, 0, 41, + 42, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); #else - p = orc_program_new (); - orc_program_set_name (p, "deinterlace_line_greedy"); - orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_source (p, 1, "s3"); - orc_program_add_source (p, 1, "s4"); - orc_program_add_constant (p, 1, 0x00000080, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 1, "t1"); - orc_program_add_temporary (p, 1, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 1, "t5"); - orc_program_add_temporary (p, 1, "t6"); - orc_program_add_temporary (p, 1, "t7"); - orc_program_add_temporary (p, 1, "t8"); - orc_program_add_temporary (p, 1, "t9"); - orc_program_add_temporary (p, 1, "t10"); - orc_program_add_temporary (p, 1, "t11"); - orc_program_add_temporary (p, 1, "t12"); + p = orc_program_new (); + orc_program_set_name (p, "deinterlace_line_greedy"); + orc_program_set_backup_function (p, _backup_deinterlace_line_greedy); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_source (p, 1, "s3"); + orc_program_add_source (p, 1, "s4"); + orc_program_add_constant (p, 1, 0x00000080, "c1"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 1, "t1"); + orc_program_add_temporary (p, 1, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 1, "t5"); + orc_program_add_temporary (p, 1, "t6"); + orc_program_add_temporary (p, 1, "t7"); + orc_program_add_temporary (p, 1, "t8"); + orc_program_add_temporary (p, 1, "t9"); + orc_program_add_temporary (p, 1, "t10"); + orc_program_add_temporary (p, 1, "t11"); + orc_program_add_temporary (p, 1, "t12"); - orc_program_append_2 (p, "loadb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadb", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadb", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T2, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "cmpgtsb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "andb", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "andnb", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "orb", 0, ORC_VAR_T10, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "maxub", 0, ORC_VAR_T12, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "minub", 0, ORC_VAR_T11, ORC_VAR_T4, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addusb", 0, ORC_VAR_T12, ORC_VAR_T12, - ORC_VAR_P1, ORC_VAR_D1); - orc_program_append_2 (p, "subusb", 0, ORC_VAR_T11, ORC_VAR_T11, - ORC_VAR_P1, ORC_VAR_D1); - orc_program_append_2 (p, "minub", 0, ORC_VAR_T10, ORC_VAR_T10, - ORC_VAR_T12, ORC_VAR_D1); - orc_program_append_2 (p, "maxub", 0, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_T11, - ORC_VAR_D1); + orc_program_append_2 (p, "loadb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadb", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadb", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T2, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "cmpgtsb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "andb", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "andnb", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "orb", 0, ORC_VAR_T10, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "maxub", 0, ORC_VAR_T12, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "minub", 0, ORC_VAR_T11, ORC_VAR_T4, ORC_VAR_T3, + ORC_VAR_D1); + orc_program_append_2 (p, "addusb", 0, ORC_VAR_T12, ORC_VAR_T12, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "subusb", 0, ORC_VAR_T11, ORC_VAR_T11, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "minub", 0, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T12, + ORC_VAR_D1); + orc_program_append_2 (p, "maxub", 0, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_T11, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.h b/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.h index 23e8066ee6..82dd3bee40 100644 --- a/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.h +++ b/subprojects/gst-plugins-good/gst/deinterlace/tvtime-dist.h @@ -55,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif diff --git a/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.c b/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.c index 098b4908e1..70786ff1bb 100644 --- a/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.c +++ b/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -99,6 +102,7 @@ void video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -134,6 +138,8 @@ void video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -194,40 +200,36 @@ void video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 23, 118, 105, 100, 101, 111, 95, 98, 111, 120, 95, 111, 114, 99, - 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, - 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); + static const orc_uint8 bc[] = { + 1, 9, 23, 118, 105, 100, 101, 111, 95, 98, 111, 120, 95, 111, 114, 99, + 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 112, + 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_box_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_box_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_video_box_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.h b/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.h index 23c2d0bac2..59101bb727 100644 --- a/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.h +++ b/subprojects/gst-plugins-good/gst/videobox/gstvideoboxorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from gstvideoboxorc.orc */ -#ifndef _GSTVIDEOBOXORC_H_ -#define _GSTVIDEOBOXORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -86,5 +87,3 @@ void video_box_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n); } #endif -#endif - diff --git a/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.c b/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.c index dcc282b515..0caeb8c731 100644 --- a/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.c +++ b/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.c @@ -67,6 +67,7 @@ typedef union orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; + orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT @@ -74,6 +75,8 @@ typedef union #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -111,6 +114,7 @@ void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, /* begin Orc C target preamble */ +#include #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) #define ORC_ABS(a) ((a)<0 ? -(a) : (a)) #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) @@ -146,6 +150,8 @@ void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -206,40 +212,36 @@ void video_mixer_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 25, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, - 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, - 4, 112, 0, 24, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); + static const orc_uint8 bc[] = { + 1, 9, 25, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, + 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, + 4, 112, 0, 24, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_mixer_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); + p = orc_program_new (); + orc_program_set_name (p, "video_mixer_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -312,40 +314,36 @@ video_mixer_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, - 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, - 12, 4, 4, 112, 0, 4, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); + static const orc_uint8 bc[] = { + 1, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, 111, + 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, + 12, 4, 4, 112, 0, 4, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); #else - p = orc_program_new (); - orc_program_set_name (p, "video_mixer_orc_memcpy_u32"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); + p = orc_program_new (); + orc_program_set_name (p, "video_mixer_orc_memcpy_u32"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_memcpy_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -479,61 +477,57 @@ video_mixer_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 24, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, - 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, - 1, 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, - 0, 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, - 70, 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); + static const orc_uint8 bc[] = { + 1, 7, 9, 24, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, + 1, 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, + 0, 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, + 70, 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_u8"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000008, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_u8"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -647,18 +641,10 @@ video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; /* 13: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 14: addw */ var54.x4[0] = var50.x4[0] + var53.x4[0]; var54.x4[1] = var50.x4[1] + var53.x4[1]; @@ -773,18 +759,10 @@ _backup_video_mixer_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff; var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff; /* 13: div255w */ - var53.x4[0] = - ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) + - (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8; - var53.x4[1] = - ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) + - (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8; - var53.x4[2] = - ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) + - (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8; - var53.x4[3] = - ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) + - (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8; + var53.x4[0] = (((orc_uint16) var52.x4[0]) * 0x8081u) >> 23; + var53.x4[1] = (((orc_uint16) var52.x4[1]) * 0x8081u) >> 23; + var53.x4[2] = (((orc_uint16) var52.x4[2]) * 0x8081u) >> 23; + var53.x4[3] = (((orc_uint16) var52.x4[3]) * 0x8081u) >> 23; /* 14: addw */ var54.x4[0] = var50.x4[0] + var53.x4[0]; var54.x4[1] = var50.x4[1] + var53.x4[1]; @@ -809,89 +787,85 @@ video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, - 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, - 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, - 16, 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, - 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, - 35, 21, 2, 89, 38, 38, 24, 21, 2, 95, 38, 38, 17, 21, 2, 150, - 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, 37, 37, 36, - 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, 70, 36, 36, - 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, + 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, + 16, 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, + 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, + 35, 21, 2, 89, 38, 38, 24, 21, 2, 95, 38, 38, 17, 21, 2, 150, + 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98, 37, 37, 36, + 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2, 70, 36, 36, + 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_argb"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x000000ff, "c1"); - orc_program_add_constant (p, 2, 0x00000008, "c2"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 4, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_argb"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x000000ff, "c1"); + orc_program_add_constant (p, 2, 0x00000008, "c2"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 4, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1008,18 +982,10 @@ video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; /* 14: div255w */ - var55.x4[0] = - ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + - (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; - var55.x4[1] = - ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + - (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; - var55.x4[2] = - ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + - (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; - var55.x4[3] = - ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + - (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; + var55.x4[0] = (((orc_uint16) var54.x4[0]) * 0x8081u) >> 23; + var55.x4[1] = (((orc_uint16) var54.x4[1]) * 0x8081u) >> 23; + var55.x4[2] = (((orc_uint16) var54.x4[2]) * 0x8081u) >> 23; + var55.x4[3] = (((orc_uint16) var54.x4[3]) * 0x8081u) >> 23; /* 15: addw */ var56.x4[0] = var52.x4[0] + var55.x4[0]; var56.x4[1] = var52.x4[1] + var55.x4[1]; @@ -1137,18 +1103,10 @@ _backup_video_mixer_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) var54.x4[2] = (var53.x4[2] * var49.x4[2]) & 0xffff; var54.x4[3] = (var53.x4[3] * var49.x4[3]) & 0xffff; /* 14: div255w */ - var55.x4[0] = - ((orc_uint16) (((orc_uint16) (var54.x4[0] + 128)) + - (((orc_uint16) (var54.x4[0] + 128)) >> 8))) >> 8; - var55.x4[1] = - ((orc_uint16) (((orc_uint16) (var54.x4[1] + 128)) + - (((orc_uint16) (var54.x4[1] + 128)) >> 8))) >> 8; - var55.x4[2] = - ((orc_uint16) (((orc_uint16) (var54.x4[2] + 128)) + - (((orc_uint16) (var54.x4[2] + 128)) >> 8))) >> 8; - var55.x4[3] = - ((orc_uint16) (((orc_uint16) (var54.x4[3] + 128)) + - (((orc_uint16) (var54.x4[3] + 128)) >> 8))) >> 8; + var55.x4[0] = (((orc_uint16) var54.x4[0]) * 0x8081u) >> 23; + var55.x4[1] = (((orc_uint16) var54.x4[1]) * 0x8081u) >> 23; + var55.x4[2] = (((orc_uint16) var54.x4[2]) * 0x8081u) >> 23; + var55.x4[3] = (((orc_uint16) var54.x4[3]) * 0x8081u) >> 23; /* 15: addw */ var56.x4[0] = var52.x4[0] + var55.x4[0]; var56.x4[1] = var52.x4[1] + var55.x4[1]; @@ -1173,94 +1131,90 @@ video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, - 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, - 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, - 14, 2, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, - 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, - 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, - 39, 39, 24, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32, - 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38, - 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157, - 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); + static const orc_uint8 bc[] = { + 1, 7, 9, 26, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, + 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, + 14, 2, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, + 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, + 34, 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, + 39, 39, 24, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32, + 0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38, + 38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157, + 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_blend_bgra"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xff000000, "c1"); - orc_program_add_constant (p, 4, 0x00000018, "c2"); - orc_program_add_constant (p, 2, 0x00000008, "c3"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 4, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 8, "t8"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_blend_bgra"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_blend_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xff000000, "c1"); + orc_program_add_constant (p, 4, 0x00000018, "c2"); + orc_program_add_constant (p, 2, 0x00000008, "c3"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 4, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 8, "t8"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1415,18 +1369,10 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + var62.x4[0] = (((orc_uint16) var61.x4[0]) * 0x8081u) >> 23; + var62.x4[1] = (((orc_uint16) var61.x4[1]) * 0x8081u) >> 23; + var62.x4[2] = (((orc_uint16) var61.x4[2]) * 0x8081u) >> 23; + var62.x4[3] = (((orc_uint16) var61.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var63.x4[0] = (orc_uint8) var56.x4[0]; var63.x4[1] = (orc_uint8) var56.x4[1]; @@ -1623,18 +1569,10 @@ _backup_video_mixer_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff; var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff; /* 19: div255w */ - var62.x4[0] = - ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) + - (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8; - var62.x4[1] = - ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) + - (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8; - var62.x4[2] = - ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) + - (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8; - var62.x4[3] = - ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) + - (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8; + var62.x4[0] = (((orc_uint16) var61.x4[0]) * 0x8081u) >> 23; + var62.x4[1] = (((orc_uint16) var61.x4[1]) * 0x8081u) >> 23; + var62.x4[2] = (((orc_uint16) var61.x4[2]) * 0x8081u) >> 23; + var62.x4[3] = (((orc_uint16) var61.x4[3]) * 0x8081u) >> 23; /* 20: convubw */ var63.x4[0] = (orc_uint8) var56.x4[0]; var63.x4[1] = (orc_uint8) var56.x4[1]; @@ -1700,125 +1638,120 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, - 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, - 98, - 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, - 0, 0, 14, 4, 0, 255, 255, 255, 14, 2, 8, 0, 0, 0, 16, 2, - 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, - 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, - 150, 35, 38, 21, 2, 89, 35, 35, 24, 21, 2, 95, 35, 35, 19, 21, - 2, 150, 40, 32, 21, 2, 89, 40, 40, 35, 115, 38, 16, 21, 2, 150, - 36, 38, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, 32, 157, 34, - 33, 152, 38, 34, 21, 2, 150, 37, 38, 21, 2, 89, 37, 37, 36, 21, - 2, 80, 37, 37, 21, 2, 150, 39, 32, 21, 2, 89, 39, 39, 37, 21, - 2, 70, 39, 39, 40, 21, 2, 70, 37, 37, 35, 21, 2, 81, 39, 39, - 37, 21, 2, 157, 32, 39, 106, 32, 32, 18, 21, 2, 157, 38, 37, 106, - 38, 38, 17, 123, 32, 32, 38, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); + static const orc_uint8 bc[] = { + 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, + 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, + 0, 0, 14, 4, 0, 255, 255, 255, 14, 2, 8, 0, 0, 0, 16, 2, + 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, + 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, + 150, 35, 38, 21, 2, 89, 35, 35, 24, 21, 2, 95, 35, 35, 19, 21, + 2, 150, 40, 32, 21, 2, 89, 40, 40, 35, 115, 38, 16, 21, 2, 150, + 36, 38, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33, 32, 157, 34, + 33, 152, 38, 34, 21, 2, 150, 37, 38, 21, 2, 89, 37, 37, 36, 21, + 2, 80, 37, 37, 21, 2, 150, 39, 32, 21, 2, 89, 39, 39, 37, 21, + 2, 70, 39, 39, 40, 21, 2, 70, 37, 37, 35, 21, 2, 81, 39, 39, + 37, 21, 2, 157, 32, 39, 106, 32, 32, 18, 21, 2, 157, 38, 37, 106, + 38, 38, 17, 123, 32, 32, 38, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_overlay_argb"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0x000000ff, "c2"); - orc_program_add_constant (p, 4, 0xffffff00, "c3"); - orc_program_add_constant (p, 2, 0x00000008, "c4"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - orc_program_add_temporary (p, 1, "t3"); - orc_program_add_temporary (p, 8, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 4, "t7"); - orc_program_add_temporary (p, 8, "t8"); - orc_program_add_temporary (p, 8, "t9"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_overlay_argb"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_argb); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0x000000ff, "c2"); + orc_program_add_constant (p, 4, 0xffffff00, "c3"); + orc_program_add_constant (p, 2, 0x00000008, "c4"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 1, "t3"); + orc_program_add_temporary (p, 8, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 4, "t7"); + orc_program_add_temporary (p, 8, "t8"); + orc_program_add_temporary (p, 8, "t9"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; @@ -1979,18 +1912,10 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + var65.x4[0] = (((orc_uint16) var64.x4[0]) * 0x8081u) >> 23; + var65.x4[1] = (((orc_uint16) var64.x4[1]) * 0x8081u) >> 23; + var65.x4[2] = (((orc_uint16) var64.x4[2]) * 0x8081u) >> 23; + var65.x4[3] = (((orc_uint16) var64.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var66.x4[0] = (orc_uint8) var58.x4[0]; var66.x4[1] = (orc_uint8) var58.x4[1]; @@ -2193,18 +2118,10 @@ _backup_video_mixer_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff; var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff; /* 21: div255w */ - var65.x4[0] = - ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) + - (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8; - var65.x4[1] = - ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) + - (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8; - var65.x4[2] = - ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) + - (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8; - var65.x4[3] = - ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) + - (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8; + var65.x4[0] = (((orc_uint16) var64.x4[0]) * 0x8081u) >> 23; + var65.x4[1] = (((orc_uint16) var64.x4[1]) * 0x8081u) >> 23; + var65.x4[2] = (((orc_uint16) var64.x4[2]) * 0x8081u) >> 23; + var65.x4[3] = (((orc_uint16) var64.x4[3]) * 0x8081u) >> 23; /* 22: convubw */ var66.x4[0] = (orc_uint8) var58.x4[0]; var66.x4[1] = (orc_uint8) var58.x4[1]; @@ -2270,132 +2187,127 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m) { OrcExecutor _ex, *ex = &_ex; - static volatile int p_inited = 0; - static OrcCode *c = 0; - void (*func) (OrcExecutor *); + static OrcOnce once = ORC_ONCE_INIT; + OrcCode *c; + OrcExecutorFunc func = NULL; - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; + if (!orc_once_enter (&once, (void **) &c)) { + OrcProgram *p; #if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, - 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, - 97, - 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, - 0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 2, - 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8, - 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, - 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 36, 39, 21, - 2, 89, 36, 36, 24, 21, 2, 95, 36, 36, 20, 21, 2, 150, 41, 32, - 21, 2, 89, 41, 41, 36, 115, 39, 16, 21, 2, 150, 37, 39, 21, 2, - 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35, - 34, 152, 39, 35, 21, 2, 150, 38, 39, 21, 2, 89, 38, 38, 37, 21, - 2, 80, 38, 38, 21, 2, 150, 40, 32, 21, 2, 89, 40, 40, 38, 21, - 2, 70, 40, 40, 41, 21, 2, 70, 38, 38, 36, 21, 2, 81, 40, 40, - 38, 21, 2, 157, 32, 40, 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, - 39, 39, 17, 123, 32, 32, 39, 128, 0, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); + static const orc_uint8 bc[] = { + 1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 109, 105, 120, 101, 114, 95, + 111, 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, + 11, 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, + 0, 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 14, 2, + 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 8, + 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, + 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 36, 39, 21, + 2, 89, 36, 36, 24, 21, 2, 95, 36, 36, 20, 21, 2, 150, 41, 32, + 21, 2, 89, 41, 41, 36, 115, 39, 16, 21, 2, 150, 37, 39, 21, 2, + 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35, + 34, 152, 39, 35, 21, 2, 150, 38, 39, 21, 2, 89, 38, 38, 37, 21, + 2, 80, 38, 38, 21, 2, 150, 40, 32, 21, 2, 89, 40, 40, 38, 21, + 2, 70, 40, 40, 41, 21, 2, 70, 38, 38, 36, 21, 2, 81, 40, 40, + 38, 21, 2, 157, 32, 40, 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, + 39, 39, 17, 123, 32, 32, 39, 128, 0, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); #else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_mixer_orc_overlay_bgra"); - orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0xffffffff, "c1"); - orc_program_add_constant (p, 4, 0xff000000, "c2"); - orc_program_add_constant (p, 4, 0x00ffffff, "c3"); - orc_program_add_constant (p, 4, 0x00000018, "c4"); - orc_program_add_constant (p, 2, 0x00000008, "c5"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - orc_program_add_temporary (p, 2, "t3"); - orc_program_add_temporary (p, 1, "t4"); - orc_program_add_temporary (p, 8, "t5"); - orc_program_add_temporary (p, 8, "t6"); - orc_program_add_temporary (p, 8, "t7"); - orc_program_add_temporary (p, 4, "t8"); - orc_program_add_temporary (p, 8, "t9"); - orc_program_add_temporary (p, 8, "t10"); + p = orc_program_new (); + orc_program_set_2d (p); + orc_program_set_name (p, "video_mixer_orc_overlay_bgra"); + orc_program_set_backup_function (p, _backup_video_mixer_orc_overlay_bgra); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0xffffffff, "c1"); + orc_program_add_constant (p, 4, 0xff000000, "c2"); + orc_program_add_constant (p, 4, 0x00ffffff, "c3"); + orc_program_add_constant (p, 4, 0x00000018, "c4"); + orc_program_add_constant (p, 2, 0x00000008, "c5"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 2, "t3"); + orc_program_add_temporary (p, 1, "t4"); + orc_program_add_temporary (p, 8, "t5"); + orc_program_add_temporary (p, 8, "t6"); + orc_program_add_temporary (p, 8, "t7"); + orc_program_add_temporary (p, 4, "t8"); + orc_program_add_temporary (p, 8, "t9"); + orc_program_add_temporary (p, 8, "t10"); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, - ORC_VAR_D1); - orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, - ORC_VAR_D1); - orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C5, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6, + ORC_VAR_D1); + orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5, + ORC_VAR_D1); + orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); #endif - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + orc_once_leave (&once, c); } ex->arrays[ORC_VAR_A2] = c; ex->program = 0; diff --git a/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.h b/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.h index e0c070f878..8b7347ba67 100644 --- a/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.h +++ b/subprojects/gst-plugins-good/gst/videomixer/videomixerorc-dist.h @@ -1,8 +1,7 @@ /* autogenerated from videomixerorc.orc */ -#ifndef _VIDEOMIXERORC_H_ -#define _VIDEOMIXERORC_H_ +#pragma once #include @@ -56,13 +55,15 @@ typedef unsigned long orc_uint64; #endif typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; orc_int8 x8[8]; } orc_union64; #endif #ifndef ORC_RESTRICT #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ORC_RESTRICT restrict #elif defined(__GNUC__) && __GNUC__ >= 4 #define ORC_RESTRICT __restrict__ +#elif defined(_MSC_VER) +#define ORC_RESTRICT __restrict #else #define ORC_RESTRICT #endif @@ -92,5 +93,3 @@ void video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, cons } #endif -#endif - diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build index 63554ba9f7..fa694c817f 100644 --- a/subprojects/gst-plugins-good/meson.build +++ b/subprojects/gst-plugins-good/meson.build @@ -23,7 +23,7 @@ if have_cxx endif glib_req = '>= 2.64.0' -orc_req = '>= 0.4.17' +orc_req = '>= 0.4.34' if gst_version_is_stable gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)