diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-06-07 10:55:35 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-06-07 10:55:35 +0200 |
commit | 0034323f49552f51318b6e3b8dddbed3aadbec2c (patch) | |
tree | 7ac7951e0ad160834127e10471f1de53e7970e8e /gst/compositor | |
parent | 77fe54e885dee66f05678d6172ac92a164ea93e9 (diff) |
Release 1.5.1
Diffstat (limited to 'gst/compositor')
-rw-r--r-- | gst/compositor/compositororc-dist.c | 296 |
1 files changed, 184 insertions, 112 deletions
diff --git a/gst/compositor/compositororc-dist.c b/gst/compositor/compositororc-dist.c index db71b932e..41744820b 100644 --- a/gst/compositor/compositororc-dist.c +++ b/gst/compositor/compositororc-dist.c @@ -403,7 +403,7 @@ compositor_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride, /* 6: mullw */ var41.i = (var40.i * var36.i) & 0xffff; /* 7: shlw */ - var42.i = var38.i << 8; + var42.i = ((orc_uint16) var38.i) << 8; /* 8: addw */ var43.i = var42.i + var41.i; /* 9: shruw */ @@ -460,7 +460,7 @@ _backup_compositor_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex) /* 6: mullw */ var41.i = (var40.i * var36.i) & 0xffff; /* 7: shlw */ - var42.i = var38.i << 8; + var42.i = ((orc_uint16) var38.i) << 8; /* 8: addw */ var43.i = var42.i + var41.i; /* 9: shruw */ @@ -606,8 +606,9 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var43 = var42.i; /* 3: splatbl */ var44.i = - ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << - 8) | (var43 & 0xff); + ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff) + << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43) + & 0xff); /* 4: convubw */ var45.x4[0] = (orc_uint8) var44.x4[0]; var45.x4[1] = (orc_uint8) var44.x4[1]; @@ -618,11 +619,19 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; - /* 7: shruw */ - var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; - var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; - var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; - var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; + /* 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; /* 8: convubw */ var48.x4[0] = (orc_uint8) var41.x4[0]; var48.x4[1] = (orc_uint8) var41.x4[1]; @@ -731,8 +740,9 @@ _backup_compositor_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) var43 = var42.i; /* 3: splatbl */ var44.i = - ((var43 & 0xff) << 24) | ((var43 & 0xff) << 16) | ((var43 & 0xff) << - 8) | (var43 & 0xff); + ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff) + << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43) + & 0xff); /* 4: convubw */ var45.x4[0] = (orc_uint8) var44.x4[0]; var45.x4[1] = (orc_uint8) var44.x4[1]; @@ -743,11 +753,19 @@ _backup_compositor_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex) var46.x4[1] = (var45.x4[1] * var39.x4[1]) & 0xffff; var46.x4[2] = (var45.x4[2] * var39.x4[2]) & 0xffff; var46.x4[3] = (var45.x4[3] * var39.x4[3]) & 0xffff; - /* 7: shruw */ - var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8; - var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8; - var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8; - var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8; + /* 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; /* 8: convubw */ var48.x4[0] = (orc_uint8) var41.x4[0]; var48.x4[1] = (orc_uint8) var41.x4[1]; @@ -820,13 +838,13 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 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, + 12, 4, 4, 14, 4, 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, 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_compositor_orc_blend_argb); @@ -838,7 +856,6 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 0x00000008, "c2"); orc_program_add_parameter (p, 2, "p1"); orc_program_add_temporary (p, 4, "t1"); orc_program_add_temporary (p, 2, "t2"); @@ -860,7 +877,7 @@ compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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_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); @@ -965,8 +982,9 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var45 = var44.i; /* 4: splatbl */ var46.i = - ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << - 8) | (var45 & 0xff); + ((((orc_uint32) var45) & 0xff) << 24) | ((((orc_uint32) var45) & 0xff) + << 16) | ((((orc_uint32) var45) & 0xff) << 8) | (((orc_uint32) var45) + & 0xff); /* 5: convubw */ var47.x4[0] = (orc_uint8) var46.x4[0]; var47.x4[1] = (orc_uint8) var46.x4[1]; @@ -977,11 +995,19 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; - /* 8: shruw */ - var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; - var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; - var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; - var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; + /* 8: div255w */ + var49.x4[0] = + ((orc_uint16) (((orc_uint16) (var48.x4[0] + 128)) + + (((orc_uint16) (var48.x4[0] + 128)) >> 8))) >> 8; + var49.x4[1] = + ((orc_uint16) (((orc_uint16) (var48.x4[1] + 128)) + + (((orc_uint16) (var48.x4[1] + 128)) >> 8))) >> 8; + var49.x4[2] = + ((orc_uint16) (((orc_uint16) (var48.x4[2] + 128)) + + (((orc_uint16) (var48.x4[2] + 128)) >> 8))) >> 8; + var49.x4[3] = + ((orc_uint16) (((orc_uint16) (var48.x4[3] + 128)) + + (((orc_uint16) (var48.x4[3] + 128)) >> 8))) >> 8; /* 9: convubw */ var50.x4[0] = (orc_uint8) var42.x4[0]; var50.x4[1] = (orc_uint8) var42.x4[1]; @@ -1093,8 +1119,9 @@ _backup_compositor_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) var45 = var44.i; /* 4: splatbl */ var46.i = - ((var45 & 0xff) << 24) | ((var45 & 0xff) << 16) | ((var45 & 0xff) << - 8) | (var45 & 0xff); + ((((orc_uint32) var45) & 0xff) << 24) | ((((orc_uint32) var45) & 0xff) + << 16) | ((((orc_uint32) var45) & 0xff) << 8) | (((orc_uint32) var45) + & 0xff); /* 5: convubw */ var47.x4[0] = (orc_uint8) var46.x4[0]; var47.x4[1] = (orc_uint8) var46.x4[1]; @@ -1105,11 +1132,19 @@ _backup_compositor_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex) var48.x4[1] = (var47.x4[1] * var40.x4[1]) & 0xffff; var48.x4[2] = (var47.x4[2] * var40.x4[2]) & 0xffff; var48.x4[3] = (var47.x4[3] * var40.x4[3]) & 0xffff; - /* 8: shruw */ - var49.x4[0] = ((orc_uint16) var48.x4[0]) >> 8; - var49.x4[1] = ((orc_uint16) var48.x4[1]) >> 8; - var49.x4[2] = ((orc_uint16) var48.x4[2]) >> 8; - var49.x4[3] = ((orc_uint16) var48.x4[3]) >> 8; + /* 8: div255w */ + var49.x4[0] = + ((orc_uint16) (((orc_uint16) (var48.x4[0] + 128)) + + (((orc_uint16) (var48.x4[0] + 128)) >> 8))) >> 8; + var49.x4[1] = + ((orc_uint16) (((orc_uint16) (var48.x4[1] + 128)) + + (((orc_uint16) (var48.x4[1] + 128)) >> 8))) >> 8; + var49.x4[2] = + ((orc_uint16) (((orc_uint16) (var48.x4[2] + 128)) + + (((orc_uint16) (var48.x4[2] + 128)) >> 8))) >> 8; + var49.x4[3] = + ((orc_uint16) (((orc_uint16) (var48.x4[3] + 128)) + + (((orc_uint16) (var48.x4[3] + 128)) >> 8))) >> 8; /* 9: convubw */ var50.x4[0] = (orc_uint8) var42.x4[0]; var50.x4[1] = (orc_uint8) var42.x4[1]; @@ -1182,14 +1217,14 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, - 4, 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, + 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 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, 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_compositor_orc_blend_bgra); @@ -1202,7 +1237,6 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 0x00000008, "c3"); orc_program_add_parameter (p, 2, "p1"); orc_program_add_temporary (p, 4, "t1"); orc_program_add_temporary (p, 4, "t2"); @@ -1227,7 +1261,7 @@ compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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_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); @@ -1351,8 +1385,9 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var46 = var45.i; /* 3: splatbl */ var47.i = - ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << - 8) | (var46 & 0xff); + ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff) + << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46) + & 0xff); /* 4: convubw */ var48.x4[0] = (orc_uint8) var47.x4[0]; var48.x4[1] = (orc_uint8) var47.x4[1]; @@ -1363,11 +1398,19 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; - /* 7: shruw */ - var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; - var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; - var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; - var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; + /* 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; /* 8: convubw */ var51.x4[0] = (orc_uint8) var44.x4[0]; var51.x4[1] = (orc_uint8) var44.x4[1]; @@ -1396,8 +1439,9 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, var58 = var57.i; /* 16: splatbl */ var59.i = - ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << - 8) | (var58 & 0xff); + ((((orc_uint32) var58) & 0xff) << 24) | ((((orc_uint32) var58) & 0xff) + << 16) | ((((orc_uint32) var58) & 0xff) << 8) | (((orc_uint32) var58) + & 0xff); /* 17: convubw */ var60.x4[0] = (orc_uint8) var59.x4[0]; var60.x4[1] = (orc_uint8) var59.x4[1]; @@ -1557,8 +1601,9 @@ _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var46 = var45.i; /* 3: splatbl */ var47.i = - ((var46 & 0xff) << 24) | ((var46 & 0xff) << 16) | ((var46 & 0xff) << - 8) | (var46 & 0xff); + ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff) + << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46) + & 0xff); /* 4: convubw */ var48.x4[0] = (orc_uint8) var47.x4[0]; var48.x4[1] = (orc_uint8) var47.x4[1]; @@ -1569,11 +1614,19 @@ _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff; var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff; var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff; - /* 7: shruw */ - var50.x4[0] = ((orc_uint16) var49.x4[0]) >> 8; - var50.x4[1] = ((orc_uint16) var49.x4[1]) >> 8; - var50.x4[2] = ((orc_uint16) var49.x4[2]) >> 8; - var50.x4[3] = ((orc_uint16) var49.x4[3]) >> 8; + /* 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; /* 8: convubw */ var51.x4[0] = (orc_uint8) var44.x4[0]; var51.x4[1] = (orc_uint8) var44.x4[1]; @@ -1602,8 +1655,9 @@ _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex) var58 = var57.i; /* 16: splatbl */ var59.i = - ((var58 & 0xff) << 24) | ((var58 & 0xff) << 16) | ((var58 & 0xff) << - 8) | (var58 & 0xff); + ((((orc_uint32) var58) & 0xff) << 24) | ((((orc_uint32) var58) & 0xff) + << 16) | ((((orc_uint32) var58) & 0xff) << 8) | (((orc_uint32) var58) + & 0xff); /* 17: convubw */ var60.x4[0] = (orc_uint8) var59.x4[0]; var60.x4[1] = (orc_uint8) var59.x4[1]; @@ -1706,17 +1760,17 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 14, 4, 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, + 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); @@ -1730,7 +1784,6 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 0x00000008, "c4"); orc_program_add_parameter (p, 2, "p1"); orc_program_add_temporary (p, 4, "t1"); orc_program_add_temporary (p, 2, "t2"); @@ -1754,7 +1807,7 @@ compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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_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); @@ -1908,8 +1961,9 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var48 = var47.i; /* 4: splatbl */ var49.i = - ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << - 8) | (var48 & 0xff); + ((((orc_uint32) var48) & 0xff) << 24) | ((((orc_uint32) var48) & 0xff) + << 16) | ((((orc_uint32) var48) & 0xff) << 8) | (((orc_uint32) var48) + & 0xff); /* 5: convubw */ var50.x4[0] = (orc_uint8) var49.x4[0]; var50.x4[1] = (orc_uint8) var49.x4[1]; @@ -1920,11 +1974,19 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; - /* 8: shruw */ - var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; - var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; - var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; - var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; + /* 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; /* 9: convubw */ var53.x4[0] = (orc_uint8) var45.x4[0]; var53.x4[1] = (orc_uint8) var45.x4[1]; @@ -1955,8 +2017,9 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, var61 = var60.i; /* 18: splatbl */ var62.i = - ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << - 8) | (var61 & 0xff); + ((((orc_uint32) var61) & 0xff) << 24) | ((((orc_uint32) var61) & 0xff) + << 16) | ((((orc_uint32) var61) & 0xff) << 8) | (((orc_uint32) var61) + & 0xff); /* 19: convubw */ var63.x4[0] = (orc_uint8) var62.x4[0]; var63.x4[1] = (orc_uint8) var62.x4[1]; @@ -2120,8 +2183,9 @@ _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var48 = var47.i; /* 4: splatbl */ var49.i = - ((var48 & 0xff) << 24) | ((var48 & 0xff) << 16) | ((var48 & 0xff) << - 8) | (var48 & 0xff); + ((((orc_uint32) var48) & 0xff) << 24) | ((((orc_uint32) var48) & 0xff) + << 16) | ((((orc_uint32) var48) & 0xff) << 8) | (((orc_uint32) var48) + & 0xff); /* 5: convubw */ var50.x4[0] = (orc_uint8) var49.x4[0]; var50.x4[1] = (orc_uint8) var49.x4[1]; @@ -2132,11 +2196,19 @@ _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff; var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff; var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff; - /* 8: shruw */ - var52.x4[0] = ((orc_uint16) var51.x4[0]) >> 8; - var52.x4[1] = ((orc_uint16) var51.x4[1]) >> 8; - var52.x4[2] = ((orc_uint16) var51.x4[2]) >> 8; - var52.x4[3] = ((orc_uint16) var51.x4[3]) >> 8; + /* 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; /* 9: convubw */ var53.x4[0] = (orc_uint8) var45.x4[0]; var53.x4[1] = (orc_uint8) var45.x4[1]; @@ -2167,8 +2239,9 @@ _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex) var61 = var60.i; /* 18: splatbl */ var62.i = - ((var61 & 0xff) << 24) | ((var61 & 0xff) << 16) | ((var61 & 0xff) << - 8) | (var61 & 0xff); + ((((orc_uint32) var61) & 0xff) << 24) | ((((orc_uint32) var61) & 0xff) + << 16) | ((((orc_uint32) var61) & 0xff) << 8) | (((orc_uint32) var61) + & 0xff); /* 19: convubw */ var63.x4[0] = (orc_uint8) var62.x4[0]; var63.x4[1] = (orc_uint8) var62.x4[1]; @@ -2271,18 +2344,18 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 14, 4, 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, + 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); @@ -2297,7 +2370,6 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 0x00000008, "c5"); orc_program_add_parameter (p, 2, "p1"); orc_program_add_temporary (p, 4, "t1"); orc_program_add_temporary (p, 4, "t2"); @@ -2324,7 +2396,7 @@ compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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_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); |