diff --git a/gst/videotestsrc/Makefile.am b/gst/videotestsrc/Makefile.am index 83b689bcb3..af95cdf51c 100644 --- a/gst/videotestsrc/Makefile.am +++ b/gst/videotestsrc/Makefile.am @@ -1,12 +1,18 @@ plugin_LTLIBRARIES = libgstvideotestsrc.la +ORC_SOURCE=gstvideotestsrcorc +include $(top_srcdir)/common/orc.mak + libgstvideotestsrc_la_SOURCES = \ gstvideotestsrc.c \ videotestsrc.c +nodist_libgstvideotestsrc_la_SOURCES = $(ORC_NODIST_SOURCES) -libgstvideotestsrc_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LIBOIL_CFLAGS) +libgstvideotestsrc_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(ORC_CFLAGS) libgstvideotestsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -libgstvideotestsrc_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(LIBOIL_LIBS) +libgstvideotestsrc_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) libgstvideotestsrc_la_LIBTOOLFLAGS = --tag=disable-static noinst_HEADERS = gstvideotestsrc.h videotestsrc.h + + diff --git a/gst/videotestsrc/gstvideotestsrc.c b/gst/videotestsrc/gstvideotestsrc.c index 15292c8f5f..312aa24e5d 100644 --- a/gst/videotestsrc/gstvideotestsrc.c +++ b/gst/videotestsrc/gstvideotestsrc.c @@ -41,7 +41,6 @@ #include #include -#include GST_DEBUG_CATEGORY_STATIC (video_test_src_debug); #define GST_CAT_DEFAULT video_test_src_debug @@ -868,8 +867,6 @@ gst_video_test_src_start (GstBaseSrc * basesrc) static gboolean plugin_init (GstPlugin * plugin) { - oil_init (); - GST_DEBUG_CATEGORY_INIT (video_test_src_debug, "videotestsrc", 0, "Video Test Source"); diff --git a/gst/videotestsrc/gstvideotestsrcorc-dist.c b/gst/videotestsrc/gstvideotestsrcorc-dist.c new file mode 100644 index 0000000000..a8527a9538 --- /dev/null +++ b/gst/videotestsrc/gstvideotestsrcorc-dist.c @@ -0,0 +1,378 @@ + +/* autogenerated from gstvideotestsrcorc.orc */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#ifndef DISABLE_ORC +#include +#else +#include +#endif +#include + +void gst_orc_splat_u8 (guint8 * d1, int p1, int n); +void gst_orc_splat_s16 (gint8 * d1, int p1, int n); +void gst_orc_splat_u16 (guint8 * d1, int p1, int n); +void gst_orc_splat_u32 (guint8 * d1, int p1, 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)&0xff)<<8) | (((x)&0xff00)>>8)) +#define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_AS_FLOAT(x) (((union { int i; float f; } *)(&x))->f) +typedef union +{ + int32_t i; + float f; +} orc_union32; +typedef union +{ + int64_t i; + double f; +} orc_union64; +/* end Orc C target preamble */ + + + +/* gst_orc_splat_u8 */ +#ifdef DISABLE_ORC +void +gst_orc_splat_u8 (guint8 * d1, int p1, int n) +{ + int i; + int8_t var0; + int8_t *ptr0; + const int8_t var24 = p1; + + ptr0 = (int8_t *) d1; + + for (i = 0; i < n; i++) { + /* 0: copyb */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +#else +static void +_backup_gst_orc_splat_u8 (OrcExecutor * ex) +{ + int i; + int n = ex->n; + int8_t var0; + int8_t *ptr0; + const int8_t var24 = ex->params[24]; + + ptr0 = (int8_t *) ex->arrays[0]; + + for (i = 0; i < n; i++) { + /* 0: copyb */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +void +gst_orc_splat_u8 (guint8 * d1, int p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static int p_inited = 0; + static OrcProgram *p = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u8"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_parameter (p, 1, "p1"); + + orc_program_append (p, "copyb", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); + + result = orc_program_compile (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->program = p; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_P1] = p1; + + func = p->code_exec; + func (ex); +} +#endif + + +/* gst_orc_splat_s16 */ +#ifdef DISABLE_ORC +void +gst_orc_splat_s16 (gint8 * d1, int p1, int n) +{ + int i; + int16_t var0; + int16_t *ptr0; + const int16_t var24 = p1; + + ptr0 = (int16_t *) d1; + + for (i = 0; i < n; i++) { + /* 0: copyw */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +#else +static void +_backup_gst_orc_splat_s16 (OrcExecutor * ex) +{ + int i; + int n = ex->n; + int16_t var0; + int16_t *ptr0; + const int16_t var24 = ex->params[24]; + + ptr0 = (int16_t *) ex->arrays[0]; + + for (i = 0; i < n; i++) { + /* 0: copyw */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +void +gst_orc_splat_s16 (gint8 * d1, int p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static int p_inited = 0; + static OrcProgram *p = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_s16"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_parameter (p, 2, "p1"); + + orc_program_append (p, "copyw", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); + + result = orc_program_compile (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->program = p; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_P1] = p1; + + func = p->code_exec; + func (ex); +} +#endif + + +/* gst_orc_splat_u16 */ +#ifdef DISABLE_ORC +void +gst_orc_splat_u16 (guint8 * d1, int p1, int n) +{ + int i; + int16_t var0; + int16_t *ptr0; + const int16_t var24 = p1; + + ptr0 = (int16_t *) d1; + + for (i = 0; i < n; i++) { + /* 0: copyw */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +#else +static void +_backup_gst_orc_splat_u16 (OrcExecutor * ex) +{ + int i; + int n = ex->n; + int16_t var0; + int16_t *ptr0; + const int16_t var24 = ex->params[24]; + + ptr0 = (int16_t *) ex->arrays[0]; + + for (i = 0; i < n; i++) { + /* 0: copyw */ + var0 = var24; + *ptr0 = var0; + ptr0++; + } + +} + +void +gst_orc_splat_u16 (guint8 * d1, int p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static int p_inited = 0; + static OrcProgram *p = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u16"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_parameter (p, 2, "p1"); + + orc_program_append (p, "copyw", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); + + result = orc_program_compile (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->program = p; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_P1] = p1; + + func = p->code_exec; + func (ex); +} +#endif + + +/* gst_orc_splat_u32 */ +#ifdef DISABLE_ORC +void +gst_orc_splat_u32 (guint8 * d1, int p1, int n) +{ + int i; + orc_union32 var0; + orc_union32 *ptr0; + const orc_union32 var24 = p1; + + ptr0 = (orc_union32 *) d1; + + for (i = 0; i < n; i++) { + /* 0: copyl */ + var0.i = var24.i; + *ptr0 = var0; + ptr0++; + } + +} + +#else +static void +_backup_gst_orc_splat_u32 (OrcExecutor * ex) +{ + int i; + int n = ex->n; + orc_union32 var0; + orc_union32 *ptr0; + const orc_union32 var24 = *(orc_union32 *) (ex->params + 24); + + ptr0 = (orc_union32 *) ex->arrays[0]; + + for (i = 0; i < n; i++) { + /* 0: copyl */ + var0.i = var24.i; + *ptr0 = var0; + ptr0++; + } + +} + +void +gst_orc_splat_u32 (guint8 * d1, int p1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static int p_inited = 0; + static OrcProgram *p = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); + + result = orc_program_compile (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->program = p; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->params[ORC_VAR_P1] = p1; + + func = p->code_exec; + func (ex); +} +#endif diff --git a/gst/videotestsrc/gstvideotestsrcorc-dist.h b/gst/videotestsrc/gstvideotestsrcorc-dist.h new file mode 100644 index 0000000000..22ad2d2a9c --- /dev/null +++ b/gst/videotestsrc/gstvideotestsrcorc-dist.h @@ -0,0 +1,23 @@ + +/* autogenerated from gstvideotestsrcorc.orc */ + +#ifndef _GSTVIDEOTESTSRCORC_H_ +#define _GSTVIDEOTESTSRCORC_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void gst_orc_splat_u8 (guint8 * d1, int p1, int n); +void gst_orc_splat_s16 (gint8 * d1, int p1, int n); +void gst_orc_splat_u16 (guint8 * d1, int p1, int n); +void gst_orc_splat_u32 (guint8 * d1, int p1, int n); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/gst/videotestsrc/gstvideotestsrcorc.orc b/gst/videotestsrc/gstvideotestsrcorc.orc new file mode 100644 index 0000000000..30097fd877 --- /dev/null +++ b/gst/videotestsrc/gstvideotestsrcorc.orc @@ -0,0 +1,29 @@ + +.function gst_orc_splat_u8 +.dest 1 d1 guint8 +.param 1 p1 + +copyb d1, p1 + + +.function gst_orc_splat_s16 +.dest 2 d1 gint8 +.param 2 p1 + +copyw d1, p1 + + +.function gst_orc_splat_u16 +.dest 2 d1 guint8 +.param 2 p1 + +copyw d1, p1 + + +.function gst_orc_splat_u32 +.dest 4 d1 guint8 +.param 4 p1 + +copyl d1, p1 + + diff --git a/gst/videotestsrc/videotestsrc.c b/gst/videotestsrc/videotestsrc.c index 659f518e07..a844dc3ae1 100644 --- a/gst/videotestsrc/videotestsrc.c +++ b/gst/videotestsrc/videotestsrc.c @@ -25,7 +25,7 @@ #include "gstvideotestsrc.h" #include "videotestsrc.h" -#include +#include "gstvideotestsrcorc.h" #include @@ -46,6 +46,16 @@ random_char (void) return (state >> 16) & 0xff; } +static void +oil_splat_u8 (guint8 * dest, int stride, const guint8 * value, int n) +{ + int i; + for (i = 0; i < n; i++) { + *dest = *value; + dest += stride; + } +} + #if 0 static void random_chars (unsigned char *dest, int nbytes) @@ -84,7 +94,7 @@ paint_rect (unsigned char *dest, int stride, int x, int y, int w, int h, int i; for (i = 0; i < h; i++) { - oil_splat_u8_ns (d, &color, w); + gst_orc_splat_u8 (d, &color, w); d += stride; } } @@ -1217,7 +1227,7 @@ gst_video_test_src_zoneplate (GstVideoTestSrc * v, unsigned char *dest, struct vts_color_struct_rgb rgb_color; struct vts_color_struct_yuv yuv_color; struct vts_color_struct_gray gray_color; - static uint8_t sine_array[256]; + static guint8 sine_array[256]; static int sine_array_inited = FALSE; static int t = 0; /* time - increment phase vs time by 1 for each generated frame */ @@ -1375,7 +1385,7 @@ gst_video_test_src_chromazoneplate (GstVideoTestSrc * v, unsigned char *dest, struct vts_color_struct_rgb rgb_color; struct vts_color_struct_yuv yuv_color; struct vts_color_struct_gray gray_color; - static uint8_t sine_array[256]; + static guint8 sine_array[256]; static int sine_array_inited = FALSE; static int t = 0; /* time - increment phase vs time by 1 for each generated frame */ @@ -1507,7 +1517,7 @@ gst_video_test_src_circular (GstVideoTestSrc * v, unsigned char *dest, struct vts_color_struct_rgb rgb_color; struct vts_color_struct_yuv yuv_color; struct vts_color_struct_gray gray_color; - static uint8_t sine_array[256]; + static guint8 sine_array[256]; static int sine_array_inited = FALSE; double freq[8]; @@ -1730,9 +1740,9 @@ paint_hline_I420 (paintinfo * p, int x, int y, int w) if (x + w == p->width && p->width % 2 != 0) w1++; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, w1); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset1 + x1, p->yuv_color->U, w1); + gst_orc_splat_u8 (p->vp + offset1 + x1, p->yuv_color->V, w1); } static void @@ -1743,11 +1753,17 @@ paint_hline_NV12_NV21 (paintinfo * p, int x, int y, int w) int offset = y * p->ystride; int offsetuv = (y / 2) * p->ustride + (x & ~0x01); int uvlength = x2 - x1 + 1; + guint16 value; + + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + value = (p->yuv_color->U << 0) | (p->yuv_color->V << 8); +#else + value = (p->yuv_color->U << 8) | (p->yuv_color->V << 0); +#endif - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); if (uvlength) { - oil_splat_u8 (p->up + offsetuv, 2, &p->yuv_color->U, uvlength); - oil_splat_u8 (p->vp + offsetuv, 2, &p->yuv_color->V, uvlength); + gst_orc_splat_u16 (p->up + offsetuv, value, uvlength); } } @@ -1850,11 +1866,14 @@ static void paint_hline_v308 (paintinfo * p, int x, int y, int w) { int offset; + int i; offset = (y * p->ystride) + (x * 3); - oil_splat_u8 (p->yp + offset, 3, &p->yuv_color->Y, w); - oil_splat_u8 (p->up + offset, 3, &p->yuv_color->U, w); - oil_splat_u8 (p->vp + offset, 3, &p->yuv_color->V, w); + for (i = 0; i < w; i++) { + p->yp[offset + 3 * i] = p->yuv_color->Y; + p->up[offset + 3 * i] = p->yuv_color->U; + p->vp[offset + 3 * i] = p->yuv_color->V; + } } static void @@ -1862,12 +1881,18 @@ paint_hline_AYUV (paintinfo * p, int x, int y, int w) { int offset; guint8 alpha = 255; + guint32 value; + +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + value = (alpha << 0) | (p->yuv_color->Y << 8) | + (p->yuv_color->U << 16) | (p->yuv_color->V << 24); +#else + value = (alpha << 24) | (p->yuv_color->Y << 16) | + (p->yuv_color->U << 8) | (p->yuv_color->V << 0); +#endif offset = (y * p->ystride) + (x * 4); - oil_splat_u8 (p->yp + offset, 4, &p->yuv_color->Y, w); - oil_splat_u8 (p->up + offset, 4, &p->yuv_color->U, w); - oil_splat_u8 (p->vp + offset, 4, &p->yuv_color->V, w); - oil_splat_u8 (p->ap + offset, 4, &alpha, w); + gst_orc_splat_u32 (p->ap + offset, value, w); } #define TO_16(x) (((x)<<8) | (x)) @@ -1878,7 +1903,7 @@ paint_hline_v216 (paintinfo * p, int x, int y, int w) { int x1 = x / 2; int x2 = (x + w) / 2; - uint16_t Y, U, V; + guint16 Y, U, V; int i; int offset; @@ -1898,8 +1923,8 @@ paint_hline_v216 (paintinfo * p, int x, int y, int w) static void paint_hline_v410 (paintinfo * p, int x, int y, int w) { - uint32_t a; - uint8_t *data; + guint32 a; + guint8 *data; int i; a = (TO_10 (p->yuv_color->U) << 22) | @@ -1914,8 +1939,8 @@ paint_hline_v410 (paintinfo * p, int x, int y, int w) static void paint_hline_v210 (paintinfo * p, int x, int y, int w) { - uint32_t a0, a1, a2, a3; - uint8_t *data; + guint32 a0, a1, a2, a3; + guint8 *data; int i; /* FIXME this is kinda gross. it only handles x values in @@ -1997,9 +2022,9 @@ paint_hline_Y41B (paintinfo * p, int x, int y, int w) if (x + w == p->width && p->width % 4 != 0) w1++; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, w1); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset1 + x1, p->yuv_color->U, w1); + gst_orc_splat_u8 (p->vp + offset1 + x1, p->yuv_color->V, w1); } static void @@ -2024,9 +2049,9 @@ paint_hline_Y42B (paintinfo * p, int x, int y, int w) if (x + w == p->width && p->width % 2 != 0) w1++; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, w1); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset1 + x1, p->yuv_color->U, w1); + gst_orc_splat_u8 (p->vp + offset1 + x1, p->yuv_color->V, w1); } static void @@ -2044,9 +2069,9 @@ paint_hline_Y444 (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset + x, &p->yuv_color->U, w); - oil_splat_u8_ns (p->vp + offset + x, &p->yuv_color->V, w); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset + x, p->yuv_color->U, w); + gst_orc_splat_u8 (p->vp + offset + x, p->yuv_color->V, w); } static void @@ -2063,7 +2088,7 @@ paint_hline_Y800 (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); } #if 0 @@ -2107,9 +2132,9 @@ paint_hline_IMC1 (paintinfo * p, int x, int y, int w) int offset = y * p->width; int offset1 = (y / 2) * p->width; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, x2 - x1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, x2 - x1); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset1 + x1, p->yuv_color->U, x2 - x1); + gst_orc_splat_u8 (p->vp + offset1 + x1, p->yuv_color->V, x2 - x1); } #endif @@ -2152,9 +2177,9 @@ paint_hline_YUV9 (paintinfo * p, int x, int y, int w) if (x + w == p->width && p->width % 4 != 0) w1++; - oil_splat_u8_ns (p->yp + offset + x, &p->yuv_color->Y, w); - oil_splat_u8_ns (p->up + offset1 + x1, &p->yuv_color->U, w1); - oil_splat_u8_ns (p->vp + offset1 + x1, &p->yuv_color->V, w1); + gst_orc_splat_u8 (p->yp + offset + x, p->yuv_color->Y, w); + gst_orc_splat_u8 (p->up + offset1 + x1, p->yuv_color->U, w1); + gst_orc_splat_u8 (p->vp + offset1 + x1, p->yuv_color->V, w1); } static void @@ -2282,18 +2307,12 @@ static void paint_hline_RGB565 (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - uint8_t a, b; + guint16 value; - a = (p->rgb_color->R & 0xf8) | (p->rgb_color->G >> 5); - b = ((p->rgb_color->G << 3) & 0xe0) | (p->rgb_color->B >> 3); + value = ((p->rgb_color->R & 0xf8) << 8) | + ((p->rgb_color->G & 0xfc) << 3) | ((p->rgb_color->B & 0xf8) >> 3); -#if G_BYTE_ORDER == G_LITTLE_ENDIAN - oil_splat_u8 (p->yp + offset + x * 2 + 0, 2, &b, w); - oil_splat_u8 (p->yp + offset + x * 2 + 1, 2, &a, w); -#else - oil_splat_u8 (p->yp + offset + x * 2 + 0, 2, &a, w); - oil_splat_u8 (p->yp + offset + x * 2 + 1, 2, &b, w); -#endif + gst_orc_splat_u16 (p->yp + offset + x * 2 + 0, value, w); } static void @@ -2308,7 +2327,7 @@ static void paint_hline_xRGB1555 (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - uint8_t a, b; + guint8 a, b; a = ((p->rgb_color->R >> 1) & 0x7c) | (p->rgb_color->G >> 6); b = ((p->rgb_color->G << 2) & 0xe0) | (p->rgb_color->B >> 3); @@ -2335,7 +2354,7 @@ static void paint_hline_bayer (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - uint8_t *dest = p->yp + offset; + guint8 *dest = p->yp + offset; int i; if (y & 1) { @@ -2371,7 +2390,7 @@ paint_hline_GRAY8 (paintinfo * p, int x, int y, int w) int offset = y * p->ystride; guint8 color = p->gray_color->G >> 8; - oil_splat_u8_ns (p->yp + offset + x, &color, w); + gst_orc_splat_u8 (p->yp + offset + x, color, w); } static void @@ -2387,5 +2406,5 @@ paint_hline_GRAY16 (paintinfo * p, int x, int y, int w) { int offset = y * p->ystride; - oil_splat_u16_ns ((guint16 *) (p->yp + offset + 2 * x), &p->gray_color->G, w); + gst_orc_splat_u16 (p->yp + offset + 2 * x, p->gray_color->G, w); }