diff options
author | Wim Taymans <wtaymans@redhat.com> | 2014-09-24 16:46:36 +0200 |
---|---|---|
committer | Wim Taymans <wtaymans@redhat.com> | 2014-09-24 16:46:36 +0200 |
commit | 84ec78bd862192b87ba8b35732265f1511a1427f (patch) | |
tree | 013277813417c08befb7c54829f68dc5563b4a97 /gst | |
parent | 323683db9637933d4381321d92ce6f68271d56de (diff) |
videomixer: use video library code instead of copy
Diffstat (limited to 'gst')
-rw-r--r-- | gst/videomixer/Makefile.am | 6 | ||||
-rw-r--r-- | gst/videomixer/gstcms.c | 577 | ||||
-rw-r--r-- | gst/videomixer/gstcms.h | 71 | ||||
-rw-r--r-- | gst/videomixer/videoconvert.c | 1505 | ||||
-rw-r--r-- | gst/videomixer/videoconvert.h | 80 | ||||
-rw-r--r-- | gst/videomixer/videomixer2.c | 13 | ||||
-rw-r--r-- | gst/videomixer/videomixer2pad.h | 4 | ||||
-rw-r--r-- | gst/videomixer/videomixerorc-dist.c | 9043 | ||||
-rw-r--r-- | gst/videomixer/videomixerorc-dist.h | 35 | ||||
-rw-r--r-- | gst/videomixer/videomixerorc.orc | 731 |
10 files changed, 53 insertions, 12012 deletions
diff --git a/gst/videomixer/Makefile.am b/gst/videomixer/Makefile.am index 483ac9089..f8499b61e 100644 --- a/gst/videomixer/Makefile.am +++ b/gst/videomixer/Makefile.am @@ -6,8 +6,6 @@ include $(top_srcdir)/common/orc.mak libgstvideomixer_la_SOURCES = \ blend.c \ - videoconvert.c \ - gstcms.c \ videomixer2.c nodist_libgstvideomixer_la_SOURCES = $(ORC_NODIST_SOURCES) @@ -23,9 +21,7 @@ libgstvideomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) noinst_HEADERS = \ blend.h \ videomixer2.h \ - videomixer2pad.h \ - videoconvert.h \ - gstcms.h + videomixer2pad.h Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ diff --git a/gst/videomixer/gstcms.c b/gst/videomixer/gstcms.c deleted file mode 100644 index c46bd563a..000000000 --- a/gst/videomixer/gstcms.c +++ /dev/null @@ -1,577 +0,0 @@ -/* GStreamer - * Copyright (C) 2008 David Schleef <ds@entropywave.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <gst/gst.h> -#include <gst/math-compat.h> -#include "gstcms.h" - -#include <stdio.h> -#include <string.h> -#include <math.h> - - -/* our simple CMS */ - -void -videomixer_color_xyY_to_XYZ (Color * c) -{ - if (c->v[1] == 0) { - c->v[0] = 0; - c->v[1] = 0; - c->v[2] = 0; - } else { - double X, Y, Z; - X = c->v[0] * c->v[2] / c->v[1]; - Y = c->v[2]; - Z = (1.0 - c->v[0] - c->v[1]) * c->v[2] / c->v[1]; - c->v[0] = X; - c->v[1] = Y; - c->v[2] = Z; - } -} - -void -videomixer_color_XYZ_to_xyY (Color * c) -{ - double d; - d = c->v[0] + c->v[1] + c->v[2]; - if (d == 0) { - c->v[0] = 0.3128; - c->v[1] = 0.3290; - c->v[2] = 0; - } else { - double x, y, Y; - x = c->v[0] / d; - y = c->v[1] / d; - Y = c->v[1]; - c->v[0] = x; - c->v[1] = y; - c->v[2] = Y; - } -} - -void -videomixer_color_set (Color * c, double x, double y, double z) -{ - c->v[0] = x; - c->v[1] = y; - c->v[2] = z; -} - -void -videomixer_color_matrix_set_identity (ColorMatrix * m) -{ - int i, j; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - m->m[i][j] = (i == j); - } - } -} - -/* Prettyprint a 4x4 matrix @m@ */ -void -videomixer_color_matrix_dump (ColorMatrix * m) -{ - int i, j; - - printf ("[\n"); - for (i = 0; i < 4; i++) { - printf (" "); - for (j = 0; j < 4; j++) { - printf (" %8.5g", m->m[i][j]); - } - printf ("\n"); - } - printf ("]\n"); -} - -/* Perform 4x4 matrix multiplication: - * - @dst@ = @a@ * @b@ - * - @dst@ may be a pointer to @a@ andor @b@ - */ -void -videomixer_color_matrix_multiply (ColorMatrix * dst, ColorMatrix * a, - ColorMatrix * b) -{ - ColorMatrix tmp; - int i, j, k; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - double x = 0; - for (k = 0; k < 4; k++) { - x += a->m[i][k] * b->m[k][j]; - } - tmp.m[i][j] = x; - } - } - - memcpy (dst, &tmp, sizeof (ColorMatrix)); -} - -void -videomixer_color_matrix_apply (ColorMatrix * m, Color * dest, Color * src) -{ - int i; - Color tmp; - - for (i = 0; i < 3; i++) { - double x = 0; - x += m->m[i][0] * src->v[0]; - x += m->m[i][1] * src->v[1]; - x += m->m[i][2] * src->v[2]; - x += m->m[i][3]; - tmp.v[i] = x; - } - memcpy (dest, &tmp, sizeof (tmp)); -} - -void -videomixer_color_matrix_offset_components (ColorMatrix * m, double a1, - double a2, double a3) -{ - ColorMatrix a; - - videomixer_color_matrix_set_identity (&a); - a.m[0][3] = a1; - a.m[1][3] = a2; - a.m[2][3] = a3; - videomixer_color_matrix_multiply (m, &a, m); -} - -void -videomixer_color_matrix_scale_components (ColorMatrix * m, double a1, double a2, - double a3) -{ - ColorMatrix a; - - videomixer_color_matrix_set_identity (&a); - a.m[0][0] = a1; - a.m[1][1] = a2; - a.m[2][2] = a3; - videomixer_color_matrix_multiply (m, &a, m); -} - -void -videomixer_color_matrix_YCbCr_to_RGB (ColorMatrix * m, double Kr, double Kb) -{ - double Kg = 1.0 - Kr - Kb; - ColorMatrix k = { - { - {1., 0., 2 * (1 - Kr), 0.}, - {1., -2 * Kb * (1 - Kb) / Kg, -2 * Kr * (1 - Kr) / Kg, 0.}, - {1., 2 * (1 - Kb), 0., 0.}, - {0., 0., 0., 1.}, - } - }; - - videomixer_color_matrix_multiply (m, &k, m); -} - -void -videomixer_color_matrix_RGB_to_YCbCr (ColorMatrix * m, double Kr, double Kb) -{ - double Kg = 1.0 - Kr - Kb; - ColorMatrix k; - double x; - - k.m[0][0] = Kr; - k.m[0][1] = Kg; - k.m[0][2] = Kb; - k.m[0][3] = 0; - - x = 1 / (2 * (1 - Kb)); - k.m[1][0] = -x * Kr; - k.m[1][1] = -x * Kg; - k.m[1][2] = x * (1 - Kb); - k.m[1][3] = 0; - - x = 1 / (2 * (1 - Kr)); - k.m[2][0] = x * (1 - Kr); - k.m[2][1] = -x * Kg; - k.m[2][2] = -x * Kb; - k.m[2][3] = 0; - - k.m[3][0] = 0; - k.m[3][1] = 0; - k.m[3][2] = 0; - k.m[3][3] = 1; - - videomixer_color_matrix_multiply (m, &k, m); -} - -void -videomixer_color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst) -{ - /* - * At this point, everything is in YCbCr - * All components are in the range [0,255] - */ - videomixer_color_matrix_set_identity (dst); - - /* offset required to get input video black to (0.,0.,0.) */ - videomixer_color_matrix_offset_components (dst, -16, -128, -128); - - /* scale required to get input video black to (0.,0.,0.) */ - videomixer_color_matrix_scale_components (dst, (1 / 219.0), (1 / 224.0), - (1 / 224.0)); - - /* colour matrix, YCbCr -> RGB */ - /* Requires Y in [0,1.0], Cb&Cr in [-0.5,0.5] */ - videomixer_color_matrix_YCbCr_to_RGB (dst, 0.2990, 0.1140); /* SD */ - - /* - * We are now in RGB space - */ - -#if 0 - /* scale to output range. */ - videomixer_color_matrix_scale_components (dst, 255.0, 255.0, 255.0); -#endif -} - -void -videomixer_color_matrix_build_bt709_to_bt601 (ColorMatrix * dst) -{ - videomixer_color_matrix_set_identity (dst); - - /* offset required to get input video black to (0.,0.,0.) */ - videomixer_color_matrix_offset_components (dst, -16, -128, -128); - - /* scale required to get input video black to (0.,0.,0.) */ - videomixer_color_matrix_scale_components (dst, (1 / 219.0), (1 / 224.0), - (1 / 224.0)); - - /* colour matrix, YCbCr -> RGB */ - /* Requires Y in [0,1.0], Cb&Cr in [-0.5,0.5] */ - videomixer_color_matrix_YCbCr_to_RGB (dst, 0.2126, 0.0722); /* HD */ - - videomixer_color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ - - videomixer_color_matrix_scale_components (dst, 219.0, 224.0, 224.0); - - videomixer_color_matrix_offset_components (dst, 16, 128, 128); -} - -void -videomixer_color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst) -{ - videomixer_color_matrix_set_identity (dst); - - videomixer_color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ - - videomixer_color_matrix_scale_components (dst, 219.0, 224.0, 224.0); - - videomixer_color_matrix_offset_components (dst, 16, 128, 128); - - { - Color c; - int i; - for (i = 7; i >= 0; i--) { - videomixer_color_set (&c, (i & 2) ? 0.75 : 0.0, (i & 4) ? 0.75 : 0.0, - (i & 1) ? 0.75 : 0.0); - videomixer_color_matrix_apply (dst, &c, &c); - g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), - rint (c.v[2])); - } - videomixer_color_set (&c, -0.075, -0.075, -0.075); - videomixer_color_matrix_apply (dst, &c, &c); - g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), - rint (c.v[2])); - videomixer_color_set (&c, 0.075, 0.075, 0.075); - videomixer_color_matrix_apply (dst, &c, &c); - g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), - rint (c.v[2])); - } -} - -void -videomixer_color_matrix_invert (ColorMatrix * m) -{ - ColorMatrix tmp; - int i, j; - double det; - - videomixer_color_matrix_set_identity (&tmp); - for (j = 0; j < 3; j++) { - for (i = 0; i < 3; i++) { - tmp.m[j][i] = - m->m[(i + 1) % 3][(j + 1) % 3] * m->m[(i + 2) % 3][(j + 2) % 3] - - m->m[(i + 1) % 3][(j + 2) % 3] * m->m[(i + 2) % 3][(j + 1) % 3]; - } - } - det = - tmp.m[0][0] * m->m[0][0] + tmp.m[0][1] * m->m[1][0] + - tmp.m[0][2] * m->m[2][0]; - for (j = 0; j < 3; j++) { - for (i = 0; i < 3; i++) { - tmp.m[i][j] /= det; - } - } - memcpy (m, &tmp, sizeof (tmp)); -} - -void -videomixer_color_matrix_copy (ColorMatrix * dest, ColorMatrix * src) -{ - memcpy (dest, src, sizeof (ColorMatrix)); -} - -void -videomixer_color_matrix_transpose (ColorMatrix * m) -{ - int i, j; - ColorMatrix tmp; - - videomixer_color_matrix_set_identity (&tmp); - for (i = 0; i < 3; i++) { - for (j = 0; j < 3; j++) { - tmp.m[i][j] = m->m[j][i]; - } - } - memcpy (m, &tmp, sizeof (ColorMatrix)); -} - -void -videomixer_color_matrix_build_XYZ (ColorMatrix * dst, - double rx, double ry, - double gx, double gy, double bx, double by, double wx, double wy) -{ - Color r, g, b, w, scale; - ColorMatrix m; - - videomixer_color_set (&r, rx, ry, 1.0); - videomixer_color_xyY_to_XYZ (&r); - videomixer_color_set (&g, gx, gy, 1.0); - videomixer_color_xyY_to_XYZ (&g); - videomixer_color_set (&b, bx, by, 1.0); - videomixer_color_xyY_to_XYZ (&b); - videomixer_color_set (&w, wx, wy, 1.0); - videomixer_color_xyY_to_XYZ (&w); - - videomixer_color_matrix_set_identity (dst); - - dst->m[0][0] = r.v[0]; - dst->m[0][1] = r.v[1]; - dst->m[0][2] = r.v[2]; - dst->m[1][0] = g.v[0]; - dst->m[1][1] = g.v[1]; - dst->m[1][2] = g.v[2]; - dst->m[2][0] = b.v[0]; - dst->m[2][1] = b.v[1]; - dst->m[2][2] = b.v[2]; - - videomixer_color_matrix_dump (dst); - videomixer_color_matrix_copy (&m, dst); - videomixer_color_matrix_invert (&m); - videomixer_color_matrix_dump (&m); - - videomixer_color_matrix_transpose (&m); - videomixer_color_matrix_apply (&m, &scale, &w); - g_print ("%g %g %g\n", scale.v[0], scale.v[1], scale.v[2]); - - dst->m[0][0] = r.v[0] * scale.v[0]; - dst->m[0][1] = r.v[1] * scale.v[0]; - dst->m[0][2] = r.v[2] * scale.v[0]; - dst->m[1][0] = g.v[0] * scale.v[1]; - dst->m[1][1] = g.v[1] * scale.v[1]; - dst->m[1][2] = g.v[2] * scale.v[1]; - dst->m[2][0] = b.v[0] * scale.v[2]; - dst->m[2][1] = b.v[1] * scale.v[2]; - dst->m[2][2] = b.v[2] * scale.v[2]; - - videomixer_color_matrix_transpose (dst); - videomixer_color_matrix_dump (dst); - - videomixer_color_set (&scale, 1, 1, 1); - videomixer_color_matrix_apply (dst, &scale, &scale); - videomixer_color_XYZ_to_xyY (&scale); - g_print ("white %g %g %g\n", scale.v[0], scale.v[1], scale.v[2]); - -} - -void -videomixer_color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst) -{ - /* SMPTE C primaries, SMPTE 170M-2004 */ - videomixer_color_matrix_build_XYZ (dst, - 0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290); -#if 0 - /* NTSC 1953 primaries, SMPTE 170M-2004 */ - videomixer_color_matrix_build_XYZ (dst, - 0.67, 0.33, 0.21, 0.71, 0.14, 0.08, 0.3127, 0.3290); -#endif -} - -void -videomixer_color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst) -{ - /* Rec. ITU-R BT.709-5 */ - videomixer_color_matrix_build_XYZ (dst, - 0.640, 0.330, 0.300, 0.600, 0.150, 0.060, 0.3127, 0.3290); -} - -void -videomixer_color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst) -{ - /* Dell monitor */ -#if 1 - videomixer_color_matrix_build_XYZ (dst, - 0.662, 0.329, 0.205, 0.683, 0.146, 0.077, 0.3135, 0.3290); -#endif -#if 0 - videomixer_color_matrix_build_XYZ (dst, - 0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290); -#endif - videomixer_color_matrix_invert (dst); -} - -void -videomixer_color_transfer_function_apply (Color * dest, Color * src) -{ - int i; - - for (i = 0; i < 3; i++) { - if (src->v[i] < 0.0812) { - dest->v[i] = src->v[i] / 4.500; - } else { - dest->v[i] = pow (src->v[i] + 0.099, 1 / 0.4500); - } - } -} - -void -videomixer_color_transfer_function_unapply (Color * dest, Color * src) -{ - int i; - - for (i = 0; i < 3; i++) { - if (src->v[i] < 0.0812 / 4.500) { - dest->v[i] = src->v[i] * 4.500; - } else { - dest->v[i] = pow (src->v[i], 0.4500) - 0.099; - } - } -} - -void -videomixer_color_gamut_clamp (Color * dest, Color * src) -{ - dest->v[0] = CLAMP (src->v[0], 0.0, 1.0); - dest->v[1] = CLAMP (src->v[1], 0.0, 1.0); - dest->v[2] = CLAMP (src->v[2], 0.0, 1.0); -} - -#if 0 -static guint8 * -get_color_transform_table (void) -{ - static guint8 *color_transform_table = NULL; - -#if 1 - if (!color_transform_table) { - ColorMatrix bt601_to_rgb; - ColorMatrix bt601_to_yuv; - ColorMatrix bt601_rgb_to_XYZ; - ColorMatrix dell_XYZ_to_rgb; - guint8 *table_y; - guint8 *table_u; - guint8 *table_v; - int y, u, v; - - videomixer_color_matrix_build_yuv_to_rgb_601 (&bt601_to_rgb); - videomixer_color_matrix_build_rgb_to_yuv_601 (&bt601_to_yuv); - videomixer_color_matrix_build_rgb_to_XYZ_601 (&bt601_rgb_to_XYZ); - videomixer_color_matrix_build_XYZ_to_rgb_dell (&dell_XYZ_to_rgb); - - color_transform_table = g_malloc (0x1000000 * 3); - - table_y = COG_OFFSET (color_transform_table, 0 * 0x1000000); - table_u = COG_OFFSET (color_transform_table, 1 * 0x1000000); - table_v = COG_OFFSET (color_transform_table, 2 * 0x1000000); - - for (y = 0; y < 256; y++) { - for (u = 0; u < 256; u++) { - for (v = 0; v < 256; v++) { - Color c; - - c.v[0] = y; - c.v[1] = u; - c.v[2] = v; - videomixer_color_matrix_apply (&bt601_to_rgb, &c, &c); - color_gamut_clamp (&c, &c); - color_transfer_function_apply (&c, &c); - videomixer_color_matrix_apply (&bt601_rgb_to_XYZ, &c, &c); - videomixer_color_matrix_apply (&dell_XYZ_to_rgb, &c, &c); - color_transfer_function_unapply (&c, &c); - color_gamut_clamp (&c, &c); - videomixer_color_matrix_apply (&bt601_to_yuv, &c, &c); - - table_y[(y << 16) | (u << 8) | (v)] = rint (c.v[0]); - table_u[(y << 16) | (u << 8) | (v)] = rint (c.v[1]); - table_v[(y << 16) | (u << 8) | (v)] = rint (c.v[2]); - } - } - } - } -#endif -#if 0 - if (!color_transform_table) { - ColorMatrix bt709_to_bt601; - guint8 *table_y; - guint8 *table_u; - guint8 *table_v; - int y, u, v; - - videomixer_color_matrix_build_bt709_to_bt601 (&bt709_to_bt601); - - color_transform_table = g_malloc (0x1000000 * 3); - - table_y = COG_OFFSET (color_transform_table, 0 * 0x1000000); - table_u = COG_OFFSET (color_transform_table, 1 * 0x1000000); - table_v = COG_OFFSET (color_transform_table, 2 * 0x1000000); - - for (y = 0; y < 256; y++) { - for (u = 0; u < 256; u++) { - for (v = 0; v < 256; v++) { - Color c; - - c.v[0] = y; - c.v[1] = u; - c.v[2] = v; - videomixer_color_matrix_apply (&bt709_to_bt601, &c, &c); - - table_y[(y << 16) | (u << 8) | (v)] = rint (c.v[0]); - table_u[(y << 16) | (u << 8) | (v)] = rint (c.v[1]); - table_v[(y << 16) | (u << 8) | (v)] = rint (c.v[2]); - } - } - } - } -#endif - - return color_transform_table; -} -#endif diff --git a/gst/videomixer/gstcms.h b/gst/videomixer/gstcms.h deleted file mode 100644 index 7cc5d5ad7..000000000 --- a/gst/videomixer/gstcms.h +++ /dev/null @@ -1,71 +0,0 @@ -/* GStreamer - * Copyright (C) 2008 David Schleef <ds@entropywave.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef _GST_CMS_H_ -#define _GST_CMS_H_ - -#include <gst/gst.h> - -G_BEGIN_DECLS - -typedef struct _Color Color; -typedef struct _ColorMatrix ColorMatrix; - -struct _Color -{ - double v[3]; -}; - -struct _ColorMatrix -{ - double m[4][4]; -}; - -void videomixer_color_xyY_to_XYZ (Color * c); -void videomixer_color_XYZ_to_xyY (Color * c); -void videomixer_color_set (Color * c, double x, double y, double z); -void videomixer_color_matrix_set_identity (ColorMatrix * m); -void videomixer_color_matrix_dump (ColorMatrix * m); -void videomixer_color_matrix_multiply (ColorMatrix * dst, ColorMatrix * a, ColorMatrix * b); -void videomixer_color_matrix_apply (ColorMatrix * m, Color * dest, Color * src); -void videomixer_color_matrix_offset_components (ColorMatrix * m, double a1, double a2, - double a3); -void videomixer_color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3); -void videomixer_color_matrix_YCbCr_to_RGB (ColorMatrix * m, double Kr, double Kb); -void videomixer_color_matrix_RGB_to_YCbCr (ColorMatrix * m, double Kr, double Kb); -void videomixer_color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst); -void videomixer_color_matrix_build_bt709_to_bt601 (ColorMatrix * dst); -void videomixer_color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst); -void videomixer_color_matrix_invert (ColorMatrix * m); -void videomixer_color_matrix_copy (ColorMatrix * dest, ColorMatrix * src); -void videomixer_color_matrix_transpose (ColorMatrix * m); -void videomixer_color_matrix_build_XYZ (ColorMatrix * dst, - double rx, double ry, - double gx, double gy, double bx, double by, double wx, double wy); -void videomixer_color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst); -void videomixer_color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst); -void videomixer_color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst); -void videomixer_color_transfer_function_apply (Color * dest, Color * src); -void videomixer_color_transfer_function_unapply (Color * dest, Color * src); -void videomixer_color_gamut_clamp (Color * dest, Color * src); - -G_END_DECLS - -#endif - diff --git a/gst/videomixer/videoconvert.c b/gst/videomixer/videoconvert.c deleted file mode 100644 index 05565d7c6..000000000 --- a/gst/videomixer/videoconvert.c +++ /dev/null @@ -1,1505 +0,0 @@ -/* GStreamer - * Copyright (C) 2010 David Schleef <ds@schleef.org> - * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "videoconvert.h" - -#include <glib.h> -#include <string.h> -#include <math.h> - -#include "videomixerorc.h" - - -static void videoconvert_convert_generic (VideoConvert * convert, - GstVideoFrame * dest, const GstVideoFrame * src); -static void videoconvert_convert_matrix8 (VideoConvert * convert, - gpointer pixels); -static void videoconvert_convert_matrix16 (VideoConvert * convert, - gpointer pixels); -static gboolean videoconvert_convert_lookup_fastpath (VideoConvert * convert); -static gboolean videoconvert_convert_compute_matrix (VideoConvert * convert); -static gboolean videoconvert_convert_compute_resample (VideoConvert * convert); -static void videoconvert_dither_verterr (VideoConvert * convert, - guint16 * pixels, int j); -static void videoconvert_dither_halftone (VideoConvert * convert, - guint16 * pixels, int j); - - -VideoConvert * -videomixer_videoconvert_convert_new (GstVideoInfo * in_info, - GstVideoInfo * out_info) -{ - VideoConvert *convert; - gint width; - - convert = g_malloc0 (sizeof (VideoConvert)); - - convert->in_info = *in_info; - convert->out_info = *out_info; - convert->dither16 = NULL; - - convert->width = GST_VIDEO_INFO_WIDTH (in_info); - convert->height = GST_VIDEO_INFO_HEIGHT (in_info); - - if (!videoconvert_convert_lookup_fastpath (convert)) { - convert->convert = videoconvert_convert_generic; - if (!videoconvert_convert_compute_matrix (convert)) - goto no_convert; - - if (!videoconvert_convert_compute_resample (convert)) - goto no_convert; - } - - width = convert->width; - - convert->lines = out_info->finfo->pack_lines; - convert->errline = g_malloc0 (sizeof (guint16) * width * 4); - - return convert; - - /* ERRORS */ -no_convert: - { - videomixer_videoconvert_convert_free (convert); - return NULL; - } -} - -void -videomixer_videoconvert_convert_free (VideoConvert * convert) -{ - gint i; - - if (convert->upsample) - gst_video_chroma_resample_free (convert->upsample); - if (convert->downsample) - gst_video_chroma_resample_free (convert->downsample); - - for (i = 0; i < convert->n_tmplines; i++) - g_free (convert->tmplines[i]); - g_free (convert->tmplines); - g_free (convert->errline); - - g_free (convert); -} - -void -videomixer_videoconvert_convert_set_dither (VideoConvert * convert, int type) -{ - switch (type) { - case 0: - default: - convert->dither16 = NULL; - break; - case 1: - convert->dither16 = videoconvert_dither_verterr; - break; - case 2: - convert->dither16 = videoconvert_dither_halftone; - break; - } -} - -void -videomixer_videoconvert_convert_convert (VideoConvert * convert, - GstVideoFrame * dest, const GstVideoFrame * src) -{ - convert->convert (convert, dest, src); -} - -#define SCALE (8) -#define SCALE_F ((float) (1 << SCALE)) - -static void -videoconvert_convert_matrix8 (VideoConvert * convert, gpointer pixels) -{ - int i; - int r, g, b; - int y, u, v; - guint8 *p = pixels; - - for (i = 0; i < convert->width; i++) { - r = p[i * 4 + 1]; - g = p[i * 4 + 2]; - b = p[i * 4 + 3]; - - y = (convert->cmatrix[0][0] * r + convert->cmatrix[0][1] * g + - convert->cmatrix[0][2] * b + convert->cmatrix[0][3]) >> SCALE; - u = (convert->cmatrix[1][0] * r + convert->cmatrix[1][1] * g + - convert->cmatrix[1][2] * b + convert->cmatrix[1][3]) >> SCALE; - v = (convert->cmatrix[2][0] * r + convert->cmatrix[2][1] * g + - convert->cmatrix[2][2] * b + convert->cmatrix[2][3]) >> SCALE; - - p[i * 4 + 1] = CLAMP (y, 0, 255); - p[i * 4 + 2] = CLAMP (u, 0, 255); - p[i * 4 + 3] = CLAMP (v, 0, 255); - } -} - -static void -videoconvert_convert_matrix16 (VideoConvert * convert, gpointer pixels) -{ - int i; - int r, g, b; - int y, u, v; - guint16 *p = pixels; - - for (i = 0; i < convert->width; i++) { - r = p[i * 4 + 1]; - g = p[i * 4 + 2]; - b = p[i * 4 + 3]; - - y = (convert->cmatrix[0][0] * r + convert->cmatrix[0][1] * g + - convert->cmatrix[0][2] * b + convert->cmatrix[0][3]) >> SCALE; - u = (convert->cmatrix[1][0] * r + convert->cmatrix[1][1] * g + - convert->cmatrix[1][2] * b + convert->cmatrix[1][3]) >> SCALE; - v = (convert->cmatrix[2][0] * r + convert->cmatrix[2][1] * g + - convert->cmatrix[2][2] * b + convert->cmatrix[2][3]) >> SCALE; - - p[i * 4 + 1] = CLAMP (y, 0, 65535); - p[i * 4 + 2] = CLAMP (u, 0, 65535); - p[i * 4 + 3] = CLAMP (v, 0, 65535); - } -} - -static gboolean -get_Kr_Kb (GstVideoColorMatrix matrix, gdouble * Kr, gdouble * Kb) -{ - gboolean res = TRUE; - - switch (matrix) { - /* RGB */ - default: - case GST_VIDEO_COLOR_MATRIX_RGB: - res = FALSE; - break; - /* YUV */ - case GST_VIDEO_COLOR_MATRIX_FCC: - *Kr = 0.30; - *Kb = 0.11; - break; - case GST_VIDEO_COLOR_MATRIX_BT709: - *Kr = 0.2126; - *Kb = 0.0722; - break; - case GST_VIDEO_COLOR_MATRIX_BT601: - *Kr = 0.2990; - *Kb = 0.1140; - break; - case GST_VIDEO_COLOR_MATRIX_SMPTE240M: - *Kr = 0.212; - *Kb = 0.087; - break; - } - GST_DEBUG ("matrix: %d, Kr %f, Kb %f", matrix, *Kr, *Kb); - return res; -} - -static gboolean -videoconvert_convert_compute_matrix (VideoConvert * convert) -{ - GstVideoInfo *in_info, *out_info; - ColorMatrix dst; - gint i, j; - const GstVideoFormatInfo *sfinfo, *dfinfo; - const GstVideoFormatInfo *suinfo, *duinfo; - gint offset[4], scale[4]; - gdouble Kr = 0, Kb = 0; - - in_info = &convert->in_info; - out_info = &convert->out_info; - - sfinfo = in_info->finfo; - dfinfo = out_info->finfo; - - if (sfinfo->unpack_func == NULL) - goto no_unpack_func; - - if (dfinfo->pack_func == NULL) - goto no_pack_func; - - suinfo = gst_video_format_get_info (sfinfo->unpack_format); - duinfo = gst_video_format_get_info (dfinfo->unpack_format); - - convert->in_bits = GST_VIDEO_FORMAT_INFO_DEPTH (suinfo, 0); - convert->out_bits = GST_VIDEO_FORMAT_INFO_DEPTH (duinfo, 0); - - GST_DEBUG ("in bits %d, out bits %d", convert->in_bits, convert->out_bits); - - if (in_info->colorimetry.range == out_info->colorimetry.range && - in_info->colorimetry.matrix == out_info->colorimetry.matrix) { - GST_DEBUG ("using identity color transform"); - convert->matrix = NULL; - return TRUE; - } - - /* calculate intermediate format for the matrix. When unpacking, we expand - * input to 16 when one of the inputs is 16 bits */ - if (convert->in_bits == 16 || convert->out_bits == 16) { - convert->matrix = videoconvert_convert_matrix16; - - if (GST_VIDEO_FORMAT_INFO_IS_RGB (suinfo)) - suinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_ARGB64); - else - suinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_AYUV64); - - if (GST_VIDEO_FORMAT_INFO_IS_RGB (duinfo)) - duinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_ARGB64); - else - duinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_AYUV64); - } else { - convert->matrix = videoconvert_convert_matrix8; - } - - videomixer_color_matrix_set_identity (&dst); - - /* 1, bring color components to [0..1.0] range */ - gst_video_color_range_offsets (in_info->colorimetry.range, suinfo, offset, - scale); - - videomixer_color_matrix_offset_components (&dst, -offset[0], -offset[1], - -offset[2]); - - videomixer_color_matrix_scale_components (&dst, 1 / ((float) scale[0]), - 1 / ((float) scale[1]), 1 / ((float) scale[2])); - - /* 2. bring components to R'G'B' space */ - if (get_Kr_Kb (in_info->colorimetry.matrix, &Kr, &Kb)) - videomixer_color_matrix_YCbCr_to_RGB (&dst, Kr, Kb); - - /* 3. inverse transfer function. R'G'B' to linear RGB */ - - /* 4. from RGB to XYZ using the primaries */ - - /* 5. from XYZ to RGB using the primaries */ - - /* 6. transfer function. linear RGB to R'G'B' */ - - /* 7. bring components to YCbCr space */ - if (get_Kr_Kb (out_info->colorimetry.matrix, &Kr, &Kb)) - videomixer_color_matrix_RGB_to_YCbCr (&dst, Kr, Kb); - - /* 8, bring color components to nominal range */ - gst_video_color_range_offsets (out_info->colorimetry.range, duinfo, offset, - scale); - - videomixer_color_matrix_scale_components (&dst, (float) scale[0], - (float) scale[1], (float) scale[2]); - - videomixer_color_matrix_offset_components (&dst, offset[0], offset[1], - offset[2]); - - /* because we're doing fixed point matrix coefficients */ - videomixer_color_matrix_scale_components (&dst, SCALE_F, SCALE_F, SCALE_F); - - for (i = 0; i < 4; i++) - for (j = 0; j < 4; j++) - convert->cmatrix[i][j] = rint (dst.m[i][j]); - - GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[0][0], - convert->cmatrix[0][1], convert->cmatrix[0][2], convert->cmatrix[0][3]); - GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[1][0], - convert->cmatrix[1][1], convert->cmatrix[1][2], convert->cmatrix[1][3]); - GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[2][0], - convert->cmatrix[2][1], convert->cmatrix[2][2], convert->cmatrix[2][3]); - GST_DEBUG ("[%6d %6d %6d %6d]", convert->cmatrix[3][0], - convert->cmatrix[3][1], convert->cmatrix[3][2], convert->cmatrix[3][3]); - - return TRUE; - - /* ERRORS */ -no_unpack_func: - { - GST_ERROR ("no unpack_func for format %s", - gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (in_info))); - return FALSE; - } -no_pack_func: - { - GST_ERROR ("no pack_func for format %s", - gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (out_info))); - return FALSE; - } -} - -static void -videoconvert_dither_verterr (VideoConvert * convert, guint16 * pixels, int j) -{ - int i; - guint16 *errline = convert->errline; - unsigned int mask = 0xff; - - for (i = 0; i < 4 * convert->width; i++) { - int x = pixels[i] + errline[i]; - if (x > 65535) - x = 65535; - pixels[i] = x; - errline[i] = x & mask; - } -} - -static void -videoconvert_dither_halftone (VideoConvert * convert, guint16 * pixels, int j) -{ - int i; - static guint16 halftone[8][8] = { - {0, 128, 32, 160, 8, 136, 40, 168}, - {192, 64, 224, 96, 200, 72, 232, 104}, - {48, 176, 16, 144, 56, 184, 24, 152}, - {240, 112, 208, 80, 248, 120, 216, 88}, - {12, 240, 44, 172, 4, 132, 36, 164}, - {204, 76, 236, 108, 196, 68, 228, 100}, - {60, 188, 28, 156, 52, 180, 20, 148}, - {252, 142, 220, 92, 244, 116, 212, 84} - }; - - for (i = 0; i < convert->width * 4; i++) { - int x; - x = pixels[i] + halftone[(i >> 2) & 7][j & 7]; - if (x > 65535) - x = 65535; - pixels[i] = x; - } -} - -static void -alloc_tmplines (VideoConvert * convert, guint lines, gint width) -{ - gint i; - - convert->n_tmplines = lines; - convert->tmplines = g_malloc (lines * sizeof (gpointer)); - for (i = 0; i < lines; i++) - convert->tmplines[i] = g_malloc (sizeof (guint16) * (width + 8) * 4); -} - -static gboolean -videoconvert_convert_compute_resample (VideoConvert * convert) -{ - GstVideoInfo *in_info, *out_info; - const GstVideoFormatInfo *sfinfo, *dfinfo; - gint width; - - in_info = &convert->in_info; - out_info = &convert->out_info; - - sfinfo = in_info->finfo; - dfinfo = out_info->finfo; - - width = convert->width; - - if (sfinfo->w_sub[2] != dfinfo->w_sub[2] || - sfinfo->h_sub[2] != dfinfo->h_sub[2] || - in_info->chroma_site != out_info->chroma_site) { - convert->upsample = gst_video_chroma_resample_new (0, - in_info->chroma_site, 0, sfinfo->unpack_format, sfinfo->w_sub[2], - sfinfo->h_sub[2]); - - - convert->downsample = gst_video_chroma_resample_new (0, - out_info->chroma_site, 0, dfinfo->unpack_format, -dfinfo->w_sub[2], - -dfinfo->h_sub[2]); - - } else { - convert->upsample = NULL; - convert->downsample = NULL; - } - - if (convert->upsample) { - gst_video_chroma_resample_get_info (convert->upsample, - &convert->up_n_lines, &convert->up_offset); - } else { - convert->up_n_lines = 1; - convert->up_offset = 0; - } - if (convert->downsample) { - gst_video_chroma_resample_get_info (convert->downsample, - &convert->down_n_lines, &convert->down_offset); - } else { - convert->down_n_lines = 1; - convert->down_offset = 0; - } - GST_DEBUG ("upsample: %p, site: %d, offset %d, n_lines %d", convert->upsample, - in_info->chroma_site, convert->up_offset, convert->up_n_lines); - GST_DEBUG ("downsample: %p, site: %d, offset %d, n_lines %d", - convert->downsample, out_info->chroma_site, convert->down_offset, - convert->down_n_lines); - - alloc_tmplines (convert, convert->down_n_lines + convert->up_n_lines, width); - - return TRUE; -} - -#define TO_16(x) (((x)<<8) | (x)) - -static void -convert_to16 (gpointer line, gint width) -{ - guint8 *line8 = line; - guint16 *line16 = line; - gint i; - - for (i = (width - 1) * 4; i >= 0; i--) - line16[i] = TO_16 (line8[i]); -} - -static void -convert_to8 (gpointer line, gint width) -{ - guint8 *line8 = line; - guint16 *line16 = line; - gint i; - - for (i = 0; i < width * 4; i++) - line8[i] = line16[i] >> 8; -} - -#define UNPACK_FRAME(frame,dest,line,width) \ - frame->info.finfo->unpack_func (frame->info.finfo, \ - (GST_VIDEO_FRAME_IS_INTERLACED (frame) ? \ - GST_VIDEO_PACK_FLAG_INTERLACED : \ - GST_VIDEO_PACK_FLAG_NONE), \ - dest, frame->data, frame->info.stride, 0, \ - line, width) -#define PACK_FRAME(frame,dest,line,width) \ - frame->info.finfo->pack_func (frame->info.finfo, \ - (GST_VIDEO_FRAME_IS_INTERLACED (frame) ? \ - GST_VIDEO_PACK_FLAG_INTERLACED : \ - GST_VIDEO_PACK_FLAG_NONE), \ - dest, 0, frame->data, frame->info.stride, \ - frame->info.chroma_site, line, width); - -static void -videoconvert_convert_generic (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int j, k; - gint width, height, lines, max_lines; - guint in_bits, out_bits; - gconstpointer pal; - gsize palsize; - guint up_n_lines, down_n_lines; - gint up_offset, down_offset; - gint in_lines, out_lines; - gint up_line, down_line; - gint start_offset, stop_offset; - gpointer in_tmplines[8]; - gpointer out_tmplines[8]; - - height = convert->height; - width = convert->width; - - in_bits = convert->in_bits; - out_bits = convert->out_bits; - - lines = convert->lines; - up_n_lines = convert->up_n_lines; - up_offset = convert->up_offset; - down_n_lines = convert->down_n_lines; - down_offset = convert->down_offset; - max_lines = convert->n_tmplines; - - in_lines = 0; - out_lines = 0; - - GST_DEBUG ("up_offset %d, up_n_lines %u", up_offset, up_n_lines); - - start_offset = MIN (up_offset, down_offset); - stop_offset = height + start_offset + MAX (up_n_lines, down_n_lines); - - for (; start_offset < stop_offset; start_offset++) { - guint idx, start; - - idx = CLAMP (start_offset, 0, height); - in_tmplines[in_lines] = convert->tmplines[idx % max_lines]; - out_tmplines[out_lines] = in_tmplines[in_lines]; - GST_DEBUG ("start_offset %d/%d, %d, idx %u, in %d, out %d", start_offset, - stop_offset, up_offset, idx, in_lines, out_lines); - - up_line = up_offset + in_lines; - - /* extract the next line */ - if (up_line >= 0 && up_line < height) { - GST_DEBUG ("unpack line %d into %d", up_line, in_lines); - UNPACK_FRAME (src, in_tmplines[in_lines], up_line, width); - } - - if (start_offset >= up_offset) - in_lines++; - - if (start_offset >= down_offset) - out_lines++; - - if (in_lines < up_n_lines) - continue; - - in_lines = 0; - - /* we have enough lines to upsample */ - if (convert->upsample) { - GST_DEBUG ("doing upsample"); - gst_video_chroma_resample (convert->upsample, in_tmplines, width); - } - - /* convert upsampled lines */ - for (k = 0; k < up_n_lines; k++) { - down_line = up_offset + k; - - /* only takes lines with valid output */ - if (down_line < 0 || down_line >= height) - continue; - - GST_DEBUG ("handle line %d, %d/%d, down_line %d", k, out_lines, - down_n_lines, down_line); - - if (out_bits == 16 || in_bits == 16) { - /* FIXME, we can scale in the conversion matrix */ - if (in_bits == 8) - convert_to16 (in_tmplines[k], width); - - if (convert->matrix) - convert->matrix (convert, in_tmplines[k]); - if (convert->dither16) - convert->dither16 (convert, in_tmplines[k], down_line); - - if (out_bits == 8) - convert_to8 (in_tmplines[k], width); - } else { - if (convert->matrix) - convert->matrix (convert, in_tmplines[k]); - } - } - - start = 0; - while (out_lines >= down_n_lines) { - if (convert->downsample) { - GST_DEBUG ("doing downsample %u", start); - gst_video_chroma_resample (convert->downsample, - &out_tmplines[start], width); - } - - for (j = 0; j < down_n_lines; j += lines) { - idx = down_offset + j; - - if (idx < height) { - GST_DEBUG ("packing line %d %d %d", j + start, down_offset, idx); - /* FIXME, not correct if lines > 1 */ - PACK_FRAME (dest, out_tmplines[j + start], idx, width); - } - } - down_offset += down_n_lines; - start += down_n_lines; - out_lines -= down_n_lines; - } - /* we didn't process these lines, move them up for the next round */ - for (j = 0; j < out_lines; j++) { - GST_DEBUG ("move line %d->%d", j + start, j); - out_tmplines[j] = out_tmplines[j + start]; - } - - up_offset += up_n_lines; - } - if ((pal = - gst_video_format_get_palette (GST_VIDEO_FRAME_FORMAT (dest), - &palsize))) { - memcpy (GST_VIDEO_FRAME_PLANE_DATA (dest, 1), pal, palsize); - } -} - -#define FRAME_GET_PLANE_STRIDE(frame, plane) \ - GST_VIDEO_FRAME_PLANE_STRIDE (frame, plane) -#define FRAME_GET_PLANE_LINE(frame, plane, line) \ - (gpointer)(((guint8*)(GST_VIDEO_FRAME_PLANE_DATA (frame, plane))) + \ - FRAME_GET_PLANE_STRIDE (frame, plane) * (line)) - -#define FRAME_GET_COMP_STRIDE(frame, comp) \ - GST_VIDEO_FRAME_COMP_STRIDE (frame, comp) -#define FRAME_GET_COMP_LINE(frame, comp, line) \ - (gpointer)(((guint8*)(GST_VIDEO_FRAME_COMP_DATA (frame, comp))) + \ - FRAME_GET_COMP_STRIDE (frame, comp) * (line)) - -#define FRAME_GET_STRIDE(frame) FRAME_GET_PLANE_STRIDE (frame, 0) -#define FRAME_GET_LINE(frame,line) FRAME_GET_PLANE_LINE (frame, 0, line) - -#define FRAME_GET_Y_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_Y, line) -#define FRAME_GET_U_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_U, line) -#define FRAME_GET_V_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_V, line) -#define FRAME_GET_A_LINE(frame,line) FRAME_GET_COMP_LINE(frame, GST_VIDEO_COMP_A, line) - -#define FRAME_GET_Y_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_Y) -#define FRAME_GET_U_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_U) -#define FRAME_GET_V_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_V) -#define FRAME_GET_A_STRIDE(frame) FRAME_GET_COMP_STRIDE(frame, GST_VIDEO_COMP_A) - -/* Fast paths */ - -#define GET_LINE_OFFSETS(interlaced,line,l1,l2) \ - if (interlaced) { \ - l1 = (line & 2 ? line - 1 : line); \ - l2 = l1 + 2; \ - } else { \ - l1 = line; \ - l2 = l1 + 1; \ - } - - -static void -convert_I420_YUY2 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); - gint l1, l2; - - for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { - GET_LINE_OFFSETS (interlaced, i, l1, l2); - - videomixer_video_convert_orc_convert_I420_YUY2 (FRAME_GET_LINE (dest, l1), - FRAME_GET_LINE (dest, l2), - FRAME_GET_Y_LINE (src, l1), - FRAME_GET_Y_LINE (src, l2), - FRAME_GET_U_LINE (src, i >> 1), - FRAME_GET_V_LINE (src, i >> 1), (width + 1) / 2); - } - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_I420_UYVY (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); - gint l1, l2; - - for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { - GET_LINE_OFFSETS (interlaced, i, l1, l2); - - videomixer_video_convert_orc_convert_I420_UYVY (FRAME_GET_LINE (dest, l1), - FRAME_GET_LINE (dest, l2), - FRAME_GET_Y_LINE (src, l1), - FRAME_GET_Y_LINE (src, l2), - FRAME_GET_U_LINE (src, i >> 1), - FRAME_GET_V_LINE (src, i >> 1), (width + 1) / 2); - } - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_I420_AYUV (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); - gint l1, l2; - - for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { - GET_LINE_OFFSETS (interlaced, i, l1, l2); - - videomixer_video_convert_orc_convert_I420_AYUV (FRAME_GET_LINE (dest, l1), - FRAME_GET_LINE (dest, l2), - FRAME_GET_Y_LINE (src, l1), - FRAME_GET_Y_LINE (src, l2), - FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1), width); - } - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_I420_Y42B (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_420_422 (FRAME_GET_U_LINE (dest, - 0), 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (dest, 1), - 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); - - videomixer_video_convert_orc_planar_chroma_420_422 (FRAME_GET_V_LINE (dest, - 0), 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (dest, 1), - 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); -} - -static void -convert_I420_Y444 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_420_444 (FRAME_GET_U_LINE (dest, - 0), 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (dest, 1), - 2 * FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); - - videomixer_video_convert_orc_planar_chroma_420_444 (FRAME_GET_V_LINE (dest, - 0), 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (dest, 1), - 2 * FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_YUY2_I420 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); - gint l1, l2; - - for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { - GET_LINE_OFFSETS (interlaced, i, l1, l2); - - videomixer_video_convert_orc_convert_YUY2_I420 (FRAME_GET_Y_LINE (dest, l1), - FRAME_GET_Y_LINE (dest, l2), - FRAME_GET_U_LINE (dest, i >> 1), - FRAME_GET_V_LINE (dest, i >> 1), - FRAME_GET_LINE (src, l1), FRAME_GET_LINE (src, l2), (width + 1) / 2); - } - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_YUY2_AYUV (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_YUY2_AYUV (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_YUY2_Y42B (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_YUY2_Y42B (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_YUY2_Y444 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_YUY2_Y444 (FRAME_GET_COMP_LINE (dest, 0, - 0), FRAME_GET_COMP_STRIDE (dest, 0), FRAME_GET_COMP_LINE (dest, 1, 0), - FRAME_GET_COMP_STRIDE (dest, 1), FRAME_GET_COMP_LINE (dest, 2, 0), - FRAME_GET_COMP_STRIDE (dest, 2), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - - -static void -convert_UYVY_I420 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src); - gint l1, l2; - - for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { - GET_LINE_OFFSETS (interlaced, i, l1, l2); - - videomixer_video_convert_orc_convert_UYVY_I420 (FRAME_GET_COMP_LINE (dest, - 0, l1), FRAME_GET_COMP_LINE (dest, 0, l2), - FRAME_GET_COMP_LINE (dest, 1, i >> 1), FRAME_GET_COMP_LINE (dest, 2, - i >> 1), FRAME_GET_LINE (src, l1), FRAME_GET_LINE (src, l2), - (width + 1) / 2); - } - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_UYVY_AYUV (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_UYVY_AYUV (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_UYVY_YUY2 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_UYVY_YUY2 (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_UYVY_Y42B (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_UYVY_Y42B (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_UYVY_Y444 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_UYVY_Y444 (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_AYUV_I420 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - /* only for even width/height */ - videomixer_video_convert_orc_convert_AYUV_I420 (FRAME_GET_Y_LINE (dest, 0), - 2 * FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (dest, 1), - 2 * FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - 2 * FRAME_GET_STRIDE (src), FRAME_GET_LINE (src, 1), - 2 * FRAME_GET_STRIDE (src), width / 2, height / 2); -} - -static void -convert_AYUV_YUY2 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - /* only for even width */ - videomixer_video_convert_orc_convert_AYUV_YUY2 (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), width / 2, height); -} - -static void -convert_AYUV_UYVY (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - /* only for even width */ - videomixer_video_convert_orc_convert_AYUV_UYVY (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), width / 2, height); -} - -static void -convert_AYUV_Y42B (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - /* only works for even width */ - videomixer_video_convert_orc_convert_AYUV_Y42B (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), width / 2, height); -} - -static void -convert_AYUV_Y444 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_AYUV_Y444 (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_U_LINE (dest, 0), - FRAME_GET_U_STRIDE (dest), FRAME_GET_V_LINE (dest, 0), - FRAME_GET_V_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), width, height); -} - -static void -convert_Y42B_I420 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_422_420 (FRAME_GET_U_LINE (dest, - 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - 2 * FRAME_GET_U_STRIDE (src), FRAME_GET_U_LINE (src, 1), - 2 * FRAME_GET_U_STRIDE (src), (width + 1) / 2, height / 2); - - videomixer_video_convert_orc_planar_chroma_422_420 (FRAME_GET_V_LINE (dest, - 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - 2 * FRAME_GET_V_STRIDE (src), FRAME_GET_V_LINE (src, 1), - 2 * FRAME_GET_V_STRIDE (src), (width + 1) / 2, height / 2); - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_Y42B_Y444 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_422_444 (FRAME_GET_U_LINE (dest, - 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), (width + 1) / 2, height); - - videomixer_video_convert_orc_planar_chroma_422_444 (FRAME_GET_V_LINE (dest, - 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_Y42B_YUY2 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_Y42B_YUY2 (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_Y42B_UYVY (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_Y42B_UYVY (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), (width + 1) / 2, height); -} - -static void -convert_Y42B_AYUV (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - /* only for even width */ - videomixer_video_convert_orc_convert_Y42B_AYUV (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), width / 2, height); -} - -static void -convert_Y444_I420 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_444_420 (FRAME_GET_U_LINE (dest, - 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - 2 * FRAME_GET_U_STRIDE (src), FRAME_GET_U_LINE (src, 1), - 2 * FRAME_GET_U_STRIDE (src), width / 2, height / 2); - - videomixer_video_convert_orc_planar_chroma_444_420 (FRAME_GET_V_LINE (dest, - 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - 2 * FRAME_GET_V_STRIDE (src), FRAME_GET_V_LINE (src, 1), - 2 * FRAME_GET_V_STRIDE (src), width / 2, height / 2); - - /* now handle last line */ - if (height & 1) { - UNPACK_FRAME (src, convert->tmplines[0], height - 1, width); - PACK_FRAME (dest, convert->tmplines[0], height - 1, width); - } -} - -static void -convert_Y444_Y42B (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), - FRAME_GET_Y_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), width, height); - - videomixer_video_convert_orc_planar_chroma_444_422 (FRAME_GET_U_LINE (dest, - 0), FRAME_GET_U_STRIDE (dest), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), width / 2, height); - - videomixer_video_convert_orc_planar_chroma_444_422 (FRAME_GET_V_LINE (dest, - 0), FRAME_GET_V_STRIDE (dest), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), width / 2, height); -} - -static void -convert_Y444_YUY2 (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_Y444_YUY2 (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), width / 2, height); -} - -static void -convert_Y444_UYVY (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_Y444_UYVY (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), width / 2, height); -} - -static void -convert_Y444_AYUV (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_Y444_AYUV (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_Y_LINE (src, 0), - FRAME_GET_Y_STRIDE (src), FRAME_GET_U_LINE (src, 0), - FRAME_GET_U_STRIDE (src), FRAME_GET_V_LINE (src, 0), - FRAME_GET_V_STRIDE (src), width, height); -} - -#if G_BYTE_ORDER == G_LITTLE_ENDIAN -static void -convert_AYUV_ARGB (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2], - convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2], - width, height); -} - -static void -convert_AYUV_BGRA (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2], - convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2], - width, height); -} - -static void -convert_AYUV_ABGR (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2], - convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2], - width, height); -} - -static void -convert_AYUV_RGBA (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - gint width = convert->width; - gint height = convert->height; - - videomixer_video_convert_orc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0), - FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0), - FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2], - convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2], - width, height); -} - -static void -convert_I420_BGRA (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src) -{ - int i; - gint width = convert->width; - gint height = convert->height; - - for (i = 0; i < height; i++) { - videomixer_video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, i), - FRAME_GET_Y_LINE (src, i), - FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1), - convert->cmatrix[0][0], convert->cmatrix[0][2], - convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2], - width); - } -} -#endif - - - -/* Fast paths */ - -typedef struct -{ - GstVideoFormat in_format; - GstVideoColorMatrix in_matrix; - GstVideoFormat out_format; - GstVideoColorMatrix out_matrix; - gboolean keeps_color_matrix; - gboolean keeps_interlaced; - gboolean needs_color_matrix; - gint width_align, height_align; - void (*convert) (VideoConvert * convert, GstVideoFrame * dest, - const GstVideoFrame * src); -} VideoTransform; - -static const VideoTransform transforms[] = { - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_YUY2}, - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_UYVY}, - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_AYUV}, - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_I420_Y42B}, - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_I420_Y444}, - - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_YUY2}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_UYVY}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_I420_AYUV}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_I420_Y42B}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_I420_Y444}, - - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_YUY2_I420}, - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_YUY2_I420}, - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, convert_UYVY_YUY2}, /* alias */ - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_YUY2_AYUV}, - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_YUY2_Y42B}, - {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_YUY2_Y444}, - - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_I420}, - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_I420}, - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_YUY2}, - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_AYUV}, - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_Y42B}, - {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_UYVY_Y444}, - - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1, - convert_AYUV_I420}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1, - convert_AYUV_I420}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_AYUV_YUY2}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_AYUV_UYVY}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_AYUV_Y42B}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_AYUV_Y444}, - - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_Y42B_I420}, - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0, - convert_Y42B_I420}, - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_Y42B_YUY2}, - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_Y42B_UYVY}, - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_Y42B_AYUV}, - {GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_Y42B_Y444}, - - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0, - convert_Y444_I420}, - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0, - convert_Y444_I420}, - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_Y444_YUY2}, - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_Y444_UYVY}, - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, - convert_Y444_AYUV}, - {GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0, - convert_Y444_Y42B}, - -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ARGB, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, - convert_AYUV_ARGB}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, - convert_AYUV_BGRA}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xRGB, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ARGB}, /* alias */ - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_BGRA}, /* alias */ - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ABGR, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, - convert_AYUV_ABGR}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBA, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, - convert_AYUV_RGBA}, - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xBGR, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ABGR}, /* alias */ - {GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBx, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_RGBA}, /* alias */ - - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0, - convert_I420_BGRA}, - {GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0, - convert_I420_BGRA}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0, - convert_I420_BGRA}, - {GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx, - GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0, - convert_I420_BGRA}, -#endif -}; - -static gboolean -videoconvert_convert_lookup_fastpath (VideoConvert * convert) -{ - int i; - GstVideoFormat in_format, out_format; - GstVideoColorMatrix in_matrix, out_matrix; - gboolean interlaced; - gint width, height; - - in_format = GST_VIDEO_INFO_FORMAT (&convert->in_info); - out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info); - - width = GST_VIDEO_INFO_WIDTH (&convert->in_info); - height = GST_VIDEO_INFO_HEIGHT (&convert->in_info); - - in_matrix = convert->in_info.colorimetry.matrix; - out_matrix = convert->out_info.colorimetry.matrix; - - interlaced = GST_VIDEO_INFO_IS_INTERLACED (&convert->in_info); - interlaced |= GST_VIDEO_INFO_IS_INTERLACED (&convert->out_info); - - for (i = 0; i < sizeof (transforms) / sizeof (transforms[0]); i++) { - if (transforms[i].in_format == in_format && - transforms[i].out_format == out_format && - (transforms[i].keeps_color_matrix || - (transforms[i].in_matrix == in_matrix && - transforms[i].out_matrix == out_matrix)) && - (transforms[i].keeps_interlaced || !interlaced) && - (transforms[i].width_align & width) == 0 && - (transforms[i].height_align & height) == 0) { - GST_DEBUG ("using fastpath"); - if (transforms[i].needs_color_matrix) - if (!videoconvert_convert_compute_matrix (convert)) - goto no_convert; - convert->convert = transforms[i].convert; - alloc_tmplines (convert, 1, GST_VIDEO_INFO_WIDTH (&convert->in_info)); - return TRUE; - } - } - GST_DEBUG ("no fastpath found"); - return FALSE; - -no_convert: - { - GST_DEBUG ("can't create matrix"); - return FALSE; - } -} diff --git a/gst/videomixer/videoconvert.h b/gst/videomixer/videoconvert.h deleted file mode 100644 index e27bc0a8b..000000000 --- a/gst/videomixer/videoconvert.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Video conversion functions - * Copyright (C) 2010 David Schleef <ds@schleef.org> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef __COLORSPACE_H__ -#define __COLORSPACE_H__ - -#include <gst/video/video.h> -#include "gstcms.h" - -G_BEGIN_DECLS - -typedef struct _VideoConvert VideoConvert; - -typedef enum { - DITHER_NONE, - DITHER_VERTERR, - DITHER_HALFTONE -} ColorSpaceDitherMethod; - -struct _VideoConvert { - GstVideoInfo in_info; - GstVideoInfo out_info; - - gint width; - gint height; - - gint in_bits; - gint out_bits; - gint cmatrix[4][4]; - - ColorSpaceDitherMethod dither; - - guint lines; - - guint n_tmplines; - gpointer *tmplines; - guint16 *errline; - - GstVideoChromaResample *upsample; - guint up_n_lines; - gint up_offset; - GstVideoChromaResample *downsample; - guint down_n_lines; - gint down_offset; - - void (*convert) (VideoConvert *convert, GstVideoFrame *dest, const GstVideoFrame *src); - void (*matrix) (VideoConvert *convert, gpointer pixels); - void (*dither16) (VideoConvert *convert, guint16 * pixels, int j); - -}; - -VideoConvert * videomixer_videoconvert_convert_new (GstVideoInfo *in_info, - GstVideoInfo *out_info); -void videomixer_videoconvert_convert_free (VideoConvert * convert); - -void videomixer_videoconvert_convert_set_dither (VideoConvert * convert, int type); - -void videomixer_videoconvert_convert_convert (VideoConvert * convert, - GstVideoFrame *dest, const GstVideoFrame *src); - - -G_END_DECLS - -#endif /* __GST_COLORSPACE_H__ */ diff --git a/gst/videomixer/videomixer2.c b/gst/videomixer/videomixer2.c index 180c24afb..a0c8744db 100644 --- a/gst/videomixer/videomixer2.c +++ b/gst/videomixer/videomixer2.c @@ -84,7 +84,6 @@ #include "videomixer2.h" #include "videomixer2pad.h" -#include "videoconvert.h" #ifdef DISABLE_ORC #define orc_memset memset @@ -435,7 +434,7 @@ gst_videomixer2_update_converters (GstVideoMixer2 * mix) continue; if (pad->convert) - videomixer_videoconvert_convert_free (pad->convert); + gst_video_converter_free (pad->convert); pad->convert = NULL; @@ -448,8 +447,7 @@ gst_videomixer2_update_converters (GstVideoMixer2 * mix) GST_DEBUG_OBJECT (pad, "This pad will be converted from %d to %d", GST_VIDEO_INFO_FORMAT (&pad->info), GST_VIDEO_INFO_FORMAT (&best_info)); - pad->convert = - videomixer_videoconvert_convert_new (&pad->info, &best_info); + pad->convert = gst_video_converter_new (&pad->info, &best_info, NULL); pad->need_conversion_update = TRUE; if (!pad->convert) { g_free (colorimetry); @@ -1140,8 +1138,7 @@ gst_videomixer2_blend_buffers (GstVideoMixer2 * mix, gst_video_frame_map (&converted_frame, &(pad->conversion_info), converted_buf, GST_MAP_READWRITE); - videomixer_videoconvert_convert_convert (pad->convert, &converted_frame, - &frame); + gst_video_converter_frame (pad->convert, &converted_frame, &frame); gst_video_frame_unmap (&frame); } else { converted_frame = frame; @@ -2132,7 +2129,7 @@ gst_videomixer2_release_pad (GstElement * element, GstPad * pad) mixpad = GST_VIDEO_MIXER2_PAD (pad); if (mixpad->convert) - videomixer_videoconvert_convert_free (mixpad->convert); + gst_video_converter_free (mixpad->convert); mixpad->convert = NULL; mix->sinkpads = g_slist_remove (mix->sinkpads, pad); @@ -2181,7 +2178,7 @@ gst_videomixer2_dispose (GObject * o) GstVideoMixer2Pad *mixpad = tmp->data; if (mixpad->convert) - videomixer_videoconvert_convert_free (mixpad->convert); + gst_video_converter_free (mixpad->convert); mixpad->convert = NULL; } diff --git a/gst/videomixer/videomixer2pad.h b/gst/videomixer/videomixer2pad.h index bce0aee53..37711e206 100644 --- a/gst/videomixer/videomixer2pad.h +++ b/gst/videomixer/videomixer2pad.h @@ -26,8 +26,6 @@ #include <gst/base/gstcollectpads.h> -#include "videoconvert.h" - G_BEGIN_DECLS #define GST_TYPE_VIDEO_MIXER2_PAD (gst_videomixer2_pad_get_type()) @@ -69,7 +67,7 @@ struct _GstVideoMixer2Pad GstVideoInfo conversion_info; /* Converter, if NULL no conversion is done */ - VideoConvert *convert; + GstVideoConverter *convert; gboolean need_conversion_update; }; diff --git a/gst/videomixer/videomixerorc-dist.c b/gst/videomixer/videomixerorc-dist.c index 17488e1e8..115b6fcc9 100644 --- a/gst/videomixer/videomixerorc-dist.c +++ b/gst/videomixer/videomixerorc-dist.c @@ -108,125 +108,6 @@ void 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); void 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); -void videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, int n); -void videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * - ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * - ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * - ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * - ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * - ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * - ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, int n); -void videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, - int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5, - int n); /* begin Orc C target preamble */ @@ -522,7 +403,7 @@ video_mixer_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 */ @@ -579,7 +460,7 @@ _backup_video_mixer_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 */ @@ -725,8 +606,9 @@ video_mixer_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]; @@ -850,8 +732,9 @@ _backup_video_mixer_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]; @@ -939,7 +822,7 @@ video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 8, 0, 0, 0, + 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, @@ -957,7 +840,7 @@ video_mixer_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_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"); @@ -1084,8 +967,9 @@ video_mixer_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]; @@ -1212,8 +1096,9 @@ _backup_video_mixer_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]; @@ -1302,7 +1187,7 @@ video_mixer_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, 4, 8, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, + 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, @@ -1321,7 +1206,7 @@ video_mixer_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_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"); @@ -1470,8 +1355,9 @@ video_mixer_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]; @@ -1515,8 +1401,9 @@ video_mixer_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]; @@ -1676,8 +1563,9 @@ _backup_video_mixer_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]; @@ -1721,8 +1609,9 @@ _backup_video_mixer_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]; @@ -1826,7 +1715,7 @@ video_mixer_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride, 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, + 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, @@ -1850,7 +1739,7 @@ video_mixer_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_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"); @@ -2028,8 +1917,9 @@ video_mixer_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]; @@ -2075,8 +1965,9 @@ video_mixer_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]; @@ -2240,8 +2131,9 @@ _backup_video_mixer_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]; @@ -2287,8 +2179,9 @@ _backup_video_mixer_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]; @@ -2392,7 +2285,7 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, 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, + 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, @@ -2418,7 +2311,7 @@ video_mixer_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_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"); @@ -2519,8847 +2412,3 @@ video_mixer_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride, func (ex); } #endif - - -/* videomixer_video_convert_orc_memcpy_2d */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var32; - orc_int8 var33; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: copyb */ - var33 = var32; - /* 2: storeb */ - ptr0[i] = var33; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var32; - orc_int8 var33; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: copyb */ - var33 = var32; - /* 2: storeb */ - ptr0[i] = var33; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 38, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_memcpy_2d); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "videomixer_video_convert_orc_memcpy_2d"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_I420_UYVY */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union16 var39; - - ptr0 = (orc_union32 *) d1; - ptr1 = (orc_union32 *) d2; - ptr4 = (orc_union16 *) s1; - ptr5 = (orc_union16 *) s2; - ptr6 = (orc_int8 *) s3; - ptr7 = (orc_int8 *) s4; - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr6[i]; - /* 1: loadb */ - var34 = ptr7[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var39.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[0]; - _dest.x2[1] = var35.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[1]; - _dest.x2[1] = var35.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - /* 6: loadw */ - var37 = ptr5[i]; - /* 7: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[0]; - _dest.x2[1] = var37.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[1]; - _dest.x2[1] = var37.x2[1]; - var38.x2[1] = _dest.i; - } - /* 8: storel */ - ptr1[i] = var38; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_I420_UYVY (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union16 var39; - - ptr0 = (orc_union32 *) ex->arrays[0]; - ptr1 = (orc_union32 *) ex->arrays[1]; - ptr4 = (orc_union16 *) ex->arrays[4]; - ptr5 = (orc_union16 *) ex->arrays[5]; - ptr6 = (orc_int8 *) ex->arrays[6]; - ptr7 = (orc_int8 *) ex->arrays[7]; - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr6[i]; - /* 1: loadb */ - var34 = ptr7[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var39.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[0]; - _dest.x2[1] = var35.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[1]; - _dest.x2[1] = var35.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - /* 6: loadw */ - var37 = ptr5[i]; - /* 7: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[0]; - _dest.x2[1] = var37.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var39.x2[1]; - _dest.x2[1] = var37.x2[1]; - var38.x2[1] = _dest.i; - } - /* 8: storel */ - ptr1[i] = var38; - } - -} - -void -videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_I420_UYVY); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_I420_UYVY"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_D2] = d2; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->arrays[ORC_VAR_S4] = (void *) s4; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_I420_YUY2 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union16 var39; - - ptr0 = (orc_union32 *) d1; - ptr1 = (orc_union32 *) d2; - ptr4 = (orc_union16 *) s1; - ptr5 = (orc_union16 *) s2; - ptr6 = (orc_int8 *) s3; - ptr7 = (orc_int8 *) s4; - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr6[i]; - /* 1: loadb */ - var34 = ptr7[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var39.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[0]; - _dest.x2[1] = var39.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[1]; - _dest.x2[1] = var39.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - /* 6: loadw */ - var37 = ptr5[i]; - /* 7: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var39.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var39.x2[1]; - var38.x2[1] = _dest.i; - } - /* 8: storel */ - ptr1[i] = var38; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_I420_YUY2 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union16 var39; - - ptr0 = (orc_union32 *) ex->arrays[0]; - ptr1 = (orc_union32 *) ex->arrays[1]; - ptr4 = (orc_union16 *) ex->arrays[4]; - ptr5 = (orc_union16 *) ex->arrays[5]; - ptr6 = (orc_int8 *) ex->arrays[6]; - ptr7 = (orc_int8 *) ex->arrays[7]; - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr6[i]; - /* 1: loadb */ - var34 = ptr7[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var39.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[0]; - _dest.x2[1] = var39.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[1]; - _dest.x2[1] = var39.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - /* 6: loadw */ - var37 = ptr5[i]; - /* 7: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var39.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var39.x2[1]; - var38.x2[1] = _dest.i; - } - /* 8: storel */ - ptr1[i] = var38; - } - -} - -void -videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_I420_YUY2); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_I420_YUY2"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_D2] = d2; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->arrays[ORC_VAR_S4] = (void *) s4; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_I420_AYUV */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, - const guint8 * ORC_RESTRICT s4, int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var36; -#else - orc_int8 var36; -#endif - orc_int8 var37; - orc_union32 var38; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var39; -#else - orc_int8 var39; -#endif - orc_int8 var40; - orc_union32 var41; - orc_int8 var42; - orc_int8 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - - ptr0 = (orc_union32 *) d1; - ptr1 = (orc_union32 *) d2; - ptr4 = (orc_int8 *) s1; - ptr5 = (orc_int8 *) s2; - ptr6 = (orc_int8 *) s3; - ptr7 = (orc_int8 *) s4; - - /* 3: loadpb */ - var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - /* 8: loadpb */ - var39 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadupdb */ - var42 = ptr6[i >> 1]; - /* 1: loadupdb */ - var43 = ptr7[i >> 1]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var42; - _dest.x2[1] = var43; - var44.i = _dest.i; - } - /* 4: loadb */ - var37 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var45.i = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var45.i; - _dest.x2[1] = var44.i; - var38.i = _dest.i; - } - /* 7: storel */ - ptr0[i] = var38; - /* 9: loadb */ - var40 = ptr5[i]; - /* 10: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39; - _dest.x2[1] = var40; - var46.i = _dest.i; - } - /* 11: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var46.i; - _dest.x2[1] = var44.i; - var41.i = _dest.i; - } - /* 12: storel */ - ptr1[i] = var41; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_I420_AYUV (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var36; -#else - orc_int8 var36; -#endif - orc_int8 var37; - orc_union32 var38; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var39; -#else - orc_int8 var39; -#endif - orc_int8 var40; - orc_union32 var41; - orc_int8 var42; - orc_int8 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - - ptr0 = (orc_union32 *) ex->arrays[0]; - ptr1 = (orc_union32 *) ex->arrays[1]; - ptr4 = (orc_int8 *) ex->arrays[4]; - ptr5 = (orc_int8 *) ex->arrays[5]; - ptr6 = (orc_int8 *) ex->arrays[6]; - ptr7 = (orc_int8 *) ex->arrays[7]; - - /* 3: loadpb */ - var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - /* 8: loadpb */ - var39 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadupdb */ - var42 = ptr6[i >> 1]; - /* 1: loadupdb */ - var43 = ptr7[i >> 1]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var42; - _dest.x2[1] = var43; - var44.i = _dest.i; - } - /* 4: loadb */ - var37 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var45.i = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var45.i; - _dest.x2[1] = var44.i; - var38.i = _dest.i; - } - /* 7: storel */ - ptr0[i] = var38; - /* 9: loadb */ - var40 = ptr5[i]; - /* 10: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var39; - _dest.x2[1] = var40; - var46.i = _dest.i; - } - /* 11: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var46.i; - _dest.x2[1] = var44.i; - var41.i = _dest.i; - } - /* 12: storel */ - ptr1[i] = var41; - } - -} - -void -videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, - 1, 45, 34, 6, 45, 35, 7, 196, 32, 34, 35, 196, 33, 16, 4, 195, - 0, 33, 32, 196, 33, 16, 5, 195, 1, 33, 32, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_orc_convert_I420_AYUV); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_I420_AYUV"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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_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_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_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_T2, ORC_VAR_C1, 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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_D2] = d2; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->arrays[ORC_VAR_S4] = (void *) s4; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_YUY2_I420 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, int n) -{ - int i; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union32 *ORC_RESTRICT ptr4; - const orc_union32 *ORC_RESTRICT ptr5; - orc_union32 var35; - orc_union32 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - ptr0 = (orc_union16 *) d1; - ptr1 = (orc_union16 *) d2; - ptr2 = (orc_int8 *) d3; - ptr3 = (orc_int8 *) d4; - ptr4 = (orc_union32 *) s1; - ptr5 = (orc_union32 *) s2; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var40; - /* 3: loadl */ - var36 = ptr5[i]; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var41.x2[0] = _src.x2[1]; - var42.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var41.x2[1] = _src.x2[1]; - var42.x2[1] = _src.x2[0]; - } - /* 5: storew */ - ptr1[i] = var42; - /* 6: avgub */ - var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1; - var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1; - /* 7: splitwb */ - { - orc_union16 _src; - _src.i = var43.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 8: storeb */ - ptr3[i] = var37; - /* 9: storeb */ - ptr2[i] = var38; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_YUY2_I420 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union32 *ORC_RESTRICT ptr4; - const orc_union32 *ORC_RESTRICT ptr5; - orc_union32 var35; - orc_union32 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - ptr0 = (orc_union16 *) ex->arrays[0]; - ptr1 = (orc_union16 *) ex->arrays[1]; - ptr2 = (orc_int8 *) ex->arrays[2]; - ptr3 = (orc_int8 *) ex->arrays[3]; - ptr4 = (orc_union32 *) ex->arrays[4]; - ptr5 = (orc_union32 *) ex->arrays[5]; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var40; - /* 3: loadl */ - var36 = ptr5[i]; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var41.x2[0] = _src.x2[1]; - var42.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var41.x2[1] = _src.x2[1]; - var42.x2[1] = _src.x2[0]; - } - /* 5: storew */ - ptr1[i] = var42; - /* 6: avgub */ - var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1; - var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1; - /* 7: splitwb */ - { - orc_union16 _src; - _src.i = var43.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 8: storeb */ - ptr3[i] = var37; - /* 9: storeb */ - ptr2[i] = var38; - } - -} - -void -videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_YUY2_I420); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_YUY2_I420"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_D2] = d2; - ex->arrays[ORC_VAR_D3] = d3; - ex->arrays[ORC_VAR_D4] = d4; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_UYVY_YUY2 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: swapw */ - var33.x2[0] = ORC_SWAP_W (var32.x2[0]); - var33.x2[1] = ORC_SWAP_W (var32.x2[1]); - /* 2: storel */ - ptr0[i] = var33; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_UYVY_YUY2 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: swapw */ - var33.x2[0] = ORC_SWAP_W (var32.x2[0]); - var33.x2[1] = ORC_SWAP_W (var32.x2[1]); - /* 2: storel */ - ptr0[i] = var33; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_UYVY_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_UYVY_YUY2"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_420_422 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; - orc_int8 var35; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: copyb */ - var33 = var32; - /* 2: storeb */ - ptr0[i] = var33; - /* 3: loadb */ - var34 = ptr4[i]; - /* 4: copyb */ - var35 = var34; - /* 5: storeb */ - ptr1[i] = var35; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_420_422 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; - orc_int8 var35; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: copyb */ - var33 = var32; - /* 2: storeb */ - ptr0[i] = var33; - /* 3: loadb */ - var34 = ptr4[i]; - /* 4: copyb */ - var35 = var34; - /* 5: storeb */ - ptr1[i] = var35; - } - } - -} - -void -videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_420_422); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_420_422"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_420_444 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var33; - orc_union16 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr4[i]; - /* 1: splatbw */ - var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); - /* 2: storew */ - ptr0[i] = var34; - /* 3: storew */ - ptr1[i] = var34; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_420_444 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var33; - orc_union16 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr4[i]; - /* 1: splatbw */ - var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); - /* 2: storew */ - ptr0[i] = var34; - /* 3: storew */ - ptr1[i] = var34; - } - } - -} - -void -videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_420_444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_420_444"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_422_444 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var33; - orc_union16 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr4[i]; - /* 1: splatbw */ - var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); - /* 2: storew */ - ptr0[i] = var34; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_422_444 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var33; - orc_union16 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr4[i]; - /* 1: splatbw */ - var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff); - /* 2: storew */ - ptr0[i] = var34; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_422_444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_422_444"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_444_422 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var34 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var34.i; - var36 = _src.x2[1]; - var37 = _src.x2[0]; - } - /* 2: avgub */ - var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var35; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_444_422 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var34 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var34.i; - var36 = _src.x2[1]; - var37 = _src.x2[0]; - } - /* 2: avgub */ - var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var35; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_444_422); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_444_422"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_444_420 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - orc_union16 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_int8 var39; - orc_int8 var40; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var35 = ptr4[i]; - /* 1: loadw */ - var36 = ptr5[i]; - /* 2: avgub */ - var38.x2[0] = - ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1; - var38.x2[1] = - ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var38.i; - var39 = _src.x2[1]; - var40 = _src.x2[0]; - } - /* 4: avgub */ - var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1; - /* 5: storeb */ - ptr0[i] = var37; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_444_420 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - orc_union16 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_int8 var39; - orc_int8 var40; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var35 = ptr4[i]; - /* 1: loadw */ - var36 = ptr5[i]; - /* 2: avgub */ - var38.x2[0] = - ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1; - var38.x2[1] = - ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var38.i; - var39 = _src.x2[1]; - var40 = _src.x2[0]; - } - /* 4: avgub */ - var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1; - /* 5: storeb */ - ptr0[i] = var37; - } - } - -} - -void -videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_444_420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_444_420"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_planar_chroma_422_420 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: loadb */ - var33 = ptr5[i]; - /* 2: avgub */ - var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var34; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_planar_chroma_422_420 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: loadb */ - var33 = ptr5[i]; - /* 2: avgub */ - var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var34; - } - } - -} - -void -videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 50, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_planar_chroma_422_420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_planar_chroma_422_420"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_YUY2_AYUV */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var36; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var37; -#else - orc_union16 var37; -#endif - orc_union64 var38; - orc_union16 var39; - orc_union16 var40; - orc_union32 var41; - orc_union32 var42; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 2: loadpb */ - var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var36 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 3: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var40.x2[0]; - var41.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var40.x2[1]; - var41.x2[1] = _dest.i; - } - /* 4: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var39.i; - _dest.x2[1] = var39.i; - var42.i = _dest.i; - } - /* 5: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[0]; - _dest.x2[1] = var42.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[1]; - _dest.x2[1] = var42.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storeq */ - ptr0[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_YUY2_AYUV (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var36; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var37; -#else - orc_union16 var37; -#endif - orc_union64 var38; - orc_union16 var39; - orc_union16 var40; - orc_union32 var41; - orc_union32 var42; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 2: loadpb */ - var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var36 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 3: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var40.x2[0]; - var41.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var40.x2[1]; - var41.x2[1] = _dest.i; - } - /* 4: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var39.i; - _dest.x2[1] = var39.i; - var42.i = _dest.i; - } - /* 5: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[0]; - _dest.x2[1] = var42.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[1]; - _dest.x2[1] = var42.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storeq */ - ptr0[i] = var38; - } - } - -} - -void -videomixer_video_convert_orc_convert_YUY2_AYUV (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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 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_videomixer_video_convert_orc_convert_YUY2_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_YUY2_AYUV"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_orc_convert_YUY2_AYUV); - 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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_UYVY_AYUV */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var36; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var37; -#else - orc_union16 var37; -#endif - orc_union64 var38; - orc_union16 var39; - orc_union16 var40; - orc_union32 var41; - orc_union32 var42; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 2: loadpb */ - var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var36 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 3: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var39.x2[0]; - var41.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var39.x2[1]; - var41.x2[1] = _dest.i; - } - /* 4: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var40.i; - _dest.x2[1] = var40.i; - var42.i = _dest.i; - } - /* 5: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[0]; - _dest.x2[1] = var42.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[1]; - _dest.x2[1] = var42.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storeq */ - ptr0[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_UYVY_AYUV (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var36; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var37; -#else - orc_union16 var37; -#endif - orc_union64 var38; - orc_union16 var39; - orc_union16 var40; - orc_union32 var41; - orc_union32 var42; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 2: loadpb */ - var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var36 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 3: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var39.x2[0]; - var41.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var39.x2[1]; - var41.x2[1] = _dest.i; - } - /* 4: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var40.i; - _dest.x2[1] = var40.i; - var42.i = _dest.i; - } - /* 5: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[0]; - _dest.x2[1] = var42.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var41.x2[1]; - _dest.x2[1] = var42.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storeq */ - ptr0[i] = var38; - } - } - -} - -void -videomixer_video_convert_orc_convert_UYVY_AYUV (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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 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_videomixer_video_convert_orc_convert_UYVY_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_UYVY_AYUV"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_orc_convert_UYVY_AYUV); - 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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_YUY2_Y42B */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var33 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var33.x2[0]; - var37.x2[0] = _src.x2[1]; - var34.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var33.x2[1]; - var37.x2[1] = _src.x2[1]; - var34.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var34; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var37.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 4: storeb */ - ptr2[i] = var35; - /* 5: storeb */ - ptr1[i] = var36; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_YUY2_Y42B (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var33 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var33.x2[0]; - var37.x2[0] = _src.x2[1]; - var34.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var33.x2[1]; - var37.x2[1] = _src.x2[1]; - var34.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var34; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var37.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 4: storeb */ - ptr2[i] = var35; - /* 5: storeb */ - ptr1[i] = var36; - } - } - -} - -void -videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_YUY2_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_YUY2_Y42B"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_UYVY_Y42B */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var33 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var33.x2[0]; - var34.x2[0] = _src.x2[1]; - var37.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var33.x2[1]; - var34.x2[1] = _src.x2[1]; - var37.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var34; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var37.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 4: storeb */ - ptr2[i] = var35; - /* 5: storeb */ - ptr1[i] = var36; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_UYVY_Y42B (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_int8 var35; - orc_int8 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var33 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var33.x2[0]; - var34.x2[0] = _src.x2[1]; - var37.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var33.x2[1]; - var34.x2[1] = _src.x2[1]; - var37.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var34; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var37.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 4: storeb */ - ptr2[i] = var35; - /* 5: storeb */ - ptr1[i] = var36; - } - } - -} - -void -videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_UYVY_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_UYVY_Y42B"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_YUY2_Y444 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_union16 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var35; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union16 var39; - orc_int8 var40; - orc_int8 var41; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var36.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var36.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var36; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var39.i; - var40 = _src.x2[1]; - var41 = _src.x2[0]; - } - /* 4: splatbw */ - var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); - /* 5: storew */ - ptr1[i] = var37; - /* 6: splatbw */ - var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); - /* 7: storew */ - ptr2[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_YUY2_Y444 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_union16 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var35; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union16 var39; - orc_int8 var40; - orc_int8 var41; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var36.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var36.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var36; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var39.i; - var40 = _src.x2[1]; - var41 = _src.x2[0]; - } - /* 4: splatbw */ - var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); - /* 5: storew */ - ptr1[i] = var37; - /* 6: splatbw */ - var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); - /* 7: storew */ - ptr2[i] = var38; - } - } - -} - -void -videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_YUY2_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_YUY2_Y444"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_UYVY_Y444 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_union16 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var35; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union16 var39; - orc_int8 var40; - orc_int8 var41; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var36.x2[0] = _src.x2[1]; - var39.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var36.x2[1] = _src.x2[1]; - var39.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var36; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var39.i; - var40 = _src.x2[1]; - var41 = _src.x2[0]; - } - /* 4: splatbw */ - var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); - /* 5: storew */ - ptr1[i] = var37; - /* 6: splatbw */ - var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); - /* 7: storew */ - ptr2[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_UYVY_Y444 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_union16 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var35; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union16 var39; - orc_int8 var40; - orc_int8 var41; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var36.x2[0] = _src.x2[1]; - var39.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var36.x2[1] = _src.x2[1]; - var39.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var36; - /* 3: splitwb */ - { - orc_union16 _src; - _src.i = var39.i; - var40 = _src.x2[1]; - var41 = _src.x2[0]; - } - /* 4: splatbw */ - var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff); - /* 5: storew */ - ptr1[i] = var37; - /* 6: splatbw */ - var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff); - /* 7: storew */ - ptr2[i] = var38; - } - } - -} - -void -videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_UYVY_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_UYVY_Y444"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_UYVY_I420 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, - const guint8 * ORC_RESTRICT s2, int n) -{ - int i; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union32 *ORC_RESTRICT ptr4; - const orc_union32 *ORC_RESTRICT ptr5; - orc_union32 var35; - orc_union32 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - ptr0 = (orc_union16 *) d1; - ptr1 = (orc_union16 *) d2; - ptr2 = (orc_int8 *) d3; - ptr3 = (orc_int8 *) d4; - ptr4 = (orc_union32 *) s1; - ptr5 = (orc_union32 *) s2; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var39; - /* 3: loadl */ - var36 = ptr5[i]; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var41.x2[0] = _src.x2[1]; - var42.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var41.x2[1] = _src.x2[1]; - var42.x2[1] = _src.x2[0]; - } - /* 5: storew */ - ptr1[i] = var41; - /* 6: avgub */ - var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 7: splitwb */ - { - orc_union16 _src; - _src.i = var43.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 8: storeb */ - ptr3[i] = var37; - /* 9: storeb */ - ptr2[i] = var38; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_UYVY_I420 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union32 *ORC_RESTRICT ptr4; - const orc_union32 *ORC_RESTRICT ptr5; - orc_union32 var35; - orc_union32 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - ptr0 = (orc_union16 *) ex->arrays[0]; - ptr1 = (orc_union16 *) ex->arrays[1]; - ptr2 = (orc_int8 *) ex->arrays[2]; - ptr3 = (orc_int8 *) ex->arrays[3]; - ptr4 = (orc_union32 *) ex->arrays[4]; - ptr5 = (orc_union32 *) ex->arrays[5]; - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var35 = ptr4[i]; - /* 1: splitwb */ - { - orc_union16 _src; - _src.i = var35.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var35.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: storew */ - ptr0[i] = var39; - /* 3: loadl */ - var36 = ptr5[i]; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var36.x2[0]; - var41.x2[0] = _src.x2[1]; - var42.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var36.x2[1]; - var41.x2[1] = _src.x2[1]; - var42.x2[1] = _src.x2[0]; - } - /* 5: storew */ - ptr1[i] = var41; - /* 6: avgub */ - var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 7: splitwb */ - { - orc_union16 _src; - _src.i = var43.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 8: storeb */ - ptr3[i] = var37; - /* 9: storeb */ - ptr2[i] = var38; - } - -} - -void -videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, - guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, - guint8 * ORC_RESTRICT d4, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_UYVY_I420); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_UYVY_I420"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_D2] = d2; - ex->arrays[ORC_VAR_D3] = d3; - ex->arrays[ORC_VAR_D4] = d4; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_I420 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, - int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union64 *ORC_RESTRICT ptr4; - const orc_union64 *ORC_RESTRICT ptr5; - orc_union64 var40; - orc_union16 var41; - orc_union64 var42; - orc_union16 var43; - orc_int8 var44; - orc_int8 var45; - orc_union32 var46; - orc_union32 var47; - orc_union32 var48; - orc_union32 var49; - orc_union32 var50; - orc_union16 var51; - orc_union16 var52; - orc_int8 var53; - orc_int8 var54; - orc_int8 var55; - orc_int8 var56; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var40 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var40.x2[0]; - var46.x2[0] = _src.x2[1]; - var47.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var40.x2[1]; - var46.x2[1] = _src.x2[1]; - var47.x2[1] = _src.x2[0]; - } - /* 2: select1wb */ - { - orc_union16 _src; - _src.i = var47.x2[0]; - var41.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var47.x2[1]; - var41.x2[1] = _src.x2[1]; - } - /* 3: storew */ - ptr0[i] = var41; - /* 4: loadq */ - var42 = ptr5[i]; - /* 5: splitlw */ - { - orc_union32 _src; - _src.i = var42.x2[0]; - var48.x2[0] = _src.x2[1]; - var49.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var42.x2[1]; - var48.x2[1] = _src.x2[1]; - var49.x2[1] = _src.x2[0]; - } - /* 6: select1wb */ - { - orc_union16 _src; - _src.i = var49.x2[0]; - var43.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var49.x2[1]; - var43.x2[1] = _src.x2[1]; - } - /* 7: storew */ - ptr1[i] = var43; - /* 8: avgub */ - var50.x4[0] = - ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1; - var50.x4[1] = - ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1; - var50.x4[2] = - ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1; - var50.x4[3] = - ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1; - /* 9: splitwb */ - { - orc_union16 _src; - _src.i = var50.x2[0]; - var51.x2[0] = _src.x2[1]; - var52.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var50.x2[1]; - var51.x2[1] = _src.x2[1]; - var52.x2[1] = _src.x2[0]; - } - /* 10: splitwb */ - { - orc_union16 _src; - _src.i = var52.i; - var53 = _src.x2[1]; - var54 = _src.x2[0]; - } - /* 11: avgub */ - var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1; - /* 12: storeb */ - ptr2[i] = var44; - /* 13: splitwb */ - { - orc_union16 _src; - _src.i = var51.i; - var55 = _src.x2[1]; - var56 = _src.x2[0]; - } - /* 14: avgub */ - var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1; - /* 15: storeb */ - ptr3[i] = var45; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_I420 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_union16 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - orc_int8 *ORC_RESTRICT ptr3; - const orc_union64 *ORC_RESTRICT ptr4; - const orc_union64 *ORC_RESTRICT ptr5; - orc_union64 var40; - orc_union16 var41; - orc_union64 var42; - orc_union16 var43; - orc_int8 var44; - orc_int8 var45; - orc_union32 var46; - orc_union32 var47; - orc_union32 var48; - orc_union32 var49; - orc_union32 var50; - orc_union16 var51; - orc_union16 var52; - orc_int8 var53; - orc_int8 var54; - orc_int8 var55; - orc_int8 var56; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var40 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var40.x2[0]; - var46.x2[0] = _src.x2[1]; - var47.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var40.x2[1]; - var46.x2[1] = _src.x2[1]; - var47.x2[1] = _src.x2[0]; - } - /* 2: select1wb */ - { - orc_union16 _src; - _src.i = var47.x2[0]; - var41.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var47.x2[1]; - var41.x2[1] = _src.x2[1]; - } - /* 3: storew */ - ptr0[i] = var41; - /* 4: loadq */ - var42 = ptr5[i]; - /* 5: splitlw */ - { - orc_union32 _src; - _src.i = var42.x2[0]; - var48.x2[0] = _src.x2[1]; - var49.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var42.x2[1]; - var48.x2[1] = _src.x2[1]; - var49.x2[1] = _src.x2[0]; - } - /* 6: select1wb */ - { - orc_union16 _src; - _src.i = var49.x2[0]; - var43.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var49.x2[1]; - var43.x2[1] = _src.x2[1]; - } - /* 7: storew */ - ptr1[i] = var43; - /* 8: avgub */ - var50.x4[0] = - ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1; - var50.x4[1] = - ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1; - var50.x4[2] = - ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1; - var50.x4[3] = - ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1; - /* 9: splitwb */ - { - orc_union16 _src; - _src.i = var50.x2[0]; - var51.x2[0] = _src.x2[1]; - var52.x2[0] = _src.x2[0]; - } - { - orc_union16 _src; - _src.i = var50.x2[1]; - var51.x2[1] = _src.x2[1]; - var52.x2[1] = _src.x2[0]; - } - /* 10: splitwb */ - { - orc_union16 _src; - _src.i = var52.i; - var53 = _src.x2[1]; - var54 = _src.x2[0]; - } - /* 11: avgub */ - var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1; - /* 12: storeb */ - ptr2[i] = var44; - /* 13: splitwb */ - { - orc_union16 _src; - _src.i = var51.i; - var55 = _src.x2[1]; - var56 = _src.x2[0]; - } - /* 14: avgub */ - var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1; - /* 15: storeb */ - ptr3[i] = var45; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, - int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_AYUV_I420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_I420"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_D4] = d4; - ex->params[ORC_VAR_D4] = d4_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_YUY2 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var37; - orc_union32 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var37 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var37.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var37.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var39.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 3: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 4: select1wb */ - { - orc_union16 _src; - _src.i = var40.x2[0]; - var44.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var40.x2[1]; - var44.x2[1] = _src.x2[1]; - } - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var44.x2[0]; - _dest.x2[1] = var43.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var44.x2[1]; - _dest.x2[1] = var43.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storel */ - ptr0[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_YUY2 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var37; - orc_union32 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var37 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var37.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var37.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var39.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 3: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 4: select1wb */ - { - orc_union16 _src; - _src.i = var40.x2[0]; - var44.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var40.x2[1]; - var44.x2[1] = _src.x2[1]; - } - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var44.x2[0]; - _dest.x2[1] = var43.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var44.x2[1]; - _dest.x2[1] = var43.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storel */ - ptr0[i] = var38; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_AYUV_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_YUY2"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_UYVY */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var37; - orc_union32 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var37 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var37.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var37.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var39.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 3: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 4: select1wb */ - { - orc_union16 _src; - _src.i = var40.x2[0]; - var44.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var40.x2[1]; - var44.x2[1] = _src.x2[1]; - } - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[0]; - _dest.x2[1] = var44.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[1]; - _dest.x2[1] = var44.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storel */ - ptr0[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_UYVY (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var37; - orc_union32 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var37 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var37.x2[0]; - var39.x2[0] = _src.x2[1]; - var40.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var37.x2[1]; - var39.x2[1] = _src.x2[1]; - var40.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var39.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 3: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 4: select1wb */ - { - orc_union16 _src; - _src.i = var40.x2[0]; - var44.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var40.x2[1]; - var44.x2[1] = _src.x2[1]; - } - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[0]; - _dest.x2[1] = var44.x2[0]; - var38.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[1]; - _dest.x2[1] = var44.x2[1]; - var38.x2[1] = _dest.i; - } - /* 6: storel */ - ptr0[i] = var38; - } - } - -} - -void -videomixer_video_convert_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_AYUV_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_UYVY"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_Y42B */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union32 var40; - orc_union32 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var36 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var36.x2[0]; - var40.x2[0] = _src.x2[1]; - var41.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var36.x2[1]; - var40.x2[1] = _src.x2[1]; - var41.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var42.i = _src.x2[1]; - var43.i = _src.x2[0]; - } - /* 3: avgub */ - var44.x2[0] = - ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; - var44.x2[1] = - ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var44.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 5: storeb */ - ptr2[i] = var37; - /* 6: storeb */ - ptr1[i] = var38; - /* 7: select1wb */ - { - orc_union16 _src; - _src.i = var41.x2[0]; - var39.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var41.x2[1]; - var39.x2[1] = _src.x2[1]; - } - /* 8: storew */ - ptr0[i] = var39; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_Y42B (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union16 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union64 *ORC_RESTRICT ptr4; - orc_union64 var36; - orc_int8 var37; - orc_int8 var38; - orc_union16 var39; - orc_union32 var40; - orc_union32 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadq */ - var36 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var36.x2[0]; - var40.x2[0] = _src.x2[1]; - var41.x2[0] = _src.x2[0]; - } - { - orc_union32 _src; - _src.i = var36.x2[1]; - var40.x2[1] = _src.x2[1]; - var41.x2[1] = _src.x2[0]; - } - /* 2: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var42.i = _src.x2[1]; - var43.i = _src.x2[0]; - } - /* 3: avgub */ - var44.x2[0] = - ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1; - var44.x2[1] = - ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1; - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var44.i; - var37 = _src.x2[1]; - var38 = _src.x2[0]; - } - /* 5: storeb */ - ptr2[i] = var37; - /* 6: storeb */ - ptr1[i] = var38; - /* 7: select1wb */ - { - orc_union16 _src; - _src.i = var41.x2[0]; - var39.x2[0] = _src.x2[1]; - } - { - orc_union16 _src; - _src.i = var41.x2[1]; - var39.x2[1] = _src.x2[1]; - } - /* 8: storew */ - ptr0[i] = var39; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_AYUV_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_Y42B"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_Y444 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, - int s1_stride, int n, int m) -{ - int i; - int j; - orc_int8 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j); - ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var34 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var34.i; - var38.i = _src.x2[1]; - var39.i = _src.x2[0]; - } - /* 2: splitwb */ - { - orc_union16 _src; - _src.i = var38.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 3: storeb */ - ptr2[i] = var35; - /* 4: storeb */ - ptr1[i] = var36; - /* 5: select1wb */ - { - orc_union16 _src; - _src.i = var39.i; - var37 = _src.x2[1]; - } - /* 6: storeb */ - ptr0[i] = var37; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_Y444 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - orc_int8 *ORC_RESTRICT ptr1; - orc_int8 *ORC_RESTRICT ptr2; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j); - ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var34 = ptr4[i]; - /* 1: splitlw */ - { - orc_union32 _src; - _src.i = var34.i; - var38.i = _src.x2[1]; - var39.i = _src.x2[0]; - } - /* 2: splitwb */ - { - orc_union16 _src; - _src.i = var38.i; - var35 = _src.x2[1]; - var36 = _src.x2[0]; - } - /* 3: storeb */ - ptr2[i] = var35; - /* 4: storeb */ - ptr1[i] = var36; - /* 5: select1wb */ - { - orc_union16 _src; - _src.i = var39.i; - var37 = _src.x2[1]; - } - /* 6: storeb */ - ptr0[i] = var37; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, - int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, - guint8 * ORC_RESTRICT d3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_AYUV_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_Y444"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_D2] = d2; - ex->params[ORC_VAR_D2] = d2_stride; - ex->arrays[ORC_VAR_D3] = d3; - ex->params[ORC_VAR_D3] = d3_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y42B_YUY2 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr5[i]; - /* 1: loadb */ - var34 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var37.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[0]; - _dest.x2[1] = var37.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[1]; - _dest.x2[1] = var37.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y42B_YUY2 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr5[i]; - /* 1: loadb */ - var34 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var37.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[0]; - _dest.x2[1] = var37.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var35.x2[1]; - _dest.x2[1] = var37.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_Y42B_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y42B_YUY2"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y42B_UYVY */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr5[i]; - /* 1: loadb */ - var34 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var37.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var35.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var35.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y42B_UYVY (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var33; - orc_int8 var34; - orc_union16 var35; - orc_union32 var36; - orc_union16 var37; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var33 = ptr5[i]; - /* 1: loadb */ - var34 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var33; - _dest.x2[1] = var34; - var37.i = _dest.i; - } - /* 3: loadw */ - var35 = ptr4[i]; - /* 4: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[0]; - _dest.x2[1] = var35.x2[0]; - var36.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var37.x2[1]; - _dest.x2[1] = var35.x2[1]; - var36.x2[1] = _dest.i; - } - /* 5: storel */ - ptr0[i] = var36; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_Y42B_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y42B_UYVY"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y42B_AYUV */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var36; - orc_int8 var37; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var38; -#else - orc_union16 var38; -#endif - orc_union16 var39; - orc_union64 var40; - orc_union16 var41; - orc_union32 var42; - orc_union32 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - /* 3: loadpb */ - var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var36 = ptr5[i]; - /* 1: loadb */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var41.i = _dest.i; - } - /* 4: loadw */ - var39 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[0]; - _dest.x2[1] = var39.x2[0]; - var42.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[1]; - _dest.x2[1] = var39.x2[1]; - var42.x2[1] = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.i; - _dest.x2[1] = var41.i; - var43.i = _dest.i; - } - /* 7: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var42.x2[0]; - _dest.x2[1] = var43.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var42.x2[1]; - _dest.x2[1] = var43.x2[1]; - var40.x2[1] = _dest.i; - } - /* 8: storeq */ - ptr0[i] = var40; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y42B_AYUV (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union64 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var36; - orc_int8 var37; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union16 var38; -#else - orc_union16 var38; -#endif - orc_union16 var39; - orc_union64 var40; - orc_union16 var41; - orc_union32 var42; - orc_union32 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - /* 3: loadpb */ - var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var36 = ptr5[i]; - /* 1: loadb */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var41.i = _dest.i; - } - /* 4: loadw */ - var39 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[0]; - _dest.x2[1] = var39.x2[0]; - var42.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[1]; - _dest.x2[1] = var39.x2[1]; - var42.x2[1] = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var41.i; - _dest.x2[1] = var41.i; - var43.i = _dest.i; - } - /* 7: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var42.x2[0]; - _dest.x2[1] = var43.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union32 _dest; - _dest.x2[0] = var42.x2[1]; - _dest.x2[1] = var43.x2[1]; - var40.x2[1] = _dest.i; - } - /* 8: storeq */ - ptr0[i] = var40; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 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_videomixer_video_convert_orc_convert_Y42B_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y42B_AYUV"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y444_YUY2 */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_union16 *ORC_RESTRICT ptr6; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var36 = ptr5[i]; - /* 1: loadw */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[0]; - _dest.x2[1] = var37.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[1]; - _dest.x2[1] = var37.x2[1]; - var40.x2[1] = _dest.i; - } - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 4: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 5: loadw */ - var38 = ptr4[i]; - /* 6: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[0]; - _dest.x2[1] = var43.x2[0]; - var39.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[1]; - _dest.x2[1] = var43.x2[1]; - var39.x2[1] = _dest.i; - } - /* 7: storel */ - ptr0[i] = var39; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y444_YUY2 (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_union16 *ORC_RESTRICT ptr6; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var36 = ptr5[i]; - /* 1: loadw */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[0]; - _dest.x2[1] = var37.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[1]; - _dest.x2[1] = var37.x2[1]; - var40.x2[1] = _dest.i; - } - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 4: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 5: loadw */ - var38 = ptr4[i]; - /* 6: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[0]; - _dest.x2[1] = var43.x2[0]; - var39.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var38.x2[1]; - _dest.x2[1] = var43.x2[1]; - var39.x2[1] = _dest.i; - } - /* 7: storel */ - ptr0[i] = var39; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_Y444_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y444_YUY2"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y444_UYVY */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_union16 *ORC_RESTRICT ptr6; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var36 = ptr5[i]; - /* 1: loadw */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[0]; - _dest.x2[1] = var37.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[1]; - _dest.x2[1] = var37.x2[1]; - var40.x2[1] = _dest.i; - } - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 4: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 5: loadw */ - var38 = ptr4[i]; - /* 6: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[0]; - _dest.x2[1] = var38.x2[0]; - var39.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[1]; - _dest.x2[1] = var38.x2[1]; - var39.x2[1] = _dest.i; - } - /* 7: storel */ - ptr0[i] = var39; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y444_UYVY (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union16 *ORC_RESTRICT ptr4; - const orc_union16 *ORC_RESTRICT ptr5; - const orc_union16 *ORC_RESTRICT ptr6; - orc_union16 var36; - orc_union16 var37; - orc_union16 var38; - orc_union32 var39; - orc_union32 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - - for (i = 0; i < n; i++) { - /* 0: loadw */ - var36 = ptr5[i]; - /* 1: loadw */ - var37 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[0]; - _dest.x2[1] = var37.x2[0]; - var40.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var36.x2[1]; - _dest.x2[1] = var37.x2[1]; - var40.x2[1] = _dest.i; - } - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var40.i; - var41.i = _src.x2[1]; - var42.i = _src.x2[0]; - } - /* 4: avgub */ - var43.x2[0] = - ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1; - var43.x2[1] = - ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1; - /* 5: loadw */ - var38 = ptr4[i]; - /* 6: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[0]; - _dest.x2[1] = var38.x2[0]; - var39.x2[0] = _dest.i; - } - { - orc_union16 _dest; - _dest.x2[0] = var43.x2[1]; - _dest.x2[1] = var38.x2[1]; - var39.x2[1] = _dest.i; - } - /* 7: storel */ - ptr0[i] = var39; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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_videomixer_video_convert_orc_convert_Y444_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y444_UYVY"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_Y444_AYUV */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_stride, - const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var34; - orc_int8 var35; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var36; -#else - orc_int8 var36; -#endif - orc_int8 var37; - orc_union32 var38; - orc_union16 var39; - orc_union16 var40; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j); - ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j); - - /* 3: loadpb */ - var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr5[i]; - /* 1: loadb */ - var35 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var34; - _dest.x2[1] = var35; - var39.i = _dest.i; - } - /* 4: loadb */ - var37 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var40.i = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var40.i; - _dest.x2[1] = var39.i; - var38.i = _dest.i; - } - /* 7: storel */ - ptr0[i] = var38; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_Y444_AYUV (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var34; - orc_int8 var35; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var36; -#else - orc_int8 var36; -#endif - orc_int8 var37; - orc_union32 var38; - orc_union16 var39; - orc_union16 var40; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j); - ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j); - - /* 3: loadpb */ - var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr5[i]; - /* 1: loadb */ - var35 = ptr6[i]; - /* 2: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var34; - _dest.x2[1] = var35; - var39.i = _dest.i; - } - /* 4: loadb */ - var37 = ptr4[i]; - /* 5: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var36; - _dest.x2[1] = var37; - var40.i = _dest.i; - } - /* 6: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var40.i; - _dest.x2[1] = var39.i; - var38.i = _dest.i; - } - /* 7: storel */ - ptr0[i] = var38; - } - } - -} - -void -videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, - const guint8 * ORC_RESTRICT s2, int s2_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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 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_videomixer_video_convert_orc_convert_Y444_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_Y444_AYUV"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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_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); -#endif - - orc_program_compile (p); - c = orc_program_take_code (p); - orc_program_free (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->params[ORC_VAR_S2] = s2_stride; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_S3] = s3_stride; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_ARGB */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = p1; - /* 11: loadpw */ - var49.i = p2; - /* 14: loadpw */ - var50.i = p3; - /* 17: loadpw */ - var51.i = p4; - /* 20: loadpw */ - var52.i = p5; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var59; - _dest.x2[1] = var74; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var75; - _dest.x2[1] = var76; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_ARGB (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = ex->params[24]; - /* 11: loadpw */ - var49.i = ex->params[25]; - /* 14: loadpw */ - var50.i = ex->params[26]; - /* 17: loadpw */ - var51.i = ex->params[27]; - /* 20: loadpw */ - var52.i = ex->params[28]; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var59; - _dest.x2[1] = var74; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var75; - _dest.x2[1] = var76; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 71, 39, 36, 39, 90, 41, 37, 26, 71, - 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40, 90, 36, 38, 28, 71, - 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44, 41, 196, 39, 32, 42, - 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_videomixer_video_convert_orc_convert_AYUV_ARGB); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_ARGB"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - 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, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_T10, 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, "addssw", 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, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - 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, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, 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_T8, ORC_VAR_T1, - ORC_VAR_T11, 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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - ex->params[ORC_VAR_P2] = p2; - ex->params[ORC_VAR_P3] = p3; - ex->params[ORC_VAR_P4] = p4; - ex->params[ORC_VAR_P5] = p5; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_BGRA */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = p1; - /* 11: loadpw */ - var49.i = p2; - /* 14: loadpw */ - var50.i = p3; - /* 17: loadpw */ - var51.i = p4; - /* 20: loadpw */ - var52.i = p5; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var76; - _dest.x2[1] = var75; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var74; - _dest.x2[1] = var59; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_BGRA (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = ex->params[24]; - /* 11: loadpw */ - var49.i = ex->params[25]; - /* 14: loadpw */ - var50.i = ex->params[26]; - /* 17: loadpw */ - var51.i = ex->params[27]; - /* 20: loadpw */ - var52.i = ex->params[28]; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var76; - _dest.x2[1] = var75; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var74; - _dest.x2[1] = var59; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 71, 39, 36, 39, 90, 41, 37, 26, 71, - 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40, 90, 36, 38, 28, 71, - 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44, 41, 196, 41, 44, 43, - 196, 39, 42, 32, 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_videomixer_video_convert_orc_convert_AYUV_BGRA); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_BGRA"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - 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, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_T10, 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, "addssw", 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, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - 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, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, 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_T12, 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, "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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - ex->params[ORC_VAR_P2] = p2; - ex->params[ORC_VAR_P3] = p3; - ex->params[ORC_VAR_P4] = p4; - ex->params[ORC_VAR_P5] = p5; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_ABGR */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = p1; - /* 11: loadpw */ - var49.i = p2; - /* 14: loadpw */ - var50.i = p3; - /* 17: loadpw */ - var51.i = p4; - /* 20: loadpw */ - var52.i = p5; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var59; - _dest.x2[1] = var76; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var75; - _dest.x2[1] = var74; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_ABGR (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = ex->params[24]; - /* 11: loadpw */ - var49.i = ex->params[25]; - /* 14: loadpw */ - var50.i = ex->params[26]; - /* 17: loadpw */ - var51.i = ex->params[27]; - /* 20: loadpw */ - var52.i = ex->params[28]; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var59; - _dest.x2[1] = var76; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var75; - _dest.x2[1] = var74; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 71, 39, 36, 39, 90, 41, 37, 26, 71, - 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40, 90, 36, 38, 28, 71, - 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44, 41, 196, 41, 32, 44, - 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_videomixer_video_convert_orc_convert_AYUV_ABGR); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_ABGR"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - 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, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_T10, 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, "addssw", 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, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - 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, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, 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, "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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - ex->params[ORC_VAR_P2] = p2; - ex->params[ORC_VAR_P3] = p3; - ex->params[ORC_VAR_P4] = p4; - ex->params[ORC_VAR_P5] = p5; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_AYUV_RGBA */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, int p4, int p5, int n, int m) -{ - int i; - int j; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); - ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = p1; - /* 11: loadpw */ - var49.i = p2; - /* 14: loadpw */ - var50.i = p3; - /* 17: loadpw */ - var51.i = p4; - /* 20: loadpw */ - var52.i = p5; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var74; - _dest.x2[1] = var75; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var76; - _dest.x2[1] = var59; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_AYUV_RGBA (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int j; - int n = ex->n; - int m = ex->params[ORC_VAR_A1]; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var46; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var47; -#else - orc_union32 var47; -#endif - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var53; -#else - orc_union32 var53; -#endif - orc_union32 var54; - orc_union32 var55; - orc_union16 var56; - orc_union16 var57; - orc_int8 var58; - orc_int8 var59; - orc_int8 var60; - orc_int8 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_union16 var71; - orc_union16 var72; - orc_union16 var73; - orc_int8 var74; - orc_int8 var75; - orc_int8 var76; - orc_union16 var77; - orc_union16 var78; - orc_union32 var79; - - for (j = 0; j < m; j++) { - ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); - ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); - - /* 1: loadpb */ - var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpw */ - var48.i = ex->params[24]; - /* 11: loadpw */ - var49.i = ex->params[25]; - /* 14: loadpw */ - var50.i = ex->params[26]; - /* 17: loadpw */ - var51.i = ex->params[27]; - /* 20: loadpw */ - var52.i = ex->params[28]; - /* 29: loadpb */ - var53.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var53.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadl */ - var46 = ptr4[i]; - /* 2: subb */ - var55.x4[0] = var46.x4[0] - var47.x4[0]; - var55.x4[1] = var46.x4[1] - var47.x4[1]; - var55.x4[2] = var46.x4[2] - var47.x4[2]; - var55.x4[3] = var46.x4[3] - var47.x4[3]; - /* 3: splitlw */ - { - orc_union32 _src; - _src.i = var55.i; - var56.i = _src.x2[1]; - var57.i = _src.x2[0]; - } - /* 4: splitwb */ - { - orc_union16 _src; - _src.i = var57.i; - var58 = _src.x2[1]; - var59 = _src.x2[0]; - } - /* 5: splitwb */ - { - orc_union16 _src; - _src.i = var56.i; - var60 = _src.x2[1]; - var61 = _src.x2[0]; - } - /* 6: splatbw */ - var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff); - /* 7: splatbw */ - var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff); - /* 8: splatbw */ - var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 10: mulhsw */ - var65.i = (var62.i * var48.i) >> 16; - /* 12: mulhsw */ - var66.i = (var64.i * var49.i) >> 16; - /* 13: addssw */ - var67.i = ORC_CLAMP_SW (var65.i + var66.i); - /* 15: mulhsw */ - var68.i = (var63.i * var50.i) >> 16; - /* 16: addssw */ - var69.i = ORC_CLAMP_SW (var65.i + var68.i); - /* 18: mulhsw */ - var70.i = (var63.i * var51.i) >> 16; - /* 19: addssw */ - var71.i = ORC_CLAMP_SW (var65.i + var70.i); - /* 21: mulhsw */ - var72.i = (var64.i * var52.i) >> 16; - /* 22: addssw */ - var73.i = ORC_CLAMP_SW (var71.i + var72.i); - /* 23: convssswb */ - var74 = ORC_CLAMP_SB (var67.i); - /* 24: convssswb */ - var75 = ORC_CLAMP_SB (var73.i); - /* 25: convssswb */ - var76 = ORC_CLAMP_SB (var69.i); - /* 26: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var74; - _dest.x2[1] = var75; - var77.i = _dest.i; - } - /* 27: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var76; - _dest.x2[1] = var59; - var78.i = _dest.i; - } - /* 28: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var77.i; - _dest.x2[1] = var78.i; - var79.i = _dest.i; - } - /* 30: addb */ - var54.x4[0] = var79.x4[0] + var53.x4[0]; - var54.x4[1] = var79.x4[1] + var53.x4[1]; - var54.x4[2] = var79.x4[2] + var53.x4[2]; - var54.x4[3] = var79.x4[3] + var53.x4[3]; - /* 31: storel */ - ptr0[i] = var54; - } - } - -} - -void -videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, - int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, - int p2, int p3, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 7, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 71, 39, 36, 39, 90, 41, 37, 26, 71, - 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40, 90, 36, 38, 28, 71, - 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44, 41, 196, 39, 42, 43, - 196, 41, 44, 32, 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_videomixer_video_convert_orc_convert_AYUV_RGBA); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_AYUV_RGBA"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8, - 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, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, - ORC_VAR_T10, 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, "addssw", 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, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5, - 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, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9, - ORC_VAR_D1, 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_T8, ORC_VAR_T11, - ORC_VAR_T12, 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, "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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ORC_EXECUTOR_M (ex) = m; - ex->arrays[ORC_VAR_D1] = d1; - ex->params[ORC_VAR_D1] = d1_stride; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->params[ORC_VAR_S1] = s1_stride; - ex->params[ORC_VAR_P1] = p1; - ex->params[ORC_VAR_P2] = p2; - ex->params[ORC_VAR_P3] = p3; - ex->params[ORC_VAR_P4] = p4; - ex->params[ORC_VAR_P5] = p5; - - func = c->exec; - func (ex); -} -#endif - - -/* videomixer_video_convert_orc_convert_I420_BGRA */ -#ifdef DISABLE_ORC -void -videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5, - int n) -{ - int i; - orc_union32 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var42; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var43; -#else - orc_int8 var43; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var44; -#else - orc_int8 var44; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var45; -#else - orc_int8 var45; -#endif - orc_union16 var46; - orc_union16 var47; - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var51; -#else - orc_int8 var51; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var52; -#else - orc_union32 var52; -#endif - orc_union32 var53; - orc_int8 var54; - orc_union16 var55; - orc_int8 var56; - orc_int8 var57; - orc_union16 var58; - orc_int8 var59; - orc_int8 var60; - orc_union16 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_int8 var71; - orc_int8 var72; - orc_int8 var73; - orc_union16 var74; - orc_union16 var75; - orc_union32 var76; - - ptr0 = (orc_union32 *) d1; - ptr4 = (orc_int8 *) s1; - ptr5 = (orc_int8 *) s2; - ptr6 = (orc_int8 *) s3; - - /* 1: loadpb */ - var43 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 5: loadpb */ - var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpb */ - var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 12: loadpw */ - var46.i = p1; - /* 14: loadpw */ - var47.i = p2; - /* 17: loadpw */ - var48.i = p3; - /* 20: loadpw */ - var49.i = p4; - /* 23: loadpw */ - var50.i = p5; - /* 30: loadpb */ - var51 = (int) 0x0000007f; /* 127 or 6.27463e-322f */ - /* 33: loadpb */ - var52.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var42 = ptr4[i]; - /* 2: subb */ - var54 = var42 - var43; - /* 3: splatbw */ - var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff); - /* 4: loadupdb */ - var56 = ptr5[i >> 1]; - /* 6: subb */ - var57 = var56 - var44; - /* 7: splatbw */ - var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff); - /* 8: loadupdb */ - var59 = ptr6[i >> 1]; - /* 10: subb */ - var60 = var59 - var45; - /* 11: splatbw */ - var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 13: mulhsw */ - var62.i = (var55.i * var46.i) >> 16; - /* 15: mulhsw */ - var63.i = (var61.i * var47.i) >> 16; - /* 16: addssw */ - var64.i = ORC_CLAMP_SW (var62.i + var63.i); - /* 18: mulhsw */ - var65.i = (var58.i * var48.i) >> 16; - /* 19: addssw */ - var66.i = ORC_CLAMP_SW (var62.i + var65.i); - /* 21: mulhsw */ - var67.i = (var58.i * var49.i) >> 16; - /* 22: addssw */ - var68.i = ORC_CLAMP_SW (var62.i + var67.i); - /* 24: mulhsw */ - var69.i = (var61.i * var50.i) >> 16; - /* 25: addssw */ - var70.i = ORC_CLAMP_SW (var68.i + var69.i); - /* 26: convssswb */ - var71 = ORC_CLAMP_SB (var64.i); - /* 27: convssswb */ - var72 = ORC_CLAMP_SB (var70.i); - /* 28: convssswb */ - var73 = ORC_CLAMP_SB (var66.i); - /* 29: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var73; - _dest.x2[1] = var72; - var74.i = _dest.i; - } - /* 31: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var71; - _dest.x2[1] = var51; - var75.i = _dest.i; - } - /* 32: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var74.i; - _dest.x2[1] = var75.i; - var76.i = _dest.i; - } - /* 34: addb */ - var53.x4[0] = var76.x4[0] + var52.x4[0]; - var53.x4[1] = var76.x4[1] + var52.x4[1]; - var53.x4[2] = var76.x4[2] + var52.x4[2]; - var53.x4[3] = var76.x4[3] + var52.x4[3]; - /* 35: storel */ - ptr0[i] = var53; - } - -} - -#else -static void -_backup_videomixer_video_convert_orc_convert_I420_BGRA (OrcExecutor * - ORC_RESTRICT ex) -{ - int i; - int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var42; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var43; -#else - orc_int8 var43; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var44; -#else - orc_int8 var44; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var45; -#else - orc_int8 var45; -#endif - orc_union16 var46; - orc_union16 var47; - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_int8 var51; -#else - orc_int8 var51; -#endif -#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var52; -#else - orc_union32 var52; -#endif - orc_union32 var53; - orc_int8 var54; - orc_union16 var55; - orc_int8 var56; - orc_int8 var57; - orc_union16 var58; - orc_int8 var59; - orc_int8 var60; - orc_union16 var61; - orc_union16 var62; - orc_union16 var63; - orc_union16 var64; - orc_union16 var65; - orc_union16 var66; - orc_union16 var67; - orc_union16 var68; - orc_union16 var69; - orc_union16 var70; - orc_int8 var71; - orc_int8 var72; - orc_int8 var73; - orc_union16 var74; - orc_union16 var75; - orc_union32 var76; - - ptr0 = (orc_union32 *) ex->arrays[0]; - ptr4 = (orc_int8 *) ex->arrays[4]; - ptr5 = (orc_int8 *) ex->arrays[5]; - ptr6 = (orc_int8 *) ex->arrays[6]; - - /* 1: loadpb */ - var43 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 5: loadpb */ - var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 9: loadpb */ - var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */ - /* 12: loadpw */ - var46.i = ex->params[24]; - /* 14: loadpw */ - var47.i = ex->params[25]; - /* 17: loadpw */ - var48.i = ex->params[26]; - /* 20: loadpw */ - var49.i = ex->params[27]; - /* 23: loadpw */ - var50.i = ex->params[28]; - /* 30: loadpb */ - var51 = (int) 0x0000007f; /* 127 or 6.27463e-322f */ - /* 33: loadpb */ - var52.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - var52.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */ - - for (i = 0; i < n; i++) { - /* 0: loadb */ - var42 = ptr4[i]; - /* 2: subb */ - var54 = var42 - var43; - /* 3: splatbw */ - var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff); - /* 4: loadupdb */ - var56 = ptr5[i >> 1]; - /* 6: subb */ - var57 = var56 - var44; - /* 7: splatbw */ - var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff); - /* 8: loadupdb */ - var59 = ptr6[i >> 1]; - /* 10: subb */ - var60 = var59 - var45; - /* 11: splatbw */ - var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff); - /* 13: mulhsw */ - var62.i = (var55.i * var46.i) >> 16; - /* 15: mulhsw */ - var63.i = (var61.i * var47.i) >> 16; - /* 16: addssw */ - var64.i = ORC_CLAMP_SW (var62.i + var63.i); - /* 18: mulhsw */ - var65.i = (var58.i * var48.i) >> 16; - /* 19: addssw */ - var66.i = ORC_CLAMP_SW (var62.i + var65.i); - /* 21: mulhsw */ - var67.i = (var58.i * var49.i) >> 16; - /* 22: addssw */ - var68.i = ORC_CLAMP_SW (var62.i + var67.i); - /* 24: mulhsw */ - var69.i = (var61.i * var50.i) >> 16; - /* 25: addssw */ - var70.i = ORC_CLAMP_SW (var68.i + var69.i); - /* 26: convssswb */ - var71 = ORC_CLAMP_SB (var64.i); - /* 27: convssswb */ - var72 = ORC_CLAMP_SB (var70.i); - /* 28: convssswb */ - var73 = ORC_CLAMP_SB (var66.i); - /* 29: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var73; - _dest.x2[1] = var72; - var74.i = _dest.i; - } - /* 31: mergebw */ - { - orc_union16 _dest; - _dest.x2[0] = var71; - _dest.x2[1] = var51; - var75.i = _dest.i; - } - /* 32: mergewl */ - { - orc_union32 _dest; - _dest.x2[0] = var74.i; - _dest.x2[1] = var75.i; - var76.i = _dest.i; - } - /* 34: addb */ - var53.x4[0] = var76.x4[0] + var52.x4[0]; - var53.x4[1] = var76.x4[1] + var52.x4[1]; - var53.x4[2] = var76.x4[2] + var52.x4[2]; - var53.x4[3] = var76.x4[3] + var52.x4[3]; - /* 35: storel */ - ptr0[i] = var53; - } - -} - -void -videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, - const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, - const guint8 * ORC_RESTRICT s3, int p1, 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 *); - - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcProgram *p; - -#if 1 - static const orc_uint8 bc[] = { - 1, 9, 46, 118, 105, 100, 101, 111, 109, 105, 120, 101, 114, 95, 118, - 105, - 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116, 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, 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, 71, 35, 32, 35, 90, 37, - 33, 26, 71, 37, 32, 37, 90, 36, 33, 27, 71, 36, 32, 36, 90, 32, - 34, 28, 71, 36, 36, 32, 159, 38, 35, 159, 39, 36, 159, 40, 37, 196, - 37, 40, 39, 196, 35, 38, 17, 195, 41, 37, 35, 21, 2, 33, 0, 41, - 16, 2, 0, - }; - p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_orc_convert_I420_BGRA); -#else - p = orc_program_new (); - orc_program_set_name (p, - "videomixer_video_convert_orc_convert_I420_BGRA"); - orc_program_set_backup_function (p, - _backup_videomixer_video_convert_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, 0x0000007f, "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_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, "addssw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4, - 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, "addssw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6, - 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, "addssw", 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, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1, - 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, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5, - ORC_VAR_D1, 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, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8, - ORC_VAR_D1); - orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C2, - 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_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 (); - } - ex->arrays[ORC_VAR_A2] = c; - ex->program = 0; - - ex->n = n; - ex->arrays[ORC_VAR_D1] = d1; - ex->arrays[ORC_VAR_S1] = (void *) s1; - ex->arrays[ORC_VAR_S2] = (void *) s2; - ex->arrays[ORC_VAR_S3] = (void *) s3; - ex->params[ORC_VAR_P1] = p1; - ex->params[ORC_VAR_P2] = p2; - ex->params[ORC_VAR_P3] = p3; - ex->params[ORC_VAR_P4] = p4; - ex->params[ORC_VAR_P5] = p5; - - func = c->exec; - func (ex); -} -#endif diff --git a/gst/videomixer/videomixerorc-dist.h b/gst/videomixer/videomixerorc-dist.h index ad35551f4..e0c070f87 100644 --- a/gst/videomixer/videomixerorc-dist.h +++ b/gst/videomixer/videomixerorc-dist.h @@ -87,41 +87,6 @@ void video_mixer_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride, const void 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); void 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); void 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); -void videomixer_video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n); -void videomixer_video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); -void videomixer_video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n); -void videomixer_video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m); -void videomixer_video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5, int n); #ifdef __cplusplus } diff --git a/gst/videomixer/videomixerorc.orc b/gst/videomixer/videomixerorc.orc index 45e0f565a..8ba8237a2 100644 --- a/gst/videomixer/videomixerorc.orc +++ b/gst/videomixer/videomixerorc.orc @@ -219,734 +219,3 @@ andl a, a, a_alpha orl t, t, a storel d, t -# Videoconvert logic, copy from videomixer_videoconvert. -# Remove that when videomixer_videoconvert lands in libgstvideo. - -.function videomixer_video_convert_orc_memcpy_2d -.flags 2d -.dest 1 d1 guint8 -.source 1 s1 guint8 - -copyb d1, s1 - -.function videomixer_video_convert_orc_convert_I420_UYVY -.dest 4 d1 guint8 -.dest 4 d2 guint8 -.source 2 y1 guint8 -.source 2 y2 guint8 -.source 1 u guint8 -.source 1 v guint8 -.temp 2 uv - -mergebw uv, u, v -x2 mergebw d1, uv, y1 -x2 mergebw d2, uv, y2 - - -.function videomixer_video_convert_orc_convert_I420_YUY2 -.dest 4 d1 guint8 -.dest 4 d2 guint8 -.source 2 y1 guint8 -.source 2 y2 guint8 -.source 1 u guint8 -.source 1 v guint8 -.temp 2 uv - -mergebw uv, u, v -x2 mergebw d1, y1, uv -x2 mergebw d2, y2, uv - - - -.function videomixer_video_convert_orc_convert_I420_AYUV -.dest 4 d1 guint8 -.dest 4 d2 guint8 -.source 1 y1 guint8 -.source 1 y2 guint8 -.source 1 u guint8 -.source 1 v guint8 -.const 1 c255 255 -.temp 2 uv -.temp 2 ay -.temp 1 tu -.temp 1 tv - -loadupdb tu, u -loadupdb tv, v -mergebw uv, tu, tv -mergebw ay, c255, y1 -mergewl d1, ay, uv -mergebw ay, c255, y2 -mergewl d2, ay, uv - - -.function videomixer_video_convert_orc_convert_YUY2_I420 -.dest 2 y1 guint8 -.dest 2 y2 guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 4 yuv1 guint8 -.source 4 yuv2 guint8 -.temp 2 t1 -.temp 2 t2 -.temp 2 ty - -x2 splitwb t1, ty, yuv1 -storew y1, ty -x2 splitwb t2, ty, yuv2 -storew y2, ty -x2 avgub t1, t1, t2 -splitwb v, u, t1 - - -.function videomixer_video_convert_orc_convert_UYVY_YUY2 -.flags 2d -.dest 4 yuy2 guint8 -.source 4 uyvy guint8 - -x2 swapw yuy2, uyvy - - -.function videomixer_video_convert_orc_planar_chroma_420_422 -.flags 2d -.dest 1 d1 guint8 -.dest 1 d2 guint8 -.source 1 s guint8 - -copyb d1, s -copyb d2, s - - -.function videomixer_video_convert_orc_planar_chroma_420_444 -.flags 2d -.dest 2 d1 guint8 -.dest 2 d2 guint8 -.source 1 s guint8 -.temp 2 t - -splatbw t, s -storew d1, t -storew d2, t - - -.function videomixer_video_convert_orc_planar_chroma_422_444 -.flags 2d -.dest 2 d1 guint8 -.source 1 s guint8 -.temp 2 t - -splatbw t, s -storew d1, t - - -.function videomixer_video_convert_orc_planar_chroma_444_422 -.flags 2d -.dest 1 d guint8 -.source 2 s guint8 -.temp 1 t1 -.temp 1 t2 - -splitwb t1, t2, s -avgub d, t1, t2 - - -.function videomixer_video_convert_orc_planar_chroma_444_420 -.flags 2d -.dest 1 d guint8 -.source 2 s1 guint8 -.source 2 s2 guint8 -.temp 2 t -.temp 1 t1 -.temp 1 t2 - -x2 avgub t, s1, s2 -splitwb t1, t2, t -avgub d, t1, t2 - - -.function videomixer_video_convert_orc_planar_chroma_422_420 -.flags 2d -.dest 1 d guint8 -.source 1 s1 guint8 -.source 1 s2 guint8 - -avgub d, s1, s2 - - -.function videomixer_video_convert_orc_convert_YUY2_AYUV -.flags 2d -.dest 8 ayuv guint8 -.source 4 yuy2 guint8 -.const 2 c255 0xff -.temp 2 yy -.temp 2 uv -.temp 4 ayay -.temp 4 uvuv - -x2 splitwb uv, yy, yuy2 -x2 mergebw ayay, c255, yy -mergewl uvuv, uv, uv -x2 mergewl ayuv, ayay, uvuv - - -.function videomixer_video_convert_orc_convert_UYVY_AYUV -.flags 2d -.dest 8 ayuv guint8 -.source 4 uyvy guint8 -.const 2 c255 0xff -.temp 2 yy -.temp 2 uv -.temp 4 ayay -.temp 4 uvuv - -x2 splitwb yy, uv, uyvy -x2 mergebw ayay, c255, yy -mergewl uvuv, uv, uv -x2 mergewl ayuv, ayay, uvuv - - -.function videomixer_video_convert_orc_convert_YUY2_Y42B -.flags 2d -.dest 2 y guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 4 yuy2 guint8 -.temp 2 uv - -x2 splitwb uv, y, yuy2 -splitwb v, u, uv - - -.function videomixer_video_convert_orc_convert_UYVY_Y42B -.flags 2d -.dest 2 y guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 4 uyvy guint8 -.temp 2 uv - -x2 splitwb y, uv, uyvy -splitwb v, u, uv - - -.function videomixer_video_convert_orc_convert_YUY2_Y444 -.flags 2d -.dest 2 y guint8 -.dest 2 uu guint8 -.dest 2 vv guint8 -.source 4 yuy2 guint8 -.temp 2 uv -.temp 1 u -.temp 1 v - -x2 splitwb uv, y, yuy2 -splitwb v, u, uv -splatbw uu, u -splatbw vv, v - - -.function videomixer_video_convert_orc_convert_UYVY_Y444 -.flags 2d -.dest 2 y guint8 -.dest 2 uu guint8 -.dest 2 vv guint8 -.source 4 uyvy guint8 -.temp 2 uv -.temp 1 u -.temp 1 v - -x2 splitwb y, uv, uyvy -splitwb v, u, uv -splatbw uu, u -splatbw vv, v - - -.function videomixer_video_convert_orc_convert_UYVY_I420 -.dest 2 y1 guint8 -.dest 2 y2 guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 4 yuv1 guint8 -.source 4 yuv2 guint8 -.temp 2 t1 -.temp 2 t2 -.temp 2 ty - -x2 splitwb ty, t1, yuv1 -storew y1, ty -x2 splitwb ty, t2, yuv2 -storew y2, ty -x2 avgub t1, t1, t2 -splitwb v, u, t1 - - - -.function videomixer_video_convert_orc_convert_AYUV_I420 -.flags 2d -.dest 2 y1 guint8 -.dest 2 y2 guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 8 ayuv1 guint8 -.source 8 ayuv2 guint8 -.temp 4 ay -.temp 4 uv1 -.temp 4 uv2 -.temp 4 uv -.temp 2 uu -.temp 2 vv -.temp 1 t1 -.temp 1 t2 - -x2 splitlw uv1, ay, ayuv1 -x2 select1wb y1, ay -x2 splitlw uv2, ay, ayuv2 -x2 select1wb y2, ay -x4 avgub uv, uv1, uv2 -x2 splitwb vv, uu, uv -splitwb t1, t2, uu -avgub u, t1, t2 -splitwb t1, t2, vv -avgub v, t1, t2 - - - -.function videomixer_video_convert_orc_convert_AYUV_YUY2 -.flags 2d -.dest 4 yuy2 guint8 -.source 8 ayuv guint8 -.temp 2 yy -.temp 2 uv1 -.temp 2 uv2 -.temp 4 ayay -.temp 4 uvuv - -x2 splitlw uvuv, ayay, ayuv -splitlw uv1, uv2, uvuv -x2 avgub uv1, uv1, uv2 -x2 select1wb yy, ayay -x2 mergebw yuy2, yy, uv1 - - -.function videomixer_video_convert_orc_convert_AYUV_UYVY -.flags 2d -.dest 4 yuy2 guint8 -.source 8 ayuv guint8 -.temp 2 yy -.temp 2 uv1 -.temp 2 uv2 -.temp 4 ayay -.temp 4 uvuv - -x2 splitlw uvuv, ayay, ayuv -splitlw uv1, uv2, uvuv -x2 avgub uv1, uv1, uv2 -x2 select1wb yy, ayay -x2 mergebw yuy2, uv1, yy - - - -.function videomixer_video_convert_orc_convert_AYUV_Y42B -.flags 2d -.dest 2 y guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 8 ayuv guint8 -.temp 4 ayay -.temp 4 uvuv -.temp 2 uv1 -.temp 2 uv2 - -x2 splitlw uvuv, ayay, ayuv -splitlw uv1, uv2, uvuv -x2 avgub uv1, uv1, uv2 -splitwb v, u, uv1 -x2 select1wb y, ayay - - -.function videomixer_video_convert_orc_convert_AYUV_Y444 -.flags 2d -.dest 1 y guint8 -.dest 1 u guint8 -.dest 1 v guint8 -.source 4 ayuv guint8 -.temp 2 ay -.temp 2 uv - -splitlw uv, ay, ayuv -splitwb v, u, uv -select1wb y, ay - - -.function videomixer_video_convert_orc_convert_Y42B_YUY2 -.flags 2d -.dest 4 yuy2 guint8 -.source 2 y guint8 -.source 1 u guint8 -.source 1 v guint8 -.temp 2 uv - -mergebw uv, u, v -x2 mergebw yuy2, y, uv - - -.function videomixer_video_convert_orc_convert_Y42B_UYVY -.flags 2d -.dest 4 uyvy guint8 -.source 2 y guint8 -.source 1 u guint8 -.source 1 v guint8 -.temp 2 uv - -mergebw uv, u, v -x2 mergebw uyvy, uv, y - - -.function videomixer_video_convert_orc_convert_Y42B_AYUV -.flags 2d -.dest 8 ayuv guint8 -.source 2 yy guint8 -.source 1 u guint8 -.source 1 v guint8 -.const 1 c255 255 -.temp 2 uv -.temp 2 ay -.temp 4 uvuv -.temp 4 ayay - -mergebw uv, u, v -x2 mergebw ayay, c255, yy -mergewl uvuv, uv, uv -x2 mergewl ayuv, ayay, uvuv - - -.function videomixer_video_convert_orc_convert_Y444_YUY2 -.flags 2d -.dest 4 yuy2 guint8 -.source 2 y guint8 -.source 2 u guint8 -.source 2 v guint8 -.temp 2 uv -.temp 4 uvuv -.temp 2 uv1 -.temp 2 uv2 - -x2 mergebw uvuv, u, v -splitlw uv1, uv2, uvuv -x2 avgub uv, uv1, uv2 -x2 mergebw yuy2, y, uv - - -.function videomixer_video_convert_orc_convert_Y444_UYVY -.flags 2d -.dest 4 uyvy guint8 -.source 2 y guint8 -.source 2 u guint8 -.source 2 v guint8 -.temp 2 uv -.temp 4 uvuv -.temp 2 uv1 -.temp 2 uv2 - -x2 mergebw uvuv, u, v -splitlw uv1, uv2, uvuv -x2 avgub uv, uv1, uv2 -x2 mergebw uyvy, uv, y - - -.function videomixer_video_convert_orc_convert_Y444_AYUV -.flags 2d -.dest 4 ayuv guint8 -.source 1 yy guint8 -.source 1 u guint8 -.source 1 v guint8 -.const 1 c255 255 -.temp 2 uv -.temp 2 ay - -mergebw uv, u, v -mergebw ay, c255, yy -mergewl ayuv, ay, uv - - - -.function videomixer_video_convert_orc_convert_AYUV_ARGB -.flags 2d -.dest 4 argb guint8 -.source 4 ayuv guint8 -.param 2 p1 -.param 2 p2 -.param 2 p3 -.param 2 p4 -.param 2 p5 -.temp 1 a -.temp 1 y -.temp 1 u -.temp 1 v -.temp 2 wy -.temp 2 wu -.temp 2 wv -.temp 2 wr -.temp 2 wg -.temp 2 wb -.temp 1 r -.temp 1 g -.temp 1 b -.temp 4 x -.const 1 c128 128 - -x4 subb x, ayuv, c128 -splitlw wv, wy, x -splitwb y, a, wy -splitwb v, u, wv - -splatbw wy, y -splatbw wu, u -splatbw wv, v - -mulhsw wy, wy, p1 - -mulhsw wr, wv, p2 -addssw wr, wy, wr - -mulhsw wb, wu, p3 -addssw wb, wy, wb - -mulhsw wg, wu, p4 -addssw wg, wy, wg -mulhsw wy, wv, p5 -addssw wg, wg, wy - -convssswb r, wr -convssswb g, wg -convssswb b, wb - -mergebw wr, a, r -mergebw wb, g, b -mergewl x, wr, wb -x4 addb argb, x, c128 - -.function videomixer_video_convert_orc_convert_AYUV_BGRA -.flags 2d -.dest 4 bgra guint8 -.source 4 ayuv guint8 -.param 2 p1 -.param 2 p2 -.param 2 p3 -.param 2 p4 -.param 2 p5 -.temp 1 a -.temp 1 y -.temp 1 u -.temp 1 v -.temp 2 wy -.temp 2 wu -.temp 2 wv -.temp 2 wr -.temp 2 wg -.temp 2 wb -.temp 1 r -.temp 1 g -.temp 1 b -.temp 4 x -.const 1 c128 128 - -x4 subb x, ayuv, c128 -splitlw wv, wy, x -splitwb y, a, wy -splitwb v, u, wv - -splatbw wy, y -splatbw wu, u -splatbw wv, v - -mulhsw wy, wy, p1 - -mulhsw wr, wv, p2 -addssw wr, wy, wr - -mulhsw wb, wu, p3 -addssw wb, wy, wb - -mulhsw wg, wu, p4 -addssw wg, wy, wg -mulhsw wy, wv, p5 -addssw wg, wg, wy - -convssswb r, wr -convssswb g, wg -convssswb b, wb - -mergebw wb, b, g -mergebw wr, r, a -mergewl x, wb, wr -x4 addb bgra, x, c128 - - -.function videomixer_video_convert_orc_convert_AYUV_ABGR -.flags 2d -.dest 4 argb guint8 -.source 4 ayuv guint8 -.param 2 p1 -.param 2 p2 -.param 2 p3 -.param 2 p4 -.param 2 p5 -.temp 1 a -.temp 1 y -.temp 1 u -.temp 1 v -.temp 2 wy -.temp 2 wu -.temp 2 wv -.temp 2 wr -.temp 2 wg -.temp 2 wb -.temp 1 r -.temp 1 g -.temp 1 b -.temp 4 x -.const 1 c128 128 - -x4 subb x, ayuv, c128 -splitlw wv, wy, x -splitwb y, a, wy -splitwb v, u, wv - -splatbw wy, y -splatbw wu, u -splatbw wv, v - -mulhsw wy, wy, p1 - -mulhsw wr, wv, p2 -addssw wr, wy, wr - -mulhsw wb, wu, p3 -addssw wb, wy, wb - -mulhsw wg, wu, p4 -addssw wg, wy, wg -mulhsw wy, wv, p5 -addssw wg, wg, wy - -convssswb r, wr -convssswb g, wg -convssswb b, wb - -mergebw wb, a, b -mergebw wr, g, r -mergewl x, wb, wr -x4 addb argb, x, c128 - -.function videomixer_video_convert_orc_convert_AYUV_RGBA -.flags 2d -.dest 4 argb guint8 -.source 4 ayuv guint8 -.param 2 p1 -.param 2 p2 -.param 2 p3 -.param 2 p4 -.param 2 p5 -.temp 1 a -.temp 1 y -.temp 1 u -.temp 1 v -.temp 2 wy -.temp 2 wu -.temp 2 wv -.temp 2 wr -.temp 2 wg -.temp 2 wb -.temp 1 r -.temp 1 g -.temp 1 b -.temp 4 x -.const 1 c128 128 - -x4 subb x, ayuv, c128 -splitlw wv, wy, x -splitwb y, a, wy -splitwb v, u, wv - -splatbw wy, y -splatbw wu, u -splatbw wv, v - -mulhsw wy, wy, p1 - -mulhsw wr, wv, p2 -addssw wr, wy, wr - -mulhsw wb, wu, p3 -addssw wb, wy, wb - -mulhsw wg, wu, p4 -addssw wg, wy, wg -mulhsw wy, wv, p5 -addssw wg, wg, wy - -convssswb r, wr -convssswb g, wg -convssswb b, wb - -mergebw wr, r, g -mergebw wb, b, a -mergewl x, wr, wb -x4 addb argb, x, c128 - - - -.function videomixer_video_convert_orc_convert_I420_BGRA -.dest 4 argb guint8 -.source 1 y guint8 -.source 1 u guint8 -.source 1 v guint8 -.param 2 p1 -.param 2 p2 -.param 2 p3 -.param 2 p4 -.param 2 p5 -.temp 2 wy -.temp 2 wu -.temp 2 wv -.temp 2 wr -.temp 2 wg -.temp 2 wb -.temp 1 r -.temp 1 g -.temp 1 b -.temp 4 x -.const 1 c128 128 - -subb r, y, c128 -splatbw wy, r -loadupdb r, u -subb r, r, c128 -splatbw wu, r -loadupdb r, v -subb r, r, c128 -splatbw wv, r - -mulhsw wy, wy, p1 - -mulhsw wr, wv, p2 -addssw wr, wy, wr - -mulhsw wb, wu, p3 -addssw wb, wy, wb - -mulhsw wg, wu, p4 -addssw wg, wy, wg -mulhsw wy, wv, p5 -addssw wg, wg, wy - -convssswb r, wr -convssswb g, wg -convssswb b, wb - -mergebw wb, b, g -mergebw wr, r, 127 -mergewl x, wb, wr -x4 addb argb, x, c128 - |