From 0062dadc35855786682b8719ae36303ad59b3bf5 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 2 Mar 2015 15:07:34 +0100 Subject: [PATCH] video-orc: fix unpack functions for RGB/RGB15 on BE Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745337 --- gst-libs/gst/video/video-orc-dist.c | 70 ++++++++++++++--------------- gst-libs/gst/video/video-orc.orc | 12 ++--- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/gst-libs/gst/video/video-orc-dist.c b/gst-libs/gst/video/video-orc-dist.c index 7824905c14..0362c0e6eb 100644 --- a/gst-libs/gst/video/video-orc-dist.c +++ b/gst-libs/gst/video/video-orc-dist.c @@ -7329,15 +7329,15 @@ video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1, /* 14: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var51.i; - _dest.x2[1] = var43.i; + _dest.x2[0] = var43.i; + _dest.x2[1] = var51.i; var53.i = _dest.i; } /* 15: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var52.i; - _dest.x2[1] = var50.i; + _dest.x2[0] = var50.i; + _dest.x2[1] = var52.i; var54.i = _dest.i; } /* 16: shll */ @@ -7437,15 +7437,15 @@ _backup_video_orc_unpack_RGB15_be (OrcExecutor * ORC_RESTRICT ex) /* 14: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var51.i; - _dest.x2[1] = var43.i; + _dest.x2[0] = var43.i; + _dest.x2[1] = var51.i; var53.i = _dest.i; } /* 15: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var52.i; - _dest.x2[1] = var50.i; + _dest.x2[0] = var50.i; + _dest.x2[1] = var52.i; var54.i = _dest.i; } /* 16: shll */ @@ -7481,8 +7481,8 @@ video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1, 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, 34, - 22, 195, 37, 35, 33, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, + 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); @@ -7523,9 +7523,9 @@ video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1, 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_T3, ORC_VAR_C7, + 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_T4, ORC_VAR_T2, + 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); @@ -8987,15 +8987,15 @@ video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1, /* 14: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var51.i; - _dest.x2[1] = var43.i; + _dest.x2[0] = var43.i; + _dest.x2[1] = var51.i; var53.i = _dest.i; } /* 15: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var50.i; - _dest.x2[1] = var52.i; + _dest.x2[0] = var52.i; + _dest.x2[1] = var50.i; var54.i = _dest.i; } /* 16: shll */ @@ -9095,15 +9095,15 @@ _backup_video_orc_unpack_BGR15_be (OrcExecutor * ORC_RESTRICT ex) /* 14: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var51.i; - _dest.x2[1] = var43.i; + _dest.x2[0] = var43.i; + _dest.x2[1] = var51.i; var53.i = _dest.i; } /* 15: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var50.i; - _dest.x2[1] = var52.i; + _dest.x2[0] = var52.i; + _dest.x2[1] = var50.i; var54.i = _dest.i; } /* 16: shll */ @@ -9139,8 +9139,8 @@ video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1, 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, 34, - 22, 195, 37, 35, 33, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0, + 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); @@ -9181,9 +9181,9 @@ video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1, 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_T3, ORC_VAR_C7, + 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_T4, ORC_VAR_T2, + 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); @@ -9561,15 +9561,15 @@ video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1, /* 11: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var48.i; - _dest.x2[1] = var41.i; + _dest.x2[0] = var41.i; + _dest.x2[1] = var48.i; var50.i = _dest.i; } /* 12: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var47.i; - _dest.x2[1] = var49.i; + _dest.x2[0] = var49.i; + _dest.x2[1] = var47.i; var51.i = _dest.i; } /* 13: shll */ @@ -9652,15 +9652,15 @@ _backup_video_orc_unpack_BGR15_be_trunc (OrcExecutor * ORC_RESTRICT ex) /* 11: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var48.i; - _dest.x2[1] = var41.i; + _dest.x2[0] = var41.i; + _dest.x2[1] = var48.i; var50.i = _dest.i; } /* 12: mergewl */ { orc_union32 _dest; - _dest.x2[0] = var47.i; - _dest.x2[1] = var49.i; + _dest.x2[0] = var49.i; + _dest.x2[1] = var47.i; var51.i = _dest.i; } /* 13: shll */ @@ -9697,7 +9697,7 @@ video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1, 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, 34, 22, 195, 37, 35, 33, 124, 36, 36, 23, 123, 0, 36, 37, 2, + 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); @@ -9739,9 +9739,9 @@ video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1, 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_T3, ORC_VAR_C7, + 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_T4, ORC_VAR_T2, + 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); diff --git a/gst-libs/gst/video/video-orc.orc b/gst-libs/gst/video/video-orc.orc index 962b4a5be6..a966a4f423 100644 --- a/gst-libs/gst/video/video-orc.orc +++ b/gst-libs/gst/video/video-orc.orc @@ -502,8 +502,8 @@ shlw b, b, 5 mulhsw r, r, 0x0210 mulhsw g, g, 0x4200 mulhsw b, b, 0x4200 -mergewl ag, g, 0xff -mergewl rb, b, r +mergewl ag, 0xff, g +mergewl rb, r, b shll ag, ag, 8 orl argb, ag, rb @@ -632,8 +632,8 @@ shlw r, r, 5 mulhsw b, b, 0x0210 mulhsw g, g, 0x4200 mulhsw r, r, 0x4200 -mergewl ag, g, 0xff -mergewl rb, b, r +mergewl ag, 0xff, g +mergewl rb, r, b shll ag, ag, 8 orl argb, ag, rb @@ -676,8 +676,8 @@ andw r, t, 0x001f shruw b, b, 7 shruw g, g, 2 shlw r, r, 3 -mergewl ag, g, 0xff -mergewl rb, b, r +mergewl ag, 0xff, g +mergewl rb, r, b shll ag, ag, 8 orl argb, ag, rb