From b2fd20c41677e93d1b41f435738cfdeaf08b304f Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 24 Sep 2014 15:49:42 +0200 Subject: [PATCH] video: move videoconvert code to video library Move the conversion code used in videoconvert to the video library and expose a simple but generic API to do arbitrary conversion. It can currently do colorspace conversion but the plan is to add videoscale to it as well. See https://bugzilla.gnome.org/show_bug.cgi?id=732415 --- docs/libs/gst-plugins-base-libs-sections.txt | 11 + gst-libs/gst/video/Makefile.am | 4 +- .../gst/video/video-convertor.c | 630 +- gst-libs/gst/video/video-convertor.h | 49 + gst-libs/gst/video/video-orc.orc | 730 ++ gst-libs/gst/video/video.h | 1 + gst/videoconvert/Makefile.am | 11 +- gst/videoconvert/gstcms.c | 573 -- gst/videoconvert/gstcms.h | 71 - gst/videoconvert/gstvideoconvert.c | 33 +- gst/videoconvert/gstvideoconvert.h | 5 +- gst/videoconvert/gstvideoconvertorc-dist.c | 8958 ----------------- gst/videoconvert/gstvideoconvertorc-dist.h | 124 - gst/videoconvert/gstvideoconvertorc.orc | 729 -- gst/videoconvert/videoconvert.h | 80 - tests/check/Makefile.am | 10 +- win32/common/libgstvideo.def | 6 + 17 files changed, 1271 insertions(+), 10754 deletions(-) rename gst/videoconvert/videoconvert.c => gst-libs/gst/video/video-convertor.c (75%) create mode 100644 gst-libs/gst/video/video-convertor.h delete mode 100644 gst/videoconvert/gstcms.c delete mode 100644 gst/videoconvert/gstcms.h delete mode 100644 gst/videoconvert/gstvideoconvertorc-dist.c delete mode 100644 gst/videoconvert/gstvideoconvertorc-dist.h delete mode 100644 gst/videoconvert/gstvideoconvertorc.orc delete mode 100644 gst/videoconvert/videoconvert.h diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index 4ad9afd770..82b52d8c83 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -2408,6 +2408,17 @@ GST_VIDEO_TILE_MAKE_STRIDE GST_VIDEO_TILE_X_TILES GST_VIDEO_TILE_Y_TILES +#video-convertor.h + +gst_video_convertor_new +gst_video_convertor_free +gst_video_convertor_get_config +gst_video_convertor_set_config +gst_video_convertor_frame + +gst_video_dither_method_get_type +GST_TYPE_VIDEO_DITHER_METHOD + #video-enumtypes.h gst_color_balance_type_get_type diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am index 3932947f21..f10f64fa3d 100644 --- a/gst-libs/gst/video/Makefile.am +++ b/gst-libs/gst/video/Makefile.am @@ -3,7 +3,7 @@ ORC_SOURCE=video-orc include $(top_srcdir)/common/orc.mak glib_enum_headers = video.h video-format.h video-color.h video-info.h \ - colorbalance.h navigation.h video-chroma.h video-tile.h + colorbalance.h navigation.h video-chroma.h video-tile.h video-convertor.h glib_enum_define = GST_VIDEO glib_gen_prefix = gst_video glib_gen_basename = video @@ -25,6 +25,7 @@ libgstvideo_@GST_API_VERSION@_la_SOURCES = \ video-format.c \ video-chroma.c \ video-color.c \ + video-convertor.c \ video-info.c \ video-frame.c \ video-tile.c \ @@ -53,6 +54,7 @@ libgstvideo_@GST_API_VERSION@include_HEADERS = \ video-format.h \ video-chroma.h \ video-color.h \ + video-convertor.h \ video-info.h \ video-frame.h \ video-tile.h \ diff --git a/gst/videoconvert/videoconvert.c b/gst-libs/gst/video/video-convertor.c similarity index 75% rename from gst/videoconvert/videoconvert.c rename to gst-libs/gst/video/video-convertor.c index a78218b563..02c689e035 100644 --- a/gst/videoconvert/videoconvert.c +++ b/gst-libs/gst/video/video-convertor.c @@ -22,51 +22,132 @@ #include "config.h" #endif -#include "videoconvert.h" +#include "video-convertor.h" #include #include #include -#include "gstvideoconvertorc.h" +#include "video-orc.h" +/** + * SECTION:videoconvertor + * @short_description: Generic video conversion + * + * + * + * This object is used to convert video frames from one format to another. + * The object can perform conversion of: + * + * + * video format + * + * + * video colorspace + * + * + * chroma-siting + * + * + * video size (planned) + * + * + * + */ -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 * -videoconvert_convert_new (GstVideoInfo * in_info, GstVideoInfo * out_info) +struct _GstVideoConvertor { - VideoConvert *convert; + GstVideoInfo in_info; + GstVideoInfo out_info; + + gint width; + gint height; + + gint in_bits; + gint out_bits; + gint cmatrix[4][4]; + + GstStructure *config; + GstVideoDitherMethod 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) (GstVideoConvertor * convert, GstVideoFrame * dest, + const GstVideoFrame * src); + void (*matrix) (GstVideoConvertor * convert, gpointer pixels); + void (*dither16) (GstVideoConvertor * convert, guint16 * pixels, int j); +}; + + +static void video_convertor_generic (GstVideoConvertor * convert, + GstVideoFrame * dest, const GstVideoFrame * src); +static void video_convertor_matrix8 (GstVideoConvertor * convert, + gpointer pixels); +static void video_convertor_matrix16 (GstVideoConvertor * convert, + gpointer pixels); +static gboolean video_convertor_lookup_fastpath (GstVideoConvertor * convert); +static gboolean video_convertor_compute_matrix (GstVideoConvertor * convert); +static gboolean video_convertor_compute_resample (GstVideoConvertor * convert); + +/** + * gst_video_convertor_new: + * @in_info: a #GstVideoInfo + * @out_info: a #GstVideoInfo + * @config: a #GstStructure with configuration options + * + * Create a new converter object to convert between @in_info and @out_info + * with @config. + * + * Returns: a #GstVideoConvertor or %NULL if conversion is not possible. + * + * Since: 1.6 + */ +GstVideoConvertor * +gst_video_convertor_new (GstVideoInfo * in_info, GstVideoInfo * out_info, + GstStructure * config) +{ + GstVideoConvertor *convert; gint width; - convert = g_malloc0 (sizeof (VideoConvert)); + g_return_val_if_fail (in_info != NULL, NULL); + g_return_val_if_fail (out_info != NULL, NULL); + /* FIXME can't do scaling yet */ + g_return_val_if_fail (in_info->width == out_info->width, NULL); + g_return_val_if_fail (in_info->height == out_info->height, NULL); + g_return_val_if_fail (in_info->par_n == out_info->par_n, NULL); + g_return_val_if_fail (in_info->par_d == out_info->par_d, NULL); + /* we won't ever do framerate conversion */ + g_return_val_if_fail (in_info->fps_n == out_info->fps_n, NULL); + g_return_val_if_fail (in_info->fps_d == out_info->fps_d, NULL); + /* we won't ever do deinterlace */ + g_return_val_if_fail (in_info->interlace_mode == out_info->interlace_mode, + NULL); + + convert = g_malloc0 (sizeof (GstVideoConvertor)); 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)) + if (!video_convertor_lookup_fastpath (convert)) { + convert->convert = video_convertor_generic; + if (!video_convertor_compute_matrix (convert)) goto no_convert; - if (!videoconvert_convert_compute_resample (convert)) + if (!video_convertor_compute_resample (convert)) goto no_convert; } @@ -75,21 +156,38 @@ videoconvert_convert_new (GstVideoInfo * in_info, GstVideoInfo * out_info) convert->lines = out_info->finfo->pack_lines; convert->errline = g_malloc0 (sizeof (guint16) * width * 4); + /* default config */ + convert->config = gst_structure_new ("GstVideoConvertor", + "dither", GST_TYPE_VIDEO_DITHER_METHOD, GST_VIDEO_DITHER_NONE, NULL); + + if (config) + gst_video_convertor_set_config (convert, config); + return convert; /* ERRORS */ no_convert: { - videoconvert_convert_free (convert); + gst_video_convertor_free (convert); return NULL; } } +/** + * gst_video_convertor_free: + * @convert: a #GstVideoConvertor + * + * Free @convert + * + * Since: 1.6 + */ void -videoconvert_convert_free (VideoConvert * convert) +gst_video_convertor_free (GstVideoConvertor * convert) { gint i; + g_return_if_fail (convert != NULL); + if (convert->upsample) gst_video_chroma_resample_free (convert->upsample); if (convert->downsample) @@ -103,27 +201,140 @@ videoconvert_convert_free (VideoConvert * convert) g_free (convert); } -void -videoconvert_convert_set_dither (VideoConvert * convert, int type) +static void +video_dither_verterr (GstVideoConvertor * convert, guint16 * pixels, int j) { - 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; + 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 +video_dither_halftone (GstVideoConvertor * 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; + } +} + +/** + * gst_video_convertor_set_config: + * @convert: a #GstVideoConvertor + * @config: (transfer full): a #GstStructure + * + * Set @config as extra configuraion for @convert. + * + * If the parameters in @config can not be set exactly, this function returns + * %FALSE and will try to update as much state as possible. The new state can + * then be retrieved and refined with gst_video_convertor_get_config(). + * + * The config is a GstStructure that can contain the the following fields: + * + * "dither" GST_TYPE_VIDEO_DITHER_METHOD The dithering used when reducing + * colors + * + * Returns: %TRUE when @config could be set. + * + * Since: 1.6 + */ +gboolean +gst_video_convertor_set_config (GstVideoConvertor * convert, + GstStructure * config) +{ + gint dither; + gboolean res = TRUE; + + g_return_val_if_fail (convert != NULL, FALSE); + g_return_val_if_fail (config != NULL, FALSE); + + if (gst_structure_get_enum (config, "dither", GST_TYPE_VIDEO_DITHER_METHOD, + &dither)) { + gboolean update = TRUE; + + switch (dither) { + case GST_VIDEO_DITHER_NONE: + convert->dither16 = NULL; + break; + case GST_VIDEO_DITHER_VERTERR: + convert->dither16 = video_dither_verterr; + break; + case GST_VIDEO_DITHER_HALFTONE: + convert->dither16 = video_dither_halftone; + break; + default: + update = FALSE; + break; + } + if (update) + gst_structure_set (convert->config, "dither", + GST_TYPE_VIDEO_DITHER_METHOD, dither, NULL); + else + res = FALSE; + } + gst_structure_free (config); + + return res; +} + +/** + * gst_video_convertor_get_config: + * @@convert: a #GstVideoConvertor + * + * Get the current configuration of @convert. + * + * Returns: a #GstStructure that remains valid for as long as @convert is valid + * or until gst_video_convertor_set_config() is called. + */ +const GstStructure * +gst_video_convertor_get_config (GstVideoConvertor * convert) +{ + g_return_val_if_fail (convert != NULL, NULL); + + return convert->config; +} + +/** + * gst_video_convertor_frame: + * @convert: a #GstVideoConvertor + * @dest: a #GstVideoFrame + * @src: a #GstVideoFrame + * + * Convert the pixels of @src into @dest using @convert. + * + * Since: 1.6 + */ void -videoconvert_convert_convert (VideoConvert * convert, +gst_video_convertor_frame (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { + g_return_if_fail (convert != NULL); + g_return_if_fail (dest != NULL); + g_return_if_fail (src != NULL); + convert->convert (convert, dest, src); } @@ -131,7 +342,7 @@ videoconvert_convert_convert (VideoConvert * convert, #define SCALE_F ((float) (1 << SCALE)) static void -videoconvert_convert_matrix8 (VideoConvert * convert, gpointer pixels) +video_convertor_matrix8 (GstVideoConvertor * convert, gpointer pixels) { int i; int r, g, b; @@ -157,7 +368,7 @@ videoconvert_convert_matrix8 (VideoConvert * convert, gpointer pixels) } static void -videoconvert_convert_matrix16 (VideoConvert * convert, gpointer pixels) +video_convertor_matrix16 (GstVideoConvertor * convert, gpointer pixels) { int i; int r, g, b; @@ -182,8 +393,121 @@ videoconvert_convert_matrix16 (VideoConvert * convert, gpointer pixels) } } +typedef struct +{ + double m[4][4]; +} ColorMatrix; + +static void +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); + } + } +} + +/* Perform 4x4 matrix multiplication: + * - @dst@ = @a@ * @b@ + * - @dst@ may be a pointer to @a@ andor @b@ + */ +static void +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)); +} + +static void +color_matrix_offset_components (ColorMatrix * m, double a1, double a2, + double a3) +{ + ColorMatrix a; + + color_matrix_set_identity (&a); + a.m[0][3] = a1; + a.m[1][3] = a2; + a.m[2][3] = a3; + color_matrix_multiply (m, &a, m); +} + +static void +color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3) +{ + ColorMatrix a; + + color_matrix_set_identity (&a); + a.m[0][0] = a1; + a.m[1][1] = a2; + a.m[2][2] = a3; + color_matrix_multiply (m, &a, m); +} + +static void +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.}, + } + }; + + color_matrix_multiply (m, &k, m); +} + +static void +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; + + color_matrix_multiply (m, &k, m); +} + static gboolean -videoconvert_convert_compute_matrix (VideoConvert * convert) +video_convertor_compute_matrix (GstVideoConvertor * convert) { GstVideoInfo *in_info, *out_info; ColorMatrix dst; @@ -223,7 +547,7 @@ videoconvert_convert_compute_matrix (VideoConvert * convert) /* 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; + convert->matrix = video_convertor_matrix16; if (GST_VIDEO_FORMAT_INFO_IS_RGB (suinfo)) suinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_ARGB64); @@ -235,7 +559,7 @@ videoconvert_convert_compute_matrix (VideoConvert * convert) else duinfo = gst_video_format_get_info (GST_VIDEO_FORMAT_AYUV64); } else { - convert->matrix = videoconvert_convert_matrix8; + convert->matrix = video_convertor_matrix8; } color_matrix_set_identity (&dst); @@ -308,47 +632,7 @@ no_pack_func: } 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) +alloc_tmplines (GstVideoConvertor * convert, guint lines, gint width) { gint i; @@ -359,7 +643,7 @@ alloc_tmplines (VideoConvert * convert, guint lines, gint width) } static gboolean -videoconvert_convert_compute_resample (VideoConvert * convert) +video_convertor_compute_resample (GstVideoConvertor * convert) { GstVideoInfo *in_info, *out_info; const GstVideoFormatInfo *sfinfo, *dfinfo; @@ -455,7 +739,7 @@ convert_to8 (gpointer line, gint width) frame->info.chroma_site, line, width); static void -videoconvert_convert_generic (VideoConvert * convert, GstVideoFrame * dest, +video_convertor_generic (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int j, k; @@ -629,7 +913,7 @@ videoconvert_convert_generic (VideoConvert * convert, GstVideoFrame * dest, static void -convert_I420_YUY2 (VideoConvert * convert, GstVideoFrame * dest, +convert_I420_YUY2 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -641,7 +925,7 @@ convert_I420_YUY2 (VideoConvert * convert, GstVideoFrame * dest, for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { GET_LINE_OFFSETS (interlaced, i, l1, l2); - video_convert_orc_convert_I420_YUY2 (FRAME_GET_LINE (dest, l1), + video_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), @@ -657,7 +941,7 @@ convert_I420_YUY2 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_I420_UYVY (VideoConvert * convert, GstVideoFrame * dest, +convert_I420_UYVY (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -669,7 +953,7 @@ convert_I420_UYVY (VideoConvert * convert, GstVideoFrame * dest, for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { GET_LINE_OFFSETS (interlaced, i, l1, l2); - video_convert_orc_convert_I420_UYVY (FRAME_GET_LINE (dest, l1), + video_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), @@ -685,7 +969,7 @@ convert_I420_UYVY (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_I420_AYUV (VideoConvert * convert, GstVideoFrame * dest, +convert_I420_AYUV (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -697,7 +981,7 @@ convert_I420_AYUV (VideoConvert * convert, GstVideoFrame * dest, for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { GET_LINE_OFFSETS (interlaced, i, l1, l2); - video_convert_orc_convert_I420_AYUV (FRAME_GET_LINE (dest, l1), + video_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), @@ -712,44 +996,44 @@ convert_I420_AYUV (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_I420_Y42B (VideoConvert * convert, GstVideoFrame * dest, +convert_I420_Y42B (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_420_422 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_420_422 (FRAME_GET_V_LINE (dest, 0), + video_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, +convert_I420_Y444 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_420_444 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_420_444 (FRAME_GET_V_LINE (dest, 0), + video_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); @@ -762,7 +1046,7 @@ convert_I420_Y444 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_YUY2_I420 (VideoConvert * convert, GstVideoFrame * dest, +convert_YUY2_I420 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -774,7 +1058,7 @@ convert_YUY2_I420 (VideoConvert * convert, GstVideoFrame * dest, for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { GET_LINE_OFFSETS (interlaced, i, l1, l2); - video_convert_orc_convert_YUY2_I420 (FRAME_GET_Y_LINE (dest, l1), + video_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), @@ -789,25 +1073,25 @@ convert_YUY2_I420 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_YUY2_AYUV (VideoConvert * convert, GstVideoFrame * dest, +convert_YUY2_AYUV (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_YUY2_AYUV (FRAME_GET_LINE (dest, 0), + video_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, +convert_YUY2_Y42B (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_YUY2_Y42B (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -815,13 +1099,13 @@ convert_YUY2_Y42B (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_YUY2_Y444 (VideoConvert * convert, GstVideoFrame * dest, +convert_YUY2_Y444 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_YUY2_Y444 (FRAME_GET_COMP_LINE (dest, 0, 0), + video_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), @@ -830,7 +1114,7 @@ convert_YUY2_Y444 (VideoConvert * convert, GstVideoFrame * dest, static void -convert_UYVY_I420 (VideoConvert * convert, GstVideoFrame * dest, +convert_UYVY_I420 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -842,7 +1126,7 @@ convert_UYVY_I420 (VideoConvert * convert, GstVideoFrame * dest, for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) { GET_LINE_OFFSETS (interlaced, i, l1, l2); - video_convert_orc_convert_UYVY_I420 (FRAME_GET_COMP_LINE (dest, 0, l1), + video_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), @@ -857,37 +1141,37 @@ convert_UYVY_I420 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_UYVY_AYUV (VideoConvert * convert, GstVideoFrame * dest, +convert_UYVY_AYUV (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_UYVY_AYUV (FRAME_GET_LINE (dest, 0), + video_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, +convert_UYVY_YUY2 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_UYVY_YUY2 (FRAME_GET_LINE (dest, 0), + video_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, +convert_UYVY_Y42B (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_UYVY_Y42B (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -895,13 +1179,13 @@ convert_UYVY_Y42B (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_UYVY_Y444 (VideoConvert * convert, GstVideoFrame * dest, +convert_UYVY_Y444 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_UYVY_Y444 (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -909,14 +1193,14 @@ convert_UYVY_Y444 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_I420 (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_I420 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; /* only for even width/height */ - video_convert_orc_convert_AYUV_I420 (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -926,40 +1210,40 @@ convert_AYUV_I420 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_YUY2 (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_YUY2 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; /* only for even width */ - video_convert_orc_convert_AYUV_YUY2 (FRAME_GET_LINE (dest, 0), + video_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, +convert_AYUV_UYVY (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; /* only for even width */ - video_convert_orc_convert_AYUV_UYVY (FRAME_GET_LINE (dest, 0), + video_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, +convert_AYUV_Y42B (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; /* only works for even width */ - video_convert_orc_convert_AYUV_Y42B (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -967,13 +1251,13 @@ convert_AYUV_Y42B (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_Y444 (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_Y444 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_AYUV_Y444 (FRAME_GET_Y_LINE (dest, 0), + video_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), @@ -981,22 +1265,22 @@ convert_AYUV_Y444 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y42B_I420 (VideoConvert * convert, GstVideoFrame * dest, +convert_Y42B_I420 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_422_420 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_422_420 (FRAME_GET_V_LINE (dest, 0), + video_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); @@ -1009,33 +1293,33 @@ convert_Y42B_I420 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y42B_Y444 (VideoConvert * convert, GstVideoFrame * dest, +convert_Y42B_Y444 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_422_444 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_422_444 (FRAME_GET_V_LINE (dest, 0), + video_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, +convert_Y42B_YUY2 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_Y42B_YUY2 (FRAME_GET_LINE (dest, 0), + video_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), @@ -1043,13 +1327,13 @@ convert_Y42B_YUY2 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y42B_UYVY (VideoConvert * convert, GstVideoFrame * dest, +convert_Y42B_UYVY (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_Y42B_UYVY (FRAME_GET_LINE (dest, 0), + video_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), @@ -1057,14 +1341,14 @@ convert_Y42B_UYVY (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y42B_AYUV (VideoConvert * convert, GstVideoFrame * dest, +convert_Y42B_AYUV (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; /* only for even width */ - video_convert_orc_convert_Y42B_AYUV (FRAME_GET_LINE (dest, 0), + video_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), @@ -1072,22 +1356,22 @@ convert_Y42B_AYUV (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y444_I420 (VideoConvert * convert, GstVideoFrame * dest, +convert_Y444_I420 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_444_420 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_444_420 (FRAME_GET_V_LINE (dest, 0), + video_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); @@ -1100,33 +1384,33 @@ convert_Y444_I420 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y444_Y42B (VideoConvert * convert, GstVideoFrame * dest, +convert_Y444_Y42B (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_memcpy_2d (FRAME_GET_Y_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_444_422 (FRAME_GET_U_LINE (dest, 0), + video_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); - video_convert_orc_planar_chroma_444_422 (FRAME_GET_V_LINE (dest, 0), + video_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, +convert_Y444_YUY2 (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_Y444_YUY2 (FRAME_GET_LINE (dest, 0), + video_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), @@ -1134,13 +1418,13 @@ convert_Y444_YUY2 (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y444_UYVY (VideoConvert * convert, GstVideoFrame * dest, +convert_Y444_UYVY (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_Y444_UYVY (FRAME_GET_LINE (dest, 0), + video_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), @@ -1148,13 +1432,13 @@ convert_Y444_UYVY (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_Y444_AYUV (VideoConvert * convert, GstVideoFrame * dest, +convert_Y444_AYUV (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_Y444_AYUV (FRAME_GET_LINE (dest, 0), + video_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), @@ -1163,13 +1447,13 @@ convert_Y444_AYUV (VideoConvert * convert, GstVideoFrame * dest, #if G_BYTE_ORDER == G_LITTLE_ENDIAN static void -convert_AYUV_ARGB (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_ARGB (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0), + video_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], @@ -1177,13 +1461,13 @@ convert_AYUV_ARGB (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_BGRA (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_BGRA (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0), + video_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], @@ -1191,13 +1475,13 @@ convert_AYUV_BGRA (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_ABGR (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_ABGR (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0), + video_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], @@ -1205,13 +1489,13 @@ convert_AYUV_ABGR (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_AYUV_RGBA (VideoConvert * convert, GstVideoFrame * dest, +convert_AYUV_RGBA (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { gint width = convert->width; gint height = convert->height; - video_convert_orc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0), + video_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], @@ -1219,7 +1503,7 @@ convert_AYUV_RGBA (VideoConvert * convert, GstVideoFrame * dest, } static void -convert_I420_BGRA (VideoConvert * convert, GstVideoFrame * dest, +convert_I420_BGRA (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src) { int i; @@ -1227,7 +1511,7 @@ convert_I420_BGRA (VideoConvert * convert, GstVideoFrame * dest, gint height = convert->height; for (i = 0; i < height; i++) { - video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, i), + video_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], @@ -1251,7 +1535,7 @@ typedef struct gboolean keeps_interlaced; gboolean needs_color_matrix; gint width_align, height_align; - void (*convert) (VideoConvert * convert, GstVideoFrame * dest, + void (*convert) (GstVideoConvertor * convert, GstVideoFrame * dest, const GstVideoFrame * src); } VideoTransform; @@ -1420,7 +1704,7 @@ static const VideoTransform transforms[] = { }; static gboolean -videoconvert_convert_lookup_fastpath (VideoConvert * convert) +video_convertor_lookup_fastpath (GstVideoConvertor * convert) { int i; GstVideoFormat in_format, out_format; @@ -1451,7 +1735,7 @@ videoconvert_convert_lookup_fastpath (VideoConvert * convert) (transforms[i].height_align & height) == 0) { GST_DEBUG ("using fastpath"); if (transforms[i].needs_color_matrix) - if (!videoconvert_convert_compute_matrix (convert)) + if (!video_convertor_compute_matrix (convert)) goto no_convert; convert->convert = transforms[i].convert; alloc_tmplines (convert, 1, GST_VIDEO_INFO_WIDTH (&convert->in_info)); diff --git a/gst-libs/gst/video/video-convertor.h b/gst-libs/gst/video/video-convertor.h new file mode 100644 index 0000000000..43c55c5620 --- /dev/null +++ b/gst-libs/gst/video/video-convertor.h @@ -0,0 +1,49 @@ +/* Video conversion api function + * Copyright (C) 2014 Wim Taymans + * + * 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_VIDEO_CONVERTOR_H__ +#define __GST_VIDEO_CONVERTOR_H__ + +#include + +G_BEGIN_DECLS + +typedef enum { + GST_VIDEO_DITHER_NONE, + GST_VIDEO_DITHER_VERTERR, + GST_VIDEO_DITHER_HALFTONE +} GstVideoDitherMethod; + +typedef struct _GstVideoConvertor GstVideoConvertor; + +GstVideoConvertor * gst_video_convertor_new (GstVideoInfo *in_info, + GstVideoInfo *out_info, + GstStructure *config); +void gst_video_convertor_free (GstVideoConvertor * convert); + +gboolean gst_video_convertor_set_config (GstVideoConvertor * convert, GstStructure *config); +const GstStructure * gst_video_convertor_get_config (GstVideoConvertor * convert); + +void gst_video_convertor_frame (GstVideoConvertor * convert, + GstVideoFrame *dest, const GstVideoFrame *src); + + +G_END_DECLS + +#endif /* __GST_VIDEO_CONVERTOR_H__ */ diff --git a/gst-libs/gst/video/video-orc.orc b/gst-libs/gst/video/video-orc.orc index 1f673271c3..00981c0ebd 100644 --- a/gst-libs/gst/video/video-orc.orc +++ b/gst-libs/gst/video/video-orc.orc @@ -503,3 +503,733 @@ mullw t2, t2, p1 addw t2, t2, 128 convhwb t, t2 addb d1, t, a + + +.function video_orc_memcpy_2d +.flags 2d +.dest 1 d1 guint8 +.source 1 s1 guint8 + +copyb d1, s1 + +.function video_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 video_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 video_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 video_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 video_orc_convert_UYVY_YUY2 +.flags 2d +.dest 4 yuy2 guint8 +.source 4 uyvy guint8 + +x2 swapw yuy2, uyvy + + +.function video_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 video_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 video_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 video_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 video_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 video_orc_planar_chroma_422_420 +.flags 2d +.dest 1 d guint8 +.source 1 s1 guint8 +.source 1 s2 guint8 + +avgub d, s1, s2 + + +.function video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 video_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 + diff --git a/gst-libs/gst/video/video.h b/gst-libs/gst/video/video.h index 0158be0504..803a12a2dc 100644 --- a/gst-libs/gst/video/video.h +++ b/gst-libs/gst/video/video.h @@ -29,6 +29,7 @@ typedef struct _GstVideoAlignment GstVideoAlignment; #include #include #include +#include G_BEGIN_DECLS diff --git a/gst/videoconvert/Makefile.am b/gst/videoconvert/Makefile.am index aed82d4bab..aa449dcd33 100644 --- a/gst/videoconvert/Makefile.am +++ b/gst/videoconvert/Makefile.am @@ -1,24 +1,19 @@ plugin_LTLIBRARIES = libgstvideoconvert.la -ORC_SOURCE=gstvideoconvertorc -include $(top_srcdir)/common/orc.mak - -libgstvideoconvert_la_SOURCES = gstvideoconvert.c videoconvert.c gstcms.c +libgstvideoconvert_la_SOURCES = gstvideoconvert.c nodist_libgstvideoconvert_la_SOURCES = $(ORC_NODIST_SOURCES) libgstvideoconvert_la_CFLAGS = \ $(GST_PLUGINS_BASE_CFLAGS) \ - $(GST_CFLAGS) \ - $(ORC_CFLAGS) + $(GST_CFLAGS) libgstvideoconvert_la_LIBADD = \ $(top_builddir)/gst-libs/gst/video/libgstvideo-$(GST_API_VERSION).la \ $(GST_BASE_LIBS) \ $(GST_LIBS) \ - $(ORC_LIBS) \ $(LIBM) libgstvideoconvert_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstvideoconvert_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -noinst_HEADERS = gstvideoconvert.h videoconvert.h gstcms.h +noinst_HEADERS = gstvideoconvert.h Android.mk: Makefile.am $(BUILT_SOURCES) androgenizer \ diff --git a/gst/videoconvert/gstcms.c b/gst/videoconvert/gstcms.c deleted file mode 100644 index 96a9f70b02..0000000000 --- a/gst/videoconvert/gstcms.c +++ /dev/null @@ -1,573 +0,0 @@ -/* GStreamer - * Copyright (C) 2008 David Schleef - * - * 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 -#include -#include "gstcms.h" - -#include -#include -#include - - -/* our simple CMS */ - -void -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 -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 -color_set (Color * c, double x, double y, double z) -{ - c->v[0] = x; - c->v[1] = y; - c->v[2] = z; -} - -void -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 -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 -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 -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 -color_matrix_offset_components (ColorMatrix * m, double a1, double a2, - double a3) -{ - ColorMatrix a; - - color_matrix_set_identity (&a); - a.m[0][3] = a1; - a.m[1][3] = a2; - a.m[2][3] = a3; - color_matrix_multiply (m, &a, m); -} - -void -color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3) -{ - ColorMatrix a; - - color_matrix_set_identity (&a); - a.m[0][0] = a1; - a.m[1][1] = a2; - a.m[2][2] = a3; - color_matrix_multiply (m, &a, m); -} - -void -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.}, - } - }; - - color_matrix_multiply (m, &k, m); -} - -void -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; - - color_matrix_multiply (m, &k, m); -} - -void -color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst) -{ - /* - * At this point, everything is in YCbCr - * All components are in the range [0,255] - */ - color_matrix_set_identity (dst); - - /* offset required to get input video black to (0.,0.,0.) */ - color_matrix_offset_components (dst, -16, -128, -128); - - /* scale required to get input video black to (0.,0.,0.) */ - 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] */ - color_matrix_YCbCr_to_RGB (dst, 0.2990, 0.1140); /* SD */ - - /* - * We are now in RGB space - */ - -#if 0 - /* scale to output range. */ - color_matrix_scale_components (dst, 255.0, 255.0, 255.0); -#endif -} - -void -color_matrix_build_bt709_to_bt601 (ColorMatrix * dst) -{ - color_matrix_set_identity (dst); - - /* offset required to get input video black to (0.,0.,0.) */ - color_matrix_offset_components (dst, -16, -128, -128); - - /* scale required to get input video black to (0.,0.,0.) */ - 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] */ - color_matrix_YCbCr_to_RGB (dst, 0.2126, 0.0722); /* HD */ - - color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ - - color_matrix_scale_components (dst, 219.0, 224.0, 224.0); - - color_matrix_offset_components (dst, 16, 128, 128); -} - -void -color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst) -{ - color_matrix_set_identity (dst); - - color_matrix_RGB_to_YCbCr (dst, 0.2990, 0.1140); /* SD */ - - color_matrix_scale_components (dst, 219.0, 224.0, 224.0); - - color_matrix_offset_components (dst, 16, 128, 128); - - { - Color c; - int i; - for (i = 7; i >= 0; i--) { - color_set (&c, (i & 2) ? 0.75 : 0.0, (i & 4) ? 0.75 : 0.0, - (i & 1) ? 0.75 : 0.0); - color_matrix_apply (dst, &c, &c); - g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), - rint (c.v[2])); - } - color_set (&c, -0.075, -0.075, -0.075); - color_matrix_apply (dst, &c, &c); - g_print (" { %g, %g, %g },\n", rint (c.v[0]), rint (c.v[1]), - rint (c.v[2])); - color_set (&c, 0.075, 0.075, 0.075); - 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 -color_matrix_invert (ColorMatrix * m) -{ - ColorMatrix tmp; - int i, j; - double det; - - 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 -color_matrix_copy (ColorMatrix * dest, ColorMatrix * src) -{ - memcpy (dest, src, sizeof (ColorMatrix)); -} - -void -color_matrix_transpose (ColorMatrix * m) -{ - int i, j; - ColorMatrix tmp; - - 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 -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; - - color_set (&r, rx, ry, 1.0); - color_xyY_to_XYZ (&r); - color_set (&g, gx, gy, 1.0); - color_xyY_to_XYZ (&g); - color_set (&b, bx, by, 1.0); - color_xyY_to_XYZ (&b); - color_set (&w, wx, wy, 1.0); - color_xyY_to_XYZ (&w); - - 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]; - - color_matrix_dump (dst); - color_matrix_copy (&m, dst); - color_matrix_invert (&m); - color_matrix_dump (&m); - - color_matrix_transpose (&m); - 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]; - - color_matrix_transpose (dst); - color_matrix_dump (dst); - - color_set (&scale, 1, 1, 1); - color_matrix_apply (dst, &scale, &scale); - color_XYZ_to_xyY (&scale); - g_print ("white %g %g %g\n", scale.v[0], scale.v[1], scale.v[2]); - -} - -void -color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst) -{ - /* SMPTE C primaries, SMPTE 170M-2004 */ - 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 */ - color_matrix_build_XYZ (dst, - 0.67, 0.33, 0.21, 0.71, 0.14, 0.08, 0.3127, 0.3290); -#endif -} - -void -color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst) -{ - /* Rec. ITU-R BT.709-5 */ - color_matrix_build_XYZ (dst, - 0.640, 0.330, 0.300, 0.600, 0.150, 0.060, 0.3127, 0.3290); -} - -void -color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst) -{ - /* Dell monitor */ -#if 1 - color_matrix_build_XYZ (dst, - 0.662, 0.329, 0.205, 0.683, 0.146, 0.077, 0.3135, 0.3290); -#endif -#if 0 - color_matrix_build_XYZ (dst, - 0.630, 0.340, 0.310, 0.595, 0.155, 0.070, 0.3127, 0.3290); -#endif - color_matrix_invert (dst); -} - -void -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 -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 -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; - - color_matrix_build_yuv_to_rgb_601 (&bt601_to_rgb); - color_matrix_build_rgb_to_yuv_601 (&bt601_to_yuv); - color_matrix_build_rgb_to_XYZ_601 (&bt601_rgb_to_XYZ); - 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; - color_matrix_apply (&bt601_to_rgb, &c, &c); - color_gamut_clamp (&c, &c); - color_transfer_function_apply (&c, &c); - color_matrix_apply (&bt601_rgb_to_XYZ, &c, &c); - color_matrix_apply (&dell_XYZ_to_rgb, &c, &c); - color_transfer_function_unapply (&c, &c); - color_gamut_clamp (&c, &c); - 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; - - 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; - 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/videoconvert/gstcms.h b/gst/videoconvert/gstcms.h deleted file mode 100644 index f926a44af9..0000000000 --- a/gst/videoconvert/gstcms.h +++ /dev/null @@ -1,71 +0,0 @@ -/* GStreamer - * Copyright (C) 2008 David Schleef - * - * 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 - -G_BEGIN_DECLS - -typedef struct _Color Color; -typedef struct _ColorMatrix ColorMatrix; - -struct _Color -{ - double v[3]; -}; - -struct _ColorMatrix -{ - double m[4][4]; -}; - -void color_xyY_to_XYZ (Color * c); -void color_XYZ_to_xyY (Color * c); -void color_set (Color * c, double x, double y, double z); -void color_matrix_set_identity (ColorMatrix * m); -void color_matrix_dump (ColorMatrix * m); -void color_matrix_multiply (ColorMatrix * dst, ColorMatrix * a, ColorMatrix * b); -void color_matrix_apply (ColorMatrix * m, Color * dest, Color * src); -void color_matrix_offset_components (ColorMatrix * m, double a1, double a2, - double a3); -void color_matrix_scale_components (ColorMatrix * m, double a1, double a2, double a3); -void color_matrix_YCbCr_to_RGB (ColorMatrix * m, double Kr, double Kb); -void color_matrix_RGB_to_YCbCr (ColorMatrix * m, double Kr, double Kb); -void color_matrix_build_yuv_to_rgb_601 (ColorMatrix * dst); -void color_matrix_build_bt709_to_bt601 (ColorMatrix * dst); -void color_matrix_build_rgb_to_yuv_601 (ColorMatrix * dst); -void color_matrix_invert (ColorMatrix * m); -void color_matrix_copy (ColorMatrix * dest, ColorMatrix * src); -void color_matrix_transpose (ColorMatrix * m); -void color_matrix_build_XYZ (ColorMatrix * dst, - double rx, double ry, - double gx, double gy, double bx, double by, double wx, double wy); -void color_matrix_build_rgb_to_XYZ_601 (ColorMatrix * dst); -void color_matrix_build_XYZ_to_rgb_709 (ColorMatrix * dst); -void color_matrix_build_XYZ_to_rgb_dell (ColorMatrix * dst); -void color_transfer_function_apply (Color * dest, Color * src); -void color_transfer_function_unapply (Color * dest, Color * src); -void color_gamut_clamp (Color * dest, Color * src); - -G_END_DECLS - -#endif - diff --git a/gst/videoconvert/gstvideoconvert.c b/gst/videoconvert/gstvideoconvert.c index 34e353539b..3bca13ae8f 100644 --- a/gst/videoconvert/gstvideoconvert.c +++ b/gst/videoconvert/gstvideoconvert.c @@ -90,24 +90,6 @@ static gboolean gst_video_convert_set_info (GstVideoFilter * filter, static GstFlowReturn gst_video_convert_transform_frame (GstVideoFilter * filter, GstVideoFrame * in_frame, GstVideoFrame * out_frame); -static GType -dither_method_get_type (void) -{ - static GType gtype = 0; - - if (gtype == 0) { - static const GEnumValue values[] = { - {DITHER_NONE, "No dithering (default)", "none"}, - {DITHER_VERTERR, "Vertical error propogation", "verterr"}, - {DITHER_HALFTONE, "Half-tone", "halftone"}, - {0, NULL, NULL} - }; - - gtype = g_enum_register_static ("GstVideoConvertDitherMethod", values); - } - return gtype; -} - /* copies the given caps */ static GstCaps * gst_video_convert_caps_remove_format_info (GstCaps * caps) @@ -419,7 +401,7 @@ gst_video_convert_set_info (GstVideoFilter * filter, space = GST_VIDEO_CONVERT_CAST (filter); if (space->convert) { - videoconvert_convert_free (space->convert); + gst_video_convertor_free (space->convert); space->convert = NULL; } @@ -436,7 +418,10 @@ gst_video_convert_set_info (GstVideoFilter * filter, if (in_info->interlace_mode != out_info->interlace_mode) goto format_mismatch; - space->convert = videoconvert_convert_new (in_info, out_info); + + space->convert = gst_video_convertor_new (in_info, out_info, + gst_structure_new ("GstVideoConvertConfig", + "dither", GST_TYPE_VIDEO_DITHER_METHOD, space->dither, NULL)); if (space->convert == NULL) goto no_convert; @@ -464,7 +449,7 @@ gst_video_convert_finalize (GObject * obj) GstVideoConvert *space = GST_VIDEO_CONVERT (obj); if (space->convert) { - videoconvert_convert_free (space->convert); + gst_video_convertor_free (space->convert); } G_OBJECT_CLASS (parent_class)->finalize (obj); @@ -511,7 +496,7 @@ gst_video_convert_class_init (GstVideoConvertClass * klass) g_object_class_install_property (gobject_class, PROP_DITHER, g_param_spec_enum ("dither", "Dither", "Apply dithering while converting", - dither_method_get_type (), DITHER_NONE, + gst_video_dither_method_get_type (), 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } @@ -569,9 +554,7 @@ gst_video_convert_transform_frame (GstVideoFilter * filter, GST_VIDEO_INFO_NAME (&filter->in_info), GST_VIDEO_INFO_NAME (&filter->out_info)); - videoconvert_convert_set_dither (space->convert, space->dither); - - videoconvert_convert_convert (space->convert, out_frame, in_frame); + gst_video_convertor_frame (space->convert, out_frame, in_frame); return GST_FLOW_OK; } diff --git a/gst/videoconvert/gstvideoconvert.h b/gst/videoconvert/gstvideoconvert.h index 00f588c07f..b1834f0bb0 100644 --- a/gst/videoconvert/gstvideoconvert.h +++ b/gst/videoconvert/gstvideoconvert.h @@ -25,7 +25,6 @@ #include #include #include -#include "videoconvert.h" G_BEGIN_DECLS @@ -47,8 +46,8 @@ typedef struct _GstVideoConvertClass GstVideoConvertClass; struct _GstVideoConvert { GstVideoFilter element; - VideoConvert *convert; - gboolean dither; + GstVideoConvertor *convert; + GstVideoDitherMethod dither; }; struct _GstVideoConvertClass diff --git a/gst/videoconvert/gstvideoconvertorc-dist.c b/gst/videoconvert/gstvideoconvertorc-dist.c deleted file mode 100644 index 362f5273ab..0000000000 --- a/gst/videoconvert/gstvideoconvertorc-dist.c +++ /dev/null @@ -1,8958 +0,0 @@ - -/* autogenerated from gstvideoconvertorc.orc */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include - -#ifndef _ORC_INTEGER_TYPEDEFS_ -#define _ORC_INTEGER_TYPEDEFS_ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -typedef int8_t orc_int8; -typedef int16_t orc_int16; -typedef int32_t orc_int32; -typedef int64_t orc_int64; -typedef uint8_t orc_uint8; -typedef uint16_t orc_uint16; -typedef uint32_t orc_uint32; -typedef uint64_t orc_uint64; -#define ORC_UINT64_C(x) UINT64_C(x) -#elif defined(_MSC_VER) -typedef signed __int8 orc_int8; -typedef signed __int16 orc_int16; -typedef signed __int32 orc_int32; -typedef signed __int64 orc_int64; -typedef unsigned __int8 orc_uint8; -typedef unsigned __int16 orc_uint16; -typedef unsigned __int32 orc_uint32; -typedef unsigned __int64 orc_uint64; -#define ORC_UINT64_C(x) (x##Ui64) -#define inline __inline -#else -#include -typedef signed char orc_int8; -typedef short orc_int16; -typedef int orc_int32; -typedef unsigned char orc_uint8; -typedef unsigned short orc_uint16; -typedef unsigned int orc_uint32; -#if INT_MAX == LONG_MAX -typedef long long orc_int64; -typedef unsigned long long orc_uint64; -#define ORC_UINT64_C(x) (x##ULL) -#else -typedef long orc_int64; -typedef unsigned long orc_uint64; -#define ORC_UINT64_C(x) (x##UL) -#endif -#endif -typedef union -{ - orc_int16 i; - orc_int8 x2[2]; -} orc_union16; -typedef union -{ - orc_int32 i; - float f; - orc_int16 x2[2]; - orc_int8 x4[4]; -} orc_union32; -typedef union -{ - orc_int64 i; - double f; - orc_int32 x2[2]; - float x2f[2]; - orc_int16 x4[4]; -} orc_union64; -#endif -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif - -#ifndef ORC_INTERNAL -#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -#define ORC_INTERNAL __hidden -#elif defined (__GNUC__) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#else -#define ORC_INTERNAL -#endif -#endif - - -#ifndef DISABLE_ORC -#include -#endif -void 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 */ -#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) -#define ORC_ABS(a) ((a)<0 ? -(a) : (a)) -#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b)) -#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b)) -#define ORC_SB_MAX 127 -#define ORC_SB_MIN (-1-ORC_SB_MAX) -#define ORC_UB_MAX 255 -#define ORC_UB_MIN 0 -#define ORC_SW_MAX 32767 -#define ORC_SW_MIN (-1-ORC_SW_MAX) -#define ORC_UW_MAX 65535 -#define ORC_UW_MIN 0 -#define ORC_SL_MAX 2147483647 -#define ORC_SL_MIN (-1-ORC_SL_MAX) -#define ORC_UL_MAX 4294967295U -#define ORC_UL_MIN 0 -#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX) -#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX) -#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX) -#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX) -#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX) -#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) -#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8)) -#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24)) -#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56)) -#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) -#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) -#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff))) -#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0)) -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif -/* end Orc C target preamble */ - - - -/* video_convert_orc_memcpy_2d */ -#ifdef DISABLE_ORC -void -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_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 -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, 27, 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_video_convert_orc_memcpy_2d); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_memcpy_2d"); - orc_program_set_backup_function (p, _backup_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 - - -/* video_convert_orc_convert_I420_UYVY */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_I420_UYVY); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_I420_UYVY"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_I420_YUY2 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_I420_YUY2); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_I420_YUY2"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_I420_AYUV */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_I420_AYUV); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_I420_AYUV"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_YUY2_I420 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_YUY2_I420); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_YUY2_I420"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_UYVY_YUY2 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_UYVY_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_UYVY_YUY2"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_420_422 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_420_422); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_420_422"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_420_444 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_420_444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_420_444"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_422_444 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_422_444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_422_444"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_444_422 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_444_422); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_444_422"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_444_420 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_444_420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_444_420"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_planar_chroma_422_420 */ -#ifdef DISABLE_ORC -void -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_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 -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, 39, 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_video_convert_orc_planar_chroma_422_420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_planar_chroma_422_420"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_YUY2_AYUV */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_YUY2_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_YUY2_AYUV"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_UYVY_AYUV */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_UYVY_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_UYVY_AYUV"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_YUY2_Y42B */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_YUY2_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y42B"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_UYVY_Y42B */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_UYVY_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y42B"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_YUY2_Y444 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_YUY2_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y444"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_UYVY_Y444 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_UYVY_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y444"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_UYVY_I420 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_UYVY_I420); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_UYVY_I420"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_I420 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_I420); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_I420"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_YUY2 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_YUY2"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_UYVY */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_UYVY"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_Y42B */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_Y42B); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y42B"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_Y444 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_Y444); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y444"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y42B_YUY2 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y42B_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y42B_YUY2"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y42B_UYVY */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y42B_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y42B_UYVY"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y42B_AYUV */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y42B_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y42B_AYUV"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y444_YUY2 */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y444_YUY2); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y444_YUY2"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y444_UYVY */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y444_UYVY); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y444_UYVY"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_Y444_AYUV */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_Y444_AYUV); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_Y444_AYUV"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_ARGB */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_ARGB); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_ARGB"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_BGRA */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_BGRA); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_BGRA"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_ABGR */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_ABGR); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_ABGR"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_AYUV_RGBA */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_AYUV_RGBA); -#else - p = orc_program_new (); - orc_program_set_2d (p); - orc_program_set_name (p, "video_convert_orc_convert_AYUV_RGBA"); - orc_program_set_backup_function (p, - _backup_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 - - -/* video_convert_orc_convert_I420_BGRA */ -#ifdef DISABLE_ORC -void -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_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 -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, 35, 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_video_convert_orc_convert_I420_BGRA); -#else - p = orc_program_new (); - orc_program_set_name (p, "video_convert_orc_convert_I420_BGRA"); - orc_program_set_backup_function (p, - _backup_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/videoconvert/gstvideoconvertorc-dist.h b/gst/videoconvert/gstvideoconvertorc-dist.h deleted file mode 100644 index b4981d1022..0000000000 --- a/gst/videoconvert/gstvideoconvertorc-dist.h +++ /dev/null @@ -1,124 +0,0 @@ - -/* autogenerated from gstvideoconvertorc.orc */ - -#ifndef _GSTVIDEOCONVERTORC_H_ -#define _GSTVIDEOCONVERTORC_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - - -#ifndef _ORC_INTEGER_TYPEDEFS_ -#define _ORC_INTEGER_TYPEDEFS_ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -typedef int8_t orc_int8; -typedef int16_t orc_int16; -typedef int32_t orc_int32; -typedef int64_t orc_int64; -typedef uint8_t orc_uint8; -typedef uint16_t orc_uint16; -typedef uint32_t orc_uint32; -typedef uint64_t orc_uint64; -#define ORC_UINT64_C(x) UINT64_C(x) -#elif defined(_MSC_VER) -typedef signed __int8 orc_int8; -typedef signed __int16 orc_int16; -typedef signed __int32 orc_int32; -typedef signed __int64 orc_int64; -typedef unsigned __int8 orc_uint8; -typedef unsigned __int16 orc_uint16; -typedef unsigned __int32 orc_uint32; -typedef unsigned __int64 orc_uint64; -#define ORC_UINT64_C(x) (x##Ui64) -#define inline __inline -#else -#include -typedef signed char orc_int8; -typedef short orc_int16; -typedef int orc_int32; -typedef unsigned char orc_uint8; -typedef unsigned short orc_uint16; -typedef unsigned int orc_uint32; -#if INT_MAX == LONG_MAX -typedef long long orc_int64; -typedef unsigned long long orc_uint64; -#define ORC_UINT64_C(x) (x##ULL) -#else -typedef long orc_int64; -typedef unsigned long orc_uint64; -#define ORC_UINT64_C(x) (x##UL) -#endif -#endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 x4[4]; } orc_union64; -#endif -#ifndef ORC_RESTRICT -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif -#endif - -#ifndef ORC_INTERNAL -#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) -#define ORC_INTERNAL __hidden -#elif defined (__GNUC__) -#define ORC_INTERNAL __attribute__((visibility("hidden"))) -#else -#define ORC_INTERNAL -#endif -#endif - -void 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 -} -#endif - -#endif - diff --git a/gst/videoconvert/gstvideoconvertorc.orc b/gst/videoconvert/gstvideoconvertorc.orc deleted file mode 100644 index 29a1998970..0000000000 --- a/gst/videoconvert/gstvideoconvertorc.orc +++ /dev/null @@ -1,729 +0,0 @@ - -.function video_convert_orc_memcpy_2d -.flags 2d -.dest 1 d1 guint8 -.source 1 s1 guint8 - -copyb d1, s1 - -.function 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 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 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 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 video_convert_orc_convert_UYVY_YUY2 -.flags 2d -.dest 4 yuy2 guint8 -.source 4 uyvy guint8 - -x2 swapw yuy2, uyvy - - -.function 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 - diff --git a/gst/videoconvert/videoconvert.h b/gst/videoconvert/videoconvert.h deleted file mode 100644 index bc0aa7a00e..0000000000 --- a/gst/videoconvert/videoconvert.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Video conversion functions - * Copyright (C) 2010 David Schleef - * - * 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 -#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 * videoconvert_convert_new (GstVideoInfo *in_info, - GstVideoInfo *out_info); -void videoconvert_convert_free (VideoConvert * convert); - -void videoconvert_convert_set_dither (VideoConvert * convert, int type); - -void videoconvert_convert_convert (VideoConvert * convert, - GstVideoFrame *dest, const GstVideoFrame *src); - - -G_END_DECLS - -#endif /* __GST_COLORSPACE_H__ */ diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 2168baa99d..698bad4734 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -140,8 +140,7 @@ check_adder = endif if HAVE_ORC -check_orc = orc/video orc/audio orc/adder orc/audioconvert orc/volume orc/videoscale orc/videotestsrc \ - orc/videoconvert +check_orc = orc/video orc/audio orc/adder orc/audioconvert orc/volume orc/videoscale orc/videotestsrc else check_orc = endif @@ -638,9 +637,6 @@ nodist_orc_videoscale_SOURCES = orc/videoscale.c orc_videotestsrc_CFLAGS = $(ORC_CFLAGS) orc_videotestsrc_LDADD = $(ORC_LIBS) -lorc-test-0.4 nodist_orc_videotestsrc_SOURCES = orc/videotestsrc.c -orc_videoconvert_CFLAGS = $(ORC_CFLAGS) -orc_videoconvert_LDADD = $(ORC_LIBS) -lorc-test-0.4 -nodist_orc_videoconvert_SOURCES = orc/videoconvert.c orc/video.c: $(top_srcdir)/gst-libs/gst/video/video-orc.orc $(MKDIR_P) orc/ @@ -670,10 +666,6 @@ orc/videotestsrc.c: $(top_srcdir)/gst/videotestsrc/gstvideotestsrcorc.orc $(MKDIR_P) orc/ $(ORCC) --test -o $@ $< -orc/videoconvert.c: $(top_srcdir)/gst/videoconvert/gstvideoconvertorc.orc - $(MKDIR_P) orc/ - $(ORCC) --test -o $@ $< - distclean-local-orc: rm -rf orc diff --git a/win32/common/libgstvideo.def b/win32/common/libgstvideo.def index b0477b73a5..da23cc38fa 100644 --- a/win32/common/libgstvideo.def +++ b/win32/common/libgstvideo.def @@ -81,6 +81,11 @@ EXPORTS gst_video_colorimetry_to_string gst_video_convert_sample gst_video_convert_sample_async + gst_video_convertor_frame + gst_video_convertor_free + gst_video_convertor_get_config + gst_video_convertor_new + gst_video_convertor_set_config gst_video_crop_meta_api_get_type gst_video_crop_meta_get_info gst_video_decoder_add_to_frame @@ -113,6 +118,7 @@ EXPORTS gst_video_decoder_set_needs_format gst_video_decoder_set_output_state gst_video_decoder_set_packetized + gst_video_dither_method_get_type gst_video_encoder_allocate_output_buffer gst_video_encoder_allocate_output_frame gst_video_encoder_finish_frame