--- /dev/null
+
+/* autogenerated from gstvideotestsrcorc.orc */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifndef DISABLE_ORC
+#include <orc/orc.h>
+#else
+#include <stdint.h>
+#endif
+#include <glib.h>
+
+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
#include "gstvideotestsrc.h"
#include "videotestsrc.h"
-#include <liboil/liboil.h>
+#include "gstvideotestsrcorc.h"
#include <string.h>
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)
int i;
for (i = 0; i < h; i++) {
- oil_splat_u8_ns (d, &color, w);
+ gst_orc_splat_u8 (d, &color, w);
d += stride;
}
}
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 */
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 */
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];
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
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);
}
}
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
{
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))
{
int x1 = x / 2;
int x2 = (x + w) / 2;
- uint16_t Y, U, V;
+ guint16 Y, U, V;
int i;
int offset;
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) |
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
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
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
{
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
{
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
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
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
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
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);
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) {
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
{
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);
}