Merge branch 'master' into 0.11
diff --git a/common b/common
index 11f0cd5..0546e58 160000
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 11f0cd5a3fba36f85cf3e434150bfe66b1bf08d4
+Subproject commit 0546e5881d1ec7137c71d35247729e28c1a4ab66
diff --git a/configure.ac b/configure.ac
index bd83784..61ed3da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT(GStreamer Bad Plug-ins, 0.10.22.1,
+AC_INIT(GStreamer Bad Plug-ins, 0.11.0.1,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-plugins-bad)
@@ -38,7 +38,7 @@
dnl our libraries and install dirs use major.minor as a version
GST_MAJORMINOR=$GST_PLUGINS_BAD_VERSION_MAJOR.$GST_PLUGINS_BAD_VERSION_MINOR
dnl we override it here if we need to for the release candidate of new series
-GST_MAJORMINOR=0.10
+GST_MAJORMINOR=0.11
AC_SUBST(GST_MAJORMINOR)
AG_GST_LIBTOOL_PREPARE
@@ -52,8 +52,8 @@
AM_PROG_LIBTOOL
dnl *** required versions of GStreamer stuff ***
-GST_REQ=0.10.35.1
-GSTPB_REQ=0.10.35.1
+GST_REQ=0.11.0.1
+GSTPB_REQ=0.11.0.1
dnl *** autotools stuff ****
@@ -194,9 +194,9 @@
AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], yes)
dnl check for uninstalled plugin directories for unit tests
-AG_GST_CHECK_GST_PLUGINS_GOOD($GST_MAJORMINOR, [0.10.25])
-AG_GST_CHECK_GST_PLUGINS_UGLY($GST_MAJORMINOR, [0.10.16])
-AG_GST_CHECK_GST_PLUGINS_FFMPEG($GST_MAJORMINOR, [0.10.11])
+AG_GST_CHECK_GST_PLUGINS_GOOD($GST_MAJORMINOR, [0.11.0])
+AG_GST_CHECK_GST_PLUGINS_UGLY($GST_MAJORMINOR, [0.11.0])
+AG_GST_CHECK_GST_PLUGINS_FFMPEG($GST_MAJORMINOR, [0.11.0])
dnl Check for documentation xrefs
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
@@ -291,6 +291,24 @@
AG_GST_DEFAULT_ELEMENTS
dnl *** plug-ins to include ***
+dnl Non ported plugins (non-dependant, then dependant)
+dnl Make sure you have a space before and after all plugins
+GST_PLUGINS_NONPORTED=" adpcmdec adpcmenc aiff asfmux \
+ audiovisualizers autoconvert camerabin cdxaparse coloreffects \
+ dccp debugutils dtmf faceoverlay festival \
+ fieldanalysis freeze frei0r gaudieffects geometrictransform h264parse \
+ hdvparse hls id3tag inter interlace ivfparse jpegformat jp2kdecimator \
+ kate liveadder legacyresample librfb mpegdemux mpegtsmux \
+ mpegpsmux mpegvideoparse mve mxf mythtv nsf nuvdemux \
+ patchdetect pcapparse pnm rawparse real removesilence rtpmux rtpvp8 scaletempo \
+ sdi segmentclip siren speed subenc stereo tta videofilters \
+ videomaxrate videomeasure videoparsers videosignal vmnc \
+ decklink fbdev linsys shm vcd \
+ voaacenc apexsink bz2 camerabin2 cdaudio celt cog curl dc1394 dirac directfb dts resindvd \
+ gsettings gsm jp2k ladspa modplug mpeg2enc mplex mimic \
+ musepack musicbrainz nas neon ofa openal rsvg schro sdl sndfile soundtouch spandsp timidity \
+ vp8 wildmidi xvid "
+AC_SUBST(GST_PLUGINS_NONPORTED)
dnl these are all the gst plug-ins, compilable without additional libs
AG_GST_CHECK_PLUGIN(adpcmdec)
@@ -304,7 +322,6 @@
AG_GST_CHECK_PLUGIN(camerabin2)
AG_GST_CHECK_PLUGIN(cdxaparse)
AG_GST_CHECK_PLUGIN(coloreffects)
-AG_GST_CHECK_PLUGIN(colorspace)
AG_GST_CHECK_PLUGIN(dataurisrc)
AG_GST_CHECK_PLUGIN(dccp)
AG_GST_CHECK_PLUGIN(debugutils)
@@ -1849,6 +1866,7 @@
dnl prefer internal headers to already installed ones
dnl also add builddir include for enumtypes and marshal
dnl add GST_OPTION_CFLAGS, but overridable
+GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
AC_SUBST(GST_CFLAGS)
@@ -1896,7 +1914,6 @@
gst/camerabin/Makefile
gst/camerabin2/Makefile
gst/cdxaparse/Makefile
-gst/colorspace/Makefile
gst/coloreffects/Makefile
gst/dataurisrc/Makefile
gst/dccp/Makefile
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index 7976c25..bc424db 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -213,7 +213,7 @@
GST_IS_PHOTOGRAPHY
GST_TYPE_PHOTOGRAPHY
gst_photography_get_type
-GST_PHOTOGRAPHY_GET_IFACE
+GST_PHOTOGRAPHY_GET_INTERFACE
</SECTION>
<SECTION>
diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt
index d7fc96e..4e9ec0b 100644
--- a/docs/plugins/gst-plugins-bad-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt
@@ -1768,7 +1768,7 @@
<SUBSECTION Standard>
GST_PHOTOGRAPHY
GST_IS_PHOTOGRAPHY
-GST_PHOTOGRAPHY_GET_IFACE
+GST_PHOTOGRAPHY_GET_INTERFACE
gst_photography_get_type
</SECTION>
diff --git a/ext/apexsink/gstapexsink.c b/ext/apexsink/gstapexsink.c
index fc64db8..9dec7bd 100644
--- a/ext/apexsink/gstapexsink.c
+++ b/ext/apexsink/gstapexsink.c
@@ -172,7 +172,7 @@
static void gst_apexsink_interfaces_init (GType type);
static void gst_apexsink_implements_interface_init (GstImplementsInterfaceClass
* iface);
-static void gst_apexsink_mixer_interface_init (GstMixerClass * iface);
+static void gst_apexsink_mixer_interface_init (GstMixerInterface * iface);
static gboolean gst_apexsink_interface_supported (GstImplementsInterface *
iface, GType iface_type);
@@ -208,7 +208,7 @@
}
static void
-gst_apexsink_mixer_interface_init (GstMixerClass * iface)
+gst_apexsink_mixer_interface_init (GstMixerInterface * iface)
{
GST_MIXER_TYPE (iface) = GST_MIXER_SOFTWARE;
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index 1287ba1..9a4a775 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -57,23 +57,19 @@
PROP_EMBEDDEDFONTS
};
+#define FORMATS "{ RGB, BGR, xRGB, xBGR, RGBx, BGRx, I420 }"
+
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
- GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";"
- GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";"
- GST_VIDEO_CAPS_YUV ("I420"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (FORMATS))
);
static GstStaticPadTemplate video_sink_factory =
- GST_STATIC_PAD_TEMPLATE ("video_sink",
+GST_STATIC_PAD_TEMPLATE ("video_sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
- GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";"
- GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";"
- GST_VIDEO_CAPS_YUV ("I420"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (FORMATS))
);
static GstStaticPadTemplate text_sink_factory =
@@ -93,9 +89,10 @@
static GstStateChangeReturn gst_ass_render_change_state (GstElement * element,
GstStateChange transition);
-GST_BOILERPLATE (GstAssRender, gst_ass_render, GstElement, GST_TYPE_ELEMENT);
+#define gst_ass_render_parent_class parent_class
+G_DEFINE_TYPE (GstAssRender, gst_ass_render, GST_TYPE_ELEMENT);
-static GstCaps *gst_ass_render_getcaps (GstPad * pad);
+static GstCaps *gst_ass_render_getcaps (GstPad * pad, GstCaps * filter);
static gboolean gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps);
static gboolean gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps);
@@ -107,30 +104,8 @@
static gboolean gst_ass_render_event_text (GstPad * pad, GstEvent * event);
static gboolean gst_ass_render_event_src (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_ass_render_bufferalloc_video (GstPad * pad,
- guint64 offset, guint size, GstCaps * caps, GstBuffer ** buffer);
-
static gboolean gst_ass_render_query_src (GstPad * pad, GstQuery * query);
-static void
-gst_ass_render_base_init (gpointer gclass)
-{
- GstElementClass *element_class = (GstElementClass *) gclass;
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&text_sink_factory));
-
- gst_element_class_set_details_simple (element_class, "ASS/SSA Render",
- "Mixer/Video/Overlay/Subtitle",
- "Renders ASS/SSA subtitles with libass",
- "Benjamin Schmitz <vortex@wolpzone.de>, "
- "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
/* initialize the plugin's class */
static void
gst_ass_render_class_init (GstAssRenderClass * klass)
@@ -153,6 +128,19 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_ass_render_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&video_sink_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&text_sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "ASS/SSA Render",
+ "Mixer/Video/Overlay/Subtitle",
+ "Renders ASS/SSA subtitles with libass",
+ "Benjamin Schmitz <vortex@wolpzone.de>, "
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
}
#if defined(LIBASS_VERSION) && LIBASS_VERSION >= 0x00907000
@@ -178,7 +166,7 @@
#endif
static void
-gst_ass_render_init (GstAssRender * render, GstAssRenderClass * gclass)
+gst_ass_render_init (GstAssRender * render)
{
GST_DEBUG_OBJECT (render, "init");
@@ -188,11 +176,6 @@
render->text_sinkpad =
gst_pad_new_from_static_template (&text_sink_factory, "text_sink");
- gst_pad_set_setcaps_function (render->video_sinkpad,
- GST_DEBUG_FUNCPTR (gst_ass_render_setcaps_video));
- gst_pad_set_setcaps_function (render->text_sinkpad,
- GST_DEBUG_FUNCPTR (gst_ass_render_setcaps_text));
-
gst_pad_set_getcaps_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_ass_render_getcaps));
gst_pad_set_getcaps_function (render->video_sinkpad,
@@ -210,9 +193,6 @@
gst_pad_set_event_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_ass_render_event_src));
- gst_pad_set_bufferalloc_function (render->video_sinkpad,
- GST_DEBUG_FUNCPTR (gst_ass_render_bufferalloc_video));
-
gst_pad_set_query_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_ass_render_query_src));
@@ -220,8 +200,7 @@
gst_element_add_pad (GST_ELEMENT (render), render->video_sinkpad);
gst_element_add_pad (GST_ELEMENT (render), render->text_sinkpad);
- render->width = 0;
- render->height = 0;
+ gst_video_info_init (&render->info);
render->subtitle_mutex = g_mutex_new ();
render->subtitle_cond = g_cond_new ();
@@ -434,7 +413,7 @@
}
static GstCaps *
-gst_ass_render_getcaps (GstPad * pad)
+gst_ass_render_getcaps (GstPad * pad, GstCaps * filter)
{
GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
GstPad *otherpad;
@@ -446,7 +425,7 @@
otherpad = render->srcpad;
/* we can do what the peer can */
- caps = gst_pad_peer_get_caps (otherpad);
+ caps = gst_pad_peer_get_caps (otherpad, filter);
if (caps) {
GstCaps *temp;
const GstCaps *templ;
@@ -469,19 +448,24 @@
#define CREATE_RGB_BLIT_FUNCTION(name,bpp,R,G,B) \
static void \
-blit_##name (GstAssRender * render, ASS_Image * ass_image, GstBuffer * buffer) \
+blit_##name (GstAssRender * render, ASS_Image * ass_image, GstVideoFrame * frame) \
{ \
guint counter = 0; \
gint alpha, r, g, b, k; \
const guint8 *src; \
- guint8 *dst; \
+ guint8 *dst, *data; \
gint x, y, w, h; \
- gint width = render->width; \
- gint height = render->height; \
- gint dst_stride = GST_ROUND_UP_4 (width * bpp); \
+ gint width; \
+ gint height; \
+ gint dst_stride; \
gint dst_skip; \
gint src_skip; \
\
+ width = GST_VIDEO_FRAME_WIDTH (frame); \
+ height = GST_VIDEO_FRAME_HEIGHT (frame); \
+ dst_stride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0); \
+ data = GST_VIDEO_FRAME_PLANE_DATA (frame, 0); \
+ \
while (ass_image) { \
if (ass_image->dst_y > height || ass_image->dst_x > width) \
goto next; \
@@ -492,7 +476,7 @@
g = ((ass_image->color) >> 16) & 0xff; \
b = ((ass_image->color) >> 8) & 0xff; \
src = ass_image->bitmap; \
- dst = buffer->data + ass_image->dst_y * dst_stride + ass_image->dst_x * bpp; \
+ dst = data + ass_image->dst_y * dst_stride + ass_image->dst_x * bpp; \
\
w = MIN (ass_image->w, width - ass_image->dst_x); \
h = MIN (ass_image->h, height - ass_image->dst_y); \
@@ -562,7 +546,7 @@
}
static void
-blit_i420 (GstAssRender * render, ASS_Image * ass_image, GstBuffer * buffer)
+blit_i420 (GstAssRender * render, ASS_Image * ass_image, GstVideoFrame * frame)
{
guint counter = 0;
gint alpha, r, g, b, k, k2;
@@ -575,25 +559,20 @@
gint w2;
gint src_stride;
#endif
- gint width = render->width;
- gint height = render->height;
- gint y_offset, y_stride;
- gint u_offset, u_stride;
- gint v_offset, v_stride;
+ gint width, height;
+ guint8 *y_data, *u_data, *v_data;
+ gint y_stride, u_stride, v_stride;
- y_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 0, width,
- height);
- u_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 1, width,
- height);
- v_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 2, width,
- height);
+ width = GST_VIDEO_FRAME_WIDTH (frame);
+ height = GST_VIDEO_FRAME_HEIGHT (frame);
- y_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 0, width);
- u_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 1, width);
- v_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 2, width);
+ y_data = GST_VIDEO_FRAME_COMP_DATA (frame, 0);
+ u_data = GST_VIDEO_FRAME_COMP_DATA (frame, 1);
+ v_data = GST_VIDEO_FRAME_COMP_DATA (frame, 2);
+
+ y_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 0);
+ u_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 1);
+ v_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 2);
while (ass_image) {
if (ass_image->dst_y > height || ass_image->dst_x > width)
@@ -619,19 +598,14 @@
#endif
src = ass_image->bitmap;
- dst_y =
- buffer->data + y_offset + ass_image->dst_y * y_stride +
- ass_image->dst_x;
- dst_u =
- buffer->data + u_offset + (ass_image->dst_y / 2) * u_stride +
- ass_image->dst_x / 2;
- dst_v =
- buffer->data + v_offset + (ass_image->dst_y / 2) * v_stride +
- ass_image->dst_x / 2;
+#if 0
+ dst_y = y_data + ass_image->dst_y * y_stride + ass_image->dst_x;
+ dst_u = u_data + (ass_image->dst_y / 2) * u_stride + ass_image->dst_x / 2;
+ dst_v = v_data + (ass_image->dst_y / 2) * v_stride + ass_image->dst_x / 2;
+#endif
for (y = 0; y < h; y++) {
- dst_y = buffer->data + y_offset + (ass_image->dst_y + y) * y_stride +
- ass_image->dst_x;
+ dst_y = y_data + (ass_image->dst_y + y) * y_stride + ass_image->dst_x;
for (x = 0; x < w; x++) {
k = src[y * ass_image->w + x] * alpha / 255;
dst_y[x] = (k * Y + (255 - k) * dst_y[x]) / 255;
@@ -640,12 +614,8 @@
y = 0;
if (ass_image->dst_y & 1) {
- dst_u =
- buffer->data + u_offset + (ass_image->dst_y / 2) * u_stride +
- ass_image->dst_x / 2;
- dst_v =
- buffer->data + v_offset + (ass_image->dst_y / 2) * v_stride +
- ass_image->dst_x / 2;
+ dst_u = u_data + (ass_image->dst_y / 2) * u_stride + ass_image->dst_x / 2;
+ dst_v = v_data + (ass_image->dst_y / 2) * v_stride + ass_image->dst_x / 2;
x = 0;
if (ass_image->dst_x & 1) {
k2 = src[y * ass_image->w + x] * alpha / 255;
@@ -674,11 +644,9 @@
}
for (; y < h - 1; y += 2) {
- dst_u =
- buffer->data + u_offset + ((ass_image->dst_y + y) / 2) * u_stride +
+ dst_u = u_data + ((ass_image->dst_y + y) / 2) * u_stride +
ass_image->dst_x / 2;
- dst_v =
- buffer->data + v_offset + ((ass_image->dst_y + y) / 2) * v_stride +
+ dst_v = v_data + ((ass_image->dst_y + y) / 2) * v_stride +
ass_image->dst_x / 2;
x = 0;
if (ass_image->dst_x & 1) {
@@ -712,12 +680,8 @@
}
if (y < h) {
- dst_u =
- buffer->data + u_offset + (ass_image->dst_y / 2) * u_stride +
- ass_image->dst_x / 2;
- dst_v =
- buffer->data + v_offset + (ass_image->dst_y / 2) * v_stride +
- ass_image->dst_x / 2;
+ dst_u = u_data + (ass_image->dst_y / 2) * u_stride + ass_image->dst_x / 2;
+ dst_v = v_data + (ass_image->dst_y / 2) * v_stride + ass_image->dst_x / 2;
x = 0;
if (ass_image->dst_x & 1) {
k2 = src[y * ass_image->w + x] * alpha / 255;
@@ -762,25 +726,18 @@
gboolean ret = FALSE;
gint par_n = 1, par_d = 1;
gdouble dar;
+ GstVideoInfo info;
- render->width = 0;
- render->height = 0;
+ if (!gst_video_info_from_caps (&info, caps))
+ goto invalid_caps;
- if (!gst_video_format_parse_caps (caps, &render->format, &render->width,
- &render->height) ||
- !gst_video_parse_caps_framerate (caps, &render->fps_n, &render->fps_d)) {
- GST_ERROR_OBJECT (render, "Can't parse caps: %" GST_PTR_FORMAT, caps);
- ret = FALSE;
- goto out;
- }
-
- gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d);
+ render->info = info;
ret = gst_pad_set_caps (render->srcpad, caps);
if (!ret)
goto out;
- switch (render->format) {
+ switch (GST_VIDEO_INFO_FORMAT (&info)) {
case GST_VIDEO_FORMAT_RGB:
render->blit = blit_rgb;
break;
@@ -808,15 +765,15 @@
}
g_mutex_lock (render->ass_mutex);
- ass_set_frame_size (render->ass_renderer, render->width, render->height);
+ ass_set_frame_size (render->ass_renderer, info.width, info.height);
- dar = (((gdouble) par_n) * ((gdouble) render->width))
- / (((gdouble) par_d) * ((gdouble) render->height));
+ dar = (((gdouble) par_n) * ((gdouble) info.width))
+ / (((gdouble) par_d) * ((gdouble) info.height));
#if !defined(LIBASS_VERSION) || LIBASS_VERSION < 0x00907000
ass_set_aspect_ratio (render->ass_renderer, dar);
#else
ass_set_aspect_ratio (render->ass_renderer,
- dar, ((gdouble) render->width) / ((gdouble) render->height));
+ dar, ((gdouble) info.width) / ((gdouble) info.height));
#endif
ass_set_font_scale (render->ass_renderer, 1.0);
ass_set_hinting (render->ass_renderer, ASS_HINTING_LIGHT);
@@ -840,6 +797,14 @@
gst_object_unref (render);
return ret;
+
+ /* ERRORS */
+invalid_caps:
+ {
+ GST_ERROR_OBJECT (render, "Can't parse caps: %" GST_PTR_FORMAT, caps);
+ ret = FALSE;
+ goto out;
+ }
}
static gboolean
@@ -850,7 +815,7 @@
const GValue *value;
GstBuffer *priv;
gchar *codec_private;
- guint codec_private_size;
+ gsize codec_private_size;
gboolean ret = FALSE;
structure = gst_caps_get_structure (caps, 0);
@@ -865,8 +830,8 @@
priv = gst_value_get_buffer (value);
g_return_val_if_fail (priv != NULL, FALSE);
- codec_private = (gchar *) GST_BUFFER_DATA (priv);
- codec_private_size = GST_BUFFER_SIZE (priv);
+ codec_private =
+ gst_buffer_map (priv, &codec_private_size, NULL, GST_MAP_READ);
if (!render->ass_track)
render->ass_track = ass_new_track (render->ass_library);
@@ -874,6 +839,8 @@
ass_process_codec_private (render->ass_track,
codec_private, codec_private_size);
+ gst_buffer_unmap (priv, codec_private, codec_private_size);
+
GST_DEBUG_OBJECT (render, "ass track created");
render->track_init_ok = TRUE;
@@ -898,8 +865,8 @@
gst_ass_render_process_text (GstAssRender * render, GstBuffer * buffer,
GstClockTime running_time, GstClockTime duration)
{
- gchar *data = (gchar *) GST_BUFFER_DATA (buffer);
- guint size = GST_BUFFER_SIZE (buffer);
+ gchar *data;
+ gsize size;
gdouble pts_start, pts_end;
pts_start = running_time;
@@ -911,41 +878,24 @@
"Processing subtitles with running time %" GST_TIME_FORMAT
" and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (running_time),
GST_TIME_ARGS (duration));
+
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
+
g_mutex_lock (render->ass_mutex);
ass_process_chunk (render->ass_track, data, size, pts_start, pts_end);
g_mutex_unlock (render->ass_mutex);
+
+ gst_buffer_unmap (buffer, data, size);
gst_buffer_unref (buffer);
}
static GstFlowReturn
-gst_ass_render_bufferalloc_video (GstPad * pad, guint64 offset, guint size,
- GstCaps * caps, GstBuffer ** buffer)
-{
- GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
- GstFlowReturn ret = GST_FLOW_WRONG_STATE;
- GstPad *allocpad;
-
- GST_OBJECT_LOCK (render);
- allocpad = render->srcpad ? gst_object_ref (render->srcpad) : NULL;
- GST_OBJECT_UNLOCK (render);
-
- if (allocpad) {
- ret = gst_pad_alloc_buffer (allocpad, offset, size, caps, buffer);
- gst_object_unref (allocpad);
- }
-
- gst_object_unref (render);
-
- return ret;
-}
-
-static GstFlowReturn
gst_ass_render_chain_video (GstPad * pad, GstBuffer * buffer)
{
GstAssRender *render = GST_ASS_RENDER (GST_PAD_PARENT (pad));
GstFlowReturn ret = GST_FLOW_OK;
gboolean in_seg = FALSE;
- gint64 start, stop, clip_start = 0, clip_stop = 0;
+ guint64 start, stop, clip_start = 0, clip_stop = 0;
ASS_Image *ass_image;
if (!GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) {
@@ -978,14 +928,13 @@
/* if the buffer is only partially in the segment, fix up stamps */
if (clip_start != start || (stop != -1 && clip_stop != stop)) {
GST_DEBUG_OBJECT (render, "clipping buffer timestamp/duration to segment");
- buffer = gst_buffer_make_metadata_writable (buffer);
+ buffer = gst_buffer_make_writable (buffer);
GST_BUFFER_TIMESTAMP (buffer) = clip_start;
if (stop != -1)
GST_BUFFER_DURATION (buffer) = clip_stop - clip_start;
}
- gst_segment_set_last_stop (&render->video_segment, GST_FORMAT_TIME,
- clip_start);
+ render->video_segment.position = clip_start;
g_mutex_lock (render->subtitle_mutex);
if (render->subtitle_pending) {
@@ -1055,8 +1004,13 @@
g_mutex_unlock (render->ass_mutex);
if (ass_image != NULL) {
+ GstVideoFrame frame;
+
buffer = gst_buffer_make_writable (buffer);
- render->blit (render, ass_image, buffer);
+
+ gst_video_frame_map (&frame, &render->info, buffer, GST_MAP_WRITE);
+ render->blit (render, ass_image, &frame);
+ gst_video_frame_unmap (&frame);
} else {
GST_LOG_OBJECT (render, "nothing to render right now");
}
@@ -1084,7 +1038,7 @@
GstClockTime timestamp, duration;
GstClockTime sub_running_time, vid_running_time;
GstClockTime sub_running_time_end;
- gint64 cstart, cstop;
+ guint64 cstart, cstop;
gboolean in_seg;
if (render->subtitle_flushing) {
@@ -1118,8 +1072,7 @@
GST_BUFFER_TIMESTAMP (buffer) = timestamp = cstart;
GST_BUFFER_DURATION (buffer) = duration = cstop - cstart;
- gst_segment_set_last_stop (&render->subtitle_segment, GST_FORMAT_TIME,
- GST_BUFFER_TIMESTAMP (buffer));
+ render->subtitle_segment.position = GST_BUFFER_TIMESTAMP (buffer);
sub_running_time =
gst_segment_to_running_time (&render->subtitle_segment, GST_FORMAT_TIME,
@@ -1129,11 +1082,12 @@
timestamp + duration);
vid_running_time =
gst_segment_to_running_time (&render->video_segment, GST_FORMAT_TIME,
- render->video_segment.last_stop);
+ render->video_segment.position);
- if (render->fps_n && render->fps_d)
+ if (render->info.fps_n && render->info.fps_d)
vid_running_time +=
- gst_util_uint64_scale (GST_SECOND, render->fps_d, render->fps_n);
+ gst_util_uint64_scale (GST_SECOND, render->info.fps_d,
+ render->info.fps_n);
if (sub_running_time > vid_running_time + GST_SECOND / 2) {
g_assert (render->subtitle_pending == NULL);
@@ -1175,6 +1129,7 @@
static void
gst_ass_render_handle_tags (GstAssRender * render, GstTagList * taglist)
{
+#if 0
static const gchar *mimetypes[] = {
"application/x-font-ttf",
"application/x-font-otf",
@@ -1184,14 +1139,15 @@
".otf",
".ttf"
};
+#endif
guint tag_size;
- guint index;
if (!taglist)
return;
tag_size = gst_tag_list_get_tag_size (taglist, GST_TAG_ATTACHMENT);
if (tag_size > 0 && render->embeddedfonts) {
+#if 0
const GValue *value;
GstBuffer *buf;
GstCaps *caps;
@@ -1199,10 +1155,13 @@
gboolean valid_mimetype, valid_extension;
guint j;
const gchar *filename;
+#endif
+ guint index;
GST_DEBUG_OBJECT (render, "TAG event has attachments");
for (index = 0; index < tag_size; index++) {
+#if 0
value = gst_tag_list_get_value_index (taglist, GST_TAG_ATTACHMENT, index);
buf = gst_value_get_buffer (value);
if (!buf || !GST_BUFFER_CAPS (buf))
@@ -1242,6 +1201,7 @@
GST_DEBUG_OBJECT (render, "registered new font %s", filename);
g_mutex_unlock (render->ass_mutex);
}
+#endif
}
}
}
@@ -1256,24 +1216,28 @@
GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_CAPS:
{
- GstFormat format;
- gdouble rate;
- gint64 start, stop, time;
- gboolean update;
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_ass_render_setcaps_video (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
+ case GST_EVENT_SEGMENT:
+ {
+ GstSegment segment;
GST_DEBUG_OBJECT (render, "received new segment");
- gst_event_parse_new_segment (event, &update, &rate, &format, &start,
- &stop, &time);
+ gst_event_copy_segment (event, &segment);
- if (format == GST_FORMAT_TIME) {
+ if (segment.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (render, "VIDEO SEGMENT now: %" GST_SEGMENT_FORMAT,
&render->video_segment);
- gst_segment_set_newsegment (&render->video_segment, update, rate,
- format, start, stop, time);
+ render->video_segment = segment;
GST_DEBUG_OBJECT (render, "VIDEO SEGMENT after: %" GST_SEGMENT_FORMAT,
&render->video_segment);
@@ -1320,24 +1284,28 @@
GST_DEBUG_OBJECT (pad, "received text event %s", GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_CAPS:
{
- GstFormat format;
- gdouble rate;
- gint64 start, stop, time;
- gboolean update;
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_ass_render_setcaps_text (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
+ case GST_EVENT_SEGMENT:
+ {
+ GstSegment segment;
GST_DEBUG_OBJECT (render, "received new segment");
- gst_event_parse_new_segment (event, &update, &rate, &format, &start,
- &stop, &time);
+ gst_event_copy_segment (event, &segment);
- if (format == GST_FORMAT_TIME) {
+ if (segment.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (render, "SUBTITLE SEGMENT now: %" GST_SEGMENT_FORMAT,
&render->subtitle_segment);
- gst_segment_set_newsegment (&render->subtitle_segment, update, rate,
- format, start, stop, time);
+ render->subtitle_segment = segment;
GST_DEBUG_OBJECT (render,
"SUBTITLE SEGMENT after: %" GST_SEGMENT_FORMAT,
diff --git a/ext/assrender/gstassrender.h b/ext/assrender/gstassrender.h
index 4b58e25..23dd4df 100644
--- a/ext/assrender/gstassrender.h
+++ b/ext/assrender/gstassrender.h
@@ -43,7 +43,7 @@
typedef struct _GstAssRender GstAssRender;
typedef struct _GstAssRenderClass GstAssRenderClass;
-typedef void (*GstAssRenderBlitFunction) (GstAssRender *render, ASS_Image *ass_image, GstBuffer *buffer);
+typedef void (*GstAssRenderBlitFunction) (GstAssRender *render, ASS_Image *ass_image, GstVideoFrame *frame);
struct _GstAssRender
{
@@ -57,9 +57,7 @@
/* <private> */
GstSegment video_segment;
- GstVideoFormat format;
- gint width, height;
- gint fps_n, fps_d;
+ GstVideoInfo info;
GstAssRenderBlitFunction blit;
GMutex *subtitle_mutex;
diff --git a/ext/celt/gstceltdec.c b/ext/celt/gstceltdec.c
index 6d3d943..2c43fdd 100644
--- a/ext/celt/gstceltdec.c
+++ b/ext/celt/gstceltdec.c
@@ -44,6 +44,7 @@
#include "gstceltdec.h"
#include <string.h>
#include <gst/tag/tag.h>
+#include <gst/audio/audio.h>
GST_DEBUG_CATEGORY_STATIC (celtdec_debug);
#define GST_CAT_DEFAULT celtdec_debug
@@ -54,11 +55,9 @@
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "rate = (int) [ 32000, 64000 ], "
- "channels = (int) [ 1, 2 ], "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, " "width = (int) 16, " "depth = (int) 16")
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "rate = (int) [ 32000, 64000 ], " "channels = (int) [ 1, 2 ]")
);
static GstStaticPadTemplate celt_dec_sink_factory =
@@ -68,7 +67,8 @@
GST_STATIC_CAPS ("audio/x-celt")
);
-GST_BOILERPLATE (GstCeltDec, gst_celt_dec, GstElement, GST_TYPE_ELEMENT);
+#define gst_celt_dec_parent_class parent_class
+G_DEFINE_TYPE (GstCeltDec, gst_celt_dec, GST_TYPE_ELEMENT);
static gboolean celt_dec_sink_event (GstPad * pad, GstEvent * event);
static GstFlowReturn celt_dec_chain (GstPad * pad, GstBuffer * buf);
@@ -93,21 +93,6 @@
GstBuffer * buf);
static void
-gst_celt_dec_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&celt_dec_src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&celt_dec_sink_factory));
- gst_element_class_set_details_simple (element_class, "Celt audio decoder",
- "Codec/Decoder/Audio",
- "decode celt streams to audio",
- "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
-static void
gst_celt_dec_class_init (GstCeltDecClass * klass)
{
GstElementClass *gstelement_class;
@@ -116,6 +101,16 @@
gstelement_class->change_state = GST_DEBUG_FUNCPTR (celt_dec_change_state);
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&celt_dec_src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&celt_dec_sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "Celt audio decoder",
+ "Codec/Decoder/Audio",
+ "decode celt streams to audio",
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+
GST_DEBUG_CATEGORY_INIT (celtdec_debug, "celtdec", 0,
"celt decoding element");
}
@@ -148,7 +143,7 @@
}
static void
-gst_celt_dec_init (GstCeltDec * dec, GstCeltDecClass * g_class)
+gst_celt_dec_init (GstCeltDec * dec)
{
dec->sinkpad =
gst_pad_new_from_static_template (&celt_dec_sink_factory, "sink");
diff --git a/ext/directfb/dfbvideosink.c b/ext/directfb/dfbvideosink.c
index 7343e25..038e3ee 100644
--- a/ext/directfb/dfbvideosink.c
+++ b/ext/directfb/dfbvideosink.c
@@ -132,10 +132,9 @@
static void gst_dfbvideosink_update_colorbalance (GstDfbVideoSink *
dfbvideosink);
static void gst_dfbvideosink_surface_destroy (GstDfbVideoSink * dfbvideosink,
- GstDfbSurface * surface);
+ GstBuffer * surface);
static GstVideoSinkClass *parent_class = NULL;
-static GstBufferClass *surface_parent_class = NULL;
#ifndef GST_DISABLE_GST_DEBUG
static const char *
@@ -188,12 +187,52 @@
}
#endif /* GST_DISABLE_GST_DEBUG */
+static void
+gst_dfbsurface_dispose (GstBuffer * surface)
+{
+ GstDfbVideoSink *dfbvideosink = NULL;
+ GstMetaDfbSurface *meta;
+
+ g_return_if_fail (surface != NULL);
+
+ meta = GST_META_DFBSURFACE_GET (surface);
+
+ dfbvideosink = meta->dfbvideosink;
+ if (!dfbvideosink) {
+ GST_WARNING_OBJECT (surface, "no sink found");
+ goto beach;
+ }
+
+ /* If our geometry changed we can't reuse that image. */
+ if ((meta->width != dfbvideosink->video_width) ||
+ (meta->height != dfbvideosink->video_height) ||
+ (meta->pixel_format != dfbvideosink->pixel_format)) {
+ GST_DEBUG_OBJECT (dfbvideosink, "destroy surface %p as its size changed "
+ "%dx%d vs current %dx%d", surface, meta->width, meta->height,
+ dfbvideosink->video_width, dfbvideosink->video_height);
+ gst_dfbvideosink_surface_destroy (dfbvideosink, surface);
+ } else {
+ /* In that case we can reuse the image and add it to our image pool. */
+ GST_DEBUG_OBJECT (dfbvideosink, "recycling surface %p in pool", surface);
+ /* need to increment the refcount again to recycle */
+ gst_buffer_ref (surface);
+ g_mutex_lock (dfbvideosink->pool_lock);
+ dfbvideosink->buffer_pool = g_slist_prepend (dfbvideosink->buffer_pool,
+ surface);
+ g_mutex_unlock (dfbvideosink->pool_lock);
+ }
+
+beach:
+ return;
+}
+
/* Creates miniobject and our internal surface */
-static GstDfbSurface *
+static GstBuffer *
gst_dfbvideosink_surface_create (GstDfbVideoSink * dfbvideosink, GstCaps * caps,
size_t size)
{
- GstDfbSurface *surface = NULL;
+ GstBuffer *surface = NULL;
+ GstMetaDfbSurface *meta = NULL;
GstStructure *structure = NULL;
DFBResult ret;
DFBSurfaceDescription s_dsc;
@@ -203,25 +242,28 @@
g_return_val_if_fail (GST_IS_DFBVIDEOSINK (dfbvideosink), NULL);
- surface = (GstDfbSurface *) gst_mini_object_new (GST_TYPE_DFBSURFACE);
+ surface = gst_buffer_new ();
+ GST_MINI_OBJECT_CAST (surface)->dispose =
+ (GstMiniObjectDisposeFunction) gst_dfbsurface_dispose;
+ meta = GST_META_DFBSURFACE_ADD (surface);
/* Keep a ref to our sink */
- surface->dfbvideosink = gst_object_ref (dfbvideosink);
+ meta->dfbvideosink = gst_object_ref (dfbvideosink);
/* Surface is not locked yet */
- surface->locked = FALSE;
+ meta->locked = FALSE;
structure = gst_caps_get_structure (caps, 0);
- if (!gst_structure_get_int (structure, "width", &surface->width) ||
- !gst_structure_get_int (structure, "height", &surface->height)) {
+ if (!gst_structure_get_int (structure, "width", &meta->width) ||
+ !gst_structure_get_int (structure, "height", &meta->height)) {
GST_WARNING_OBJECT (dfbvideosink, "failed getting geometry from caps %"
GST_PTR_FORMAT, caps);
goto fallback;
}
/* Pixel format from caps */
- surface->pixel_format = gst_dfbvideosink_get_format_from_caps (caps);
- if (surface->pixel_format == DSPF_UNKNOWN) {
+ meta->pixel_format = gst_dfbvideosink_get_format_from_caps (caps);
+ if (meta->pixel_format == DSPF_UNKNOWN) {
goto fallback;
}
@@ -236,41 +278,41 @@
s_dsc.flags =
DSDESC_PIXELFORMAT | DSDESC_WIDTH | DSDESC_HEIGHT /*| DSDESC_CAPS */ ;
- s_dsc.pixelformat = surface->pixel_format;
- s_dsc.width = surface->width;
- s_dsc.height = surface->height;
+ s_dsc.pixelformat = meta->pixel_format;
+ s_dsc.width = meta->width;
+ s_dsc.height = meta->height;
/*s_dsc.caps = DSCAPS_VIDEOONLY; */
ret = dfbvideosink->dfb->CreateSurface (dfbvideosink->dfb, &s_dsc,
- &surface->surface);
+ &meta->surface);
if (ret != DFB_OK) {
GST_WARNING_OBJECT (dfbvideosink, "failed creating a DirectFB surface");
- surface->surface = NULL;
+ meta->surface = NULL;
goto fallback;
}
/* Clearing surface */
- surface->surface->Clear (surface->surface, 0x00, 0x00, 0x00, 0xFF);
+ meta->surface->Clear (meta->surface, 0x00, 0x00, 0x00, 0xFF);
/* Locking the surface to acquire the memory pointer */
- surface->surface->Lock (surface->surface, DSLF_WRITE, &data, &pitch);
- surface->locked = TRUE;
+ meta->surface->Lock (meta->surface, DSLF_WRITE, &data, &pitch);
+ meta->locked = TRUE;
GST_BUFFER_DATA (surface) = data;
- GST_BUFFER_SIZE (surface) = pitch * surface->height;
+ GST_BUFFER_SIZE (surface) = pitch * meta->height;
/* Be carefull here. If size is different from the surface size
(pitch * height), we can't use that surface through buffer alloc system
or we are going to run into serious stride issues */
if (GST_BUFFER_SIZE (surface) != size) {
GST_WARNING_OBJECT (dfbvideosink, "DirectFB surface size (%dx%d=%d) "
- "differs from GStreamer requested size %u", pitch, surface->height,
+ "differs from GStreamer requested size %u", pitch, meta->height,
GST_BUFFER_SIZE (surface), (guint) size);
goto fallback;
}
GST_DEBUG_OBJECT (dfbvideosink, "creating a %dx%d surface (%p) with %s "
- "pixel format, line pitch %d", surface->width, surface->height, surface,
- gst_dfbvideosink_get_format_name (surface->pixel_format), pitch);
+ "pixel format, line pitch %d", meta->width, meta->height, surface,
+ gst_dfbvideosink_get_format_name (meta->pixel_format), pitch);
succeeded = TRUE;
@@ -280,16 +322,17 @@
/* We allocate a standard buffer ourselves to store it in our buffer pool,
this is an optimisation for memory allocation */
- GST_BUFFER (surface)->malloc_data = g_malloc (size);
- GST_BUFFER_DATA (surface) = GST_BUFFER (surface)->malloc_data;
+ GST_BUFFER_MALLOCDATA (surface) = g_malloc (size);
+ GST_BUFFER_DATA (surface) = GST_BUFFER_MALLOCDATA (surface);
GST_BUFFER_SIZE (surface) = size;
- if (surface->surface) {
- if (surface->locked) {
- surface->surface->Unlock (surface->surface);
- surface->locked = FALSE;
+
+ if (meta->surface) {
+ if (meta->locked) {
+ meta->surface->Unlock (meta->surface);
+ meta->locked = FALSE;
}
- surface->surface->Release (surface->surface);
- surface->surface = NULL;
+ meta->surface->Release (meta->surface);
+ meta->surface = NULL;
}
GST_DEBUG_OBJECT (dfbvideosink, "allocating a buffer (%p) of %u bytes",
surface, (guint) size);
@@ -308,28 +351,29 @@
* destroyed so we just have to clean our internal stuff */
static void
gst_dfbvideosink_surface_destroy (GstDfbVideoSink * dfbvideosink,
- GstDfbSurface * surface)
+ GstBuffer * surface)
{
+ GstMetaDfbSurface *meta;
+
g_return_if_fail (GST_IS_DFBVIDEOSINK (dfbvideosink));
+ meta = GST_META_DFBSURFACE_GET (surface);
+
/* Release our internal surface */
- if (surface->surface) {
- if (surface->locked) {
- surface->surface->Unlock (surface->surface);
- surface->locked = FALSE;
+ if (meta->surface) {
+ if (meta->locked) {
+ meta->surface->Unlock (meta->surface);
+ meta->locked = FALSE;
}
- surface->surface->Release (surface->surface);
- surface->surface = NULL;
+ meta->surface->Release (meta->surface);
+ meta->surface = NULL;
}
- if (surface->dfbvideosink) {
+ if (meta->dfbvideosink) {
/* Release the ref to our sink */
- surface->dfbvideosink = NULL;
+ meta->dfbvideosink = NULL;
gst_object_unref (dfbvideosink);
}
-
- GST_MINI_OBJECT_CLASS (surface_parent_class)->finalize (GST_MINI_OBJECT
- (surface));
}
static gpointer
@@ -339,8 +383,8 @@
while (dfbvideosink->running) {
/* Wait for an event with a 50 ms timeout */
- dfbvideosink->event_buffer->
- WaitForEventWithTimeout (dfbvideosink->event_buffer, 0, 50);
+ dfbvideosink->event_buffer->WaitForEventWithTimeout (dfbvideosink->
+ event_buffer, 0, 50);
/* Do we have an event ? */
ret = dfbvideosink->event_buffer->HasEvent (dfbvideosink->event_buffer);
@@ -1515,6 +1559,7 @@
GstVideoRectangle dst, src, result;
GstFlowReturn ret = GST_FLOW_OK;
gboolean mem_cpy = TRUE;
+ GstMetaDfbSurface *meta;
dfbvideosink = GST_DFBVIDEOSINK (bsink);
@@ -1523,12 +1568,12 @@
goto beach;
}
- /* Is that a buffer we allocated ourselves ? */
- if (GST_IS_DFBSURFACE (buf)) {
- GstDfbSurface *tmp_surface = GST_DFBSURFACE (buf);
+ meta = GST_META_DFBSURFACE_GET (buf);
+ /* Is that a buffer we allocated ourselves ? */
+ if (meta != NULL) {
/* Does it have a surface ? */
- if (tmp_surface->surface) {
+ if (meta->surface) {
mem_cpy = FALSE;
GST_DEBUG_OBJECT (dfbvideosink, "we have a buffer (%p) we allocated "
"ourselves and it has a surface, no memcpy then", buf);
@@ -1624,8 +1669,6 @@
}
} else {
/* Else we will [Stretch]Blit to our primary */
- GstDfbSurface *surface = GST_DFBSURFACE (buf);
-
GST_DEBUG_OBJECT (dfbvideosink, "blitting to a primary surface (vsync %d)",
dfbvideosink->vsync);
@@ -1635,9 +1678,9 @@
dfbvideosink->primary->GetSize (dfbvideosink->primary, &dst.w, &dst.h);
/* Unlocking surface before blit */
- if (surface->locked) {
- surface->surface->Unlock (surface->surface);
- surface->locked = FALSE;
+ if (meta->locked) {
+ meta->surface->Unlock (meta->surface);
+ meta->locked = FALSE;
}
gst_video_sink_center_rect (src, dst, &result, dfbvideosink->hw_scaling);
@@ -1649,14 +1692,14 @@
if (dfbvideosink->hw_scaling) {
dfbvideosink->primary->StretchBlit (dfbvideosink->primary,
- surface->surface, NULL, (DFBRectangle *) (void *) &result);
+ meta->surface, NULL, (DFBRectangle *) (void *) &result);
} else {
DFBRectangle clip;
clip.x = clip.y = 0;
clip.w = result.w;
clip.h = result.h;
- dfbvideosink->primary->Blit (dfbvideosink->primary, surface->surface,
+ dfbvideosink->primary->Blit (dfbvideosink->primary, meta->surface,
&clip, result.x, result.y);
}
@@ -1679,7 +1722,7 @@
{
g_mutex_lock (dfbvideosink->pool_lock);
while (dfbvideosink->buffer_pool) {
- GstDfbSurface *surface = dfbvideosink->buffer_pool->data;
+ GstBuffer *surface = dfbvideosink->buffer_pool->data;
dfbvideosink->buffer_pool = g_slist_delete_link (dfbvideosink->buffer_pool,
dfbvideosink->buffer_pool);
@@ -1696,7 +1739,7 @@
GstCaps * caps, GstBuffer ** buf)
{
GstDfbVideoSink *dfbvideosink;
- GstDfbSurface *surface = NULL;
+ GstBuffer *surface = NULL;
GstFlowReturn ret = GST_FLOW_OK;
gboolean rev_nego = FALSE;
@@ -1798,7 +1841,9 @@
/* Inspect our buffer pool */
g_mutex_lock (dfbvideosink->pool_lock);
while (dfbvideosink->buffer_pool) {
- surface = (GstDfbSurface *) dfbvideosink->buffer_pool->data;
+ GstMetaDfbSurface *meta;
+
+ surface = (GstBuffer *) dfbvideosink->buffer_pool->data;
if (surface) {
/* Removing from the pool */
@@ -1806,10 +1851,12 @@
g_slist_delete_link (dfbvideosink->buffer_pool,
dfbvideosink->buffer_pool);
+ meta = GST_META_DFBSURFACE_GET (surface);
+
/* If the surface is invalid for our need, destroy */
- if ((surface->width != width) ||
- (surface->height != height) ||
- (surface->pixel_format != dfbvideosink->pixel_format)) {
+ if ((meta->width != width) ||
+ (meta->height != height) ||
+ (meta->pixel_format != dfbvideosink->pixel_format)) {
gst_dfbvideosink_surface_destroy (dfbvideosink, surface);
surface = NULL;
} else {
@@ -1832,100 +1879,34 @@
/* Now we should have a surface, set appropriate caps on it */
if (surface) {
if (rev_nego) {
- gst_buffer_set_caps (GST_BUFFER (surface), desired_caps);
+ gst_buffer_set_caps (surface, desired_caps);
} else {
- gst_buffer_set_caps (GST_BUFFER (surface), caps);
+ gst_buffer_set_caps (surface, caps);
}
}
- *buf = GST_BUFFER (surface);
+ *buf = surface;
gst_caps_unref (desired_caps);
return ret;
}
-/* Our subclass of GstBuffer */
-
-static void
-gst_dfbsurface_finalize (GstDfbSurface * surface)
+/* our metadata */
+const GstMetaInfo *
+gst_meta_dfbsurface_get_info (void)
{
- GstDfbVideoSink *dfbvideosink = NULL;
+ static const GstMetaInfo *meta_info = NULL;
- g_return_if_fail (surface != NULL);
-
- dfbvideosink = surface->dfbvideosink;
- if (!dfbvideosink) {
- GST_WARNING_OBJECT (surface, "no sink found");
- goto beach;
+ if (meta_info == NULL) {
+ meta_info = gst_meta_register ("GstMetaDfbSurface", "GstMetaDfbSurface",
+ sizeof (GstMetaDfbSurface),
+ (GstMetaInitFunction) NULL,
+ (GstMetaFreeFunction) NULL,
+ (GstMetaTransformFunction) NULL,
+ (GstMetaSerializeFunction) NULL, (GstMetaDeserializeFunction) NULL);
}
-
- /* If our geometry changed we can't reuse that image. */
- if ((surface->width != dfbvideosink->video_width) ||
- (surface->height != dfbvideosink->video_height) ||
- (surface->pixel_format != dfbvideosink->pixel_format)) {
- GST_DEBUG_OBJECT (dfbvideosink, "destroy surface %p as its size changed "
- "%dx%d vs current %dx%d", surface, surface->width, surface->height,
- dfbvideosink->video_width, dfbvideosink->video_height);
- gst_dfbvideosink_surface_destroy (dfbvideosink, surface);
- } else {
- /* In that case we can reuse the image and add it to our image pool. */
- GST_DEBUG_OBJECT (dfbvideosink, "recycling surface %p in pool", surface);
- /* need to increment the refcount again to recycle */
- gst_buffer_ref (GST_BUFFER (surface));
- g_mutex_lock (dfbvideosink->pool_lock);
- dfbvideosink->buffer_pool = g_slist_prepend (dfbvideosink->buffer_pool,
- surface);
- g_mutex_unlock (dfbvideosink->pool_lock);
- }
-
-beach:
- return;
-}
-
-static void
-gst_dfbsurface_init (GstDfbSurface * surface, gpointer g_class)
-{
- surface->surface = NULL;
- surface->width = 0;
- surface->height = 0;
- surface->pixel_format = DSPF_UNKNOWN;
- surface->dfbvideosink = NULL;
-}
-
-static void
-gst_dfbsurface_class_init (gpointer g_class, gpointer class_data)
-{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
-
- surface_parent_class = g_type_class_peek_parent (g_class);
-
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- gst_dfbsurface_finalize;
-}
-
-GType
-gst_dfbsurface_get_type (void)
-{
- static GType _gst_dfbsurface_type;
-
- if (G_UNLIKELY (_gst_dfbsurface_type == 0)) {
- static const GTypeInfo dfbsurface_info = {
- sizeof (GstBufferClass),
- NULL,
- NULL,
- gst_dfbsurface_class_init,
- NULL,
- NULL,
- sizeof (GstDfbSurface),
- 0,
- (GInstanceInitFunc) gst_dfbsurface_init,
- NULL
- };
- _gst_dfbsurface_type = g_type_register_static (GST_TYPE_BUFFER,
- "GstDfbSurface", &dfbsurface_info, 0);
- }
- return _gst_dfbsurface_type;
+ return meta_info;
}
/* Interfaces stuff */
@@ -2110,7 +2091,7 @@
}
static void
-gst_dfbvideosink_colorbalance_init (GstColorBalanceClass * iface)
+gst_dfbvideosink_colorbalance_init (GstColorBalanceInterface * iface)
{
GST_COLOR_BALANCE_TYPE (iface) = GST_COLOR_BALANCE_HARDWARE;
iface->list_channels = gst_dfbvideosink_colorbalance_list_channels;
diff --git a/ext/directfb/dfbvideosink.h b/ext/directfb/dfbvideosink.h
index bbab762..4d91141 100644
--- a/ext/directfb/dfbvideosink.h
+++ b/ext/directfb/dfbvideosink.h
@@ -35,25 +35,25 @@
typedef struct _GstDfbVideoSink GstDfbVideoSink;
typedef struct _GstDfbVideoSinkClass GstDfbVideoSinkClass;
-#define GST_TYPE_DFBSURFACE (gst_dfbsurface_get_type())
+typedef struct _GstMetaDfbSurface GstMetaDfbSurface;
-#define GST_IS_DFBSURFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DFBSURFACE))
-#define GST_DFBSURFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DFBSURFACE, GstDfbSurface))
+const GstMetaInfo * gst_meta_dfbsurface_get_info (void);
-typedef struct _GstDfbSurface GstDfbSurface;
-
-struct _GstDfbSurface {
- GstBuffer buffer; /* We extend GstBuffer */
-
+#define GST_META_DFBSURFACE_GET(buf) ((GstMetaDfbSurface *)gst_buffer_get_meta(buf,gst_meta_dfbsurface_get_info()))
+#define GST_META_DFBSURFACE_ADD(buf) ((GstMetaDfbSurface *)gst_buffer_add_meta(buf,gst_meta_dfbsurface_get_info(),NULL))
+
+struct _GstMetaDfbSurface {
+ GstMeta meta;
+
IDirectFBSurface *surface;
-
+
gint width;
gint height;
-
+
gboolean locked;
-
+
DFBSurfacePixelFormat pixel_format;
-
+
GstDfbVideoSink *dfbvideosink;
};
@@ -123,7 +123,6 @@
};
GType gst_dfbvideosink_get_type (void);
-GType gst_dfbsurface_get_type (void);
G_END_DECLS
diff --git a/ext/faac/gstfaac.c b/ext/faac/gstfaac.c
index eb132d3..63ade3b 100644
--- a/ext/faac/gstfaac.c
+++ b/ext/faac/gstfaac.c
@@ -56,11 +56,8 @@
"88200, " \
"96000"
#define SINK_CAPS \
- "audio/x-raw-int, " \
- "endianness = (int) BYTE_ORDER, " \
- "signed = (boolean) true, " \
- "width = (int) 16, " \
- "depth = (int) 16, " \
+ "audio/x-raw, " \
+ "format = (string) "GST_AUDIO_NE (S16) ", " \
"rate = (int) {" SAMPLE_RATES "}, " \
"channels = (int) [ 1, 6 ] "
@@ -125,7 +122,7 @@
guint prop_id, GValue * value, GParamSpec * pspec);
static gboolean gst_faac_configure_source_pad (GstFaac * faac);
-static GstCaps *gst_faac_getcaps (GstAudioEncoder * enc);
+static GstCaps *gst_faac_getcaps (GstAudioEncoder * enc, GstCaps * filter);
static gboolean gst_faac_start (GstAudioEncoder * enc);
static gboolean gst_faac_stop (GstAudioEncoder * enc);
@@ -144,25 +141,8 @@
#define FAAC_DEFAULT_MIDSIDE TRUE
#define FAAC_DEFAULT_SHORTCTL SHORTCTL_NORMAL
-GST_BOILERPLATE (GstFaac, gst_faac, GstAudioEncoder, GST_TYPE_AUDIO_ENCODER);
-
-static void
-gst_faac_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-
- gst_element_class_set_details_simple (element_class, "AAC audio encoder",
- "Codec/Encoder/Audio",
- "Free MPEG-2/4 AAC encoder",
- "Ronald Bultje <rbultje@ronald.bitfreak.net>");
-
- GST_DEBUG_CATEGORY_INIT (faac_debug, "faac", 0, "AAC encoding");
-}
+#define gst_faac_parent_class parent_class
+G_DEFINE_TYPE (GstFaac, gst_faac, GST_TYPE_AUDIO_ENCODER);
#define GST_TYPE_FAAC_RATE_CONTROL (gst_faac_brtype_get_type ())
static GType
@@ -209,13 +189,22 @@
gst_faac_class_init (GstFaacClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
GstAudioEncoderClass *base_class = GST_AUDIO_ENCODER_CLASS (klass);
- parent_class = g_type_class_peek_parent (klass);
-
gobject_class->set_property = gst_faac_set_property;
gobject_class->get_property = gst_faac_get_property;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_template));
+
+ gst_element_class_set_details_simple (gstelement_class, "AAC audio encoder",
+ "Codec/Encoder/Audio",
+ "Free MPEG-2/4 AAC encoder",
+ "Ronald Bultje <rbultje@ronald.bitfreak.net>");
+
base_class->start = GST_DEBUG_FUNCPTR (gst_faac_start);
base_class->stop = GST_DEBUG_FUNCPTR (gst_faac_stop);
base_class->set_format = GST_DEBUG_FUNCPTR (gst_faac_set_format);
@@ -251,10 +240,12 @@
"Block type encorcing",
GST_TYPE_FAAC_SHORTCTL, FAAC_DEFAULT_SHORTCTL,
G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ GST_DEBUG_CATEGORY_INIT (faac_debug, "faac", 0, "AAC encoding");
}
static void
-gst_faac_init (GstFaac * faac, GstFaacClass * klass)
+gst_faac_init (GstFaac * faac)
{
}
@@ -315,7 +306,7 @@
};
static GstCaps *
-gst_faac_getcaps (GstAudioEncoder * enc)
+gst_faac_getcaps (GstAudioEncoder * enc, GstCaps * filter)
{
static volatile gsize sinkcaps = 0;
@@ -338,10 +329,8 @@
}
g_value_unset (&tmp_v);
- s = gst_structure_new ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, NULL);
+ s = gst_structure_new ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_AUDIO_NE (S16), NULL);
gst_structure_set_value (s, "rate", &rates_arr);
for (i = 1; i <= 6; i++) {
@@ -588,7 +577,7 @@
/* copy it into a buffer */
codec_data = gst_buffer_new_and_alloc (config_len);
- memcpy (GST_BUFFER_DATA (codec_data), config, config_len);
+ gst_buffer_fill (codec_data, 0, config, config_len);
/* add to caps */
gst_caps_set_simple (srccaps,
@@ -647,28 +636,35 @@
GstFaac *faac = GST_FAAC (enc);
GstFlowReturn ret = GST_FLOW_OK;
GstBuffer *out_buf;
- gint size, ret_size;
- const guint8 *data;
+ gsize size, ret_size;
+ guint8 *data;
+ guint8 *out_data;
+ gsize out_size;
out_buf = gst_buffer_new_and_alloc (faac->bytes);
+ out_data = gst_buffer_map (out_buf, &out_size, NULL, GST_MAP_WRITE);
if (G_LIKELY (in_buf)) {
- data = GST_BUFFER_DATA (in_buf);
- size = GST_BUFFER_SIZE (in_buf);
+ data = gst_buffer_map (in_buf, &size, NULL, GST_MAP_READ);
} else {
data = NULL;
size = 0;
}
if (G_UNLIKELY ((ret_size = faacEncEncode (faac->handle, (gint32 *) data,
- size / faac->bps, GST_BUFFER_DATA (out_buf),
- GST_BUFFER_SIZE (out_buf))) < 0))
+ size / faac->bps, out_data, out_size)) < 0))
goto encode_failed;
+ gst_buffer_unmap (in_buf, data, size);
+
GST_LOG_OBJECT (faac, "encoder return: %d", ret_size);
+
if (ret_size > 0) {
- GST_BUFFER_SIZE (out_buf) = ret_size;
+ gst_buffer_unmap (out_buf, out_data, ret_size);
ret = gst_audio_encoder_finish_frame (enc, out_buf, faac->samples);
+ } else {
+ gst_buffer_unmap (out_buf, out_data, 0);
+ gst_buffer_unref (out_buf);
}
return ret;
@@ -677,6 +673,9 @@
encode_failed:
{
GST_ELEMENT_ERROR (faac, LIBRARY, ENCODE, (NULL), (NULL));
+ gst_buffer_unmap (in_buf, data, size);
+ gst_buffer_unmap (out_buf, out_data, 0);
+ gst_buffer_unref (out_buf);
return GST_FLOW_ERROR;
}
}
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index 252e952..4480928 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -95,24 +95,12 @@
GST_STATIC_CAPS ("audio/mpeg, " "mpegversion = (int) { 2, 4 }")
);
-#define STATIC_INT_CAPS(bpp) \
- "audio/x-raw-int, " \
- "endianness = (int) BYTE_ORDER, " \
- "signed = (bool) TRUE, " \
- "width = (int) " G_STRINGIFY (bpp) ", " \
- "depth = (int) " G_STRINGIFY (bpp) ", " \
+#define STATIC_RAW_CAPS(format) \
+ "audio/x-raw, " \
+ "format = (string) "GST_AUDIO_NE(format)", " \
"rate = (int) [ 8000, 96000 ], " \
"channels = (int) [ 1, 8 ]"
-#if 0
-#define STATIC_FLOAT_CAPS(bpp) \
- "audio/x-raw-float, " \
- "endianness = (int) BYTE_ORDER, " \
- "depth = (int) " G_STRINGIFY (bpp) ", " \
- "rate = (int) [ 8000, 96000 ], " \
- "channels = (int) [ 1, 8 ]"
-#endif
-
/*
* All except 16-bit integer are disabled until someone fixes FAAD.
* FAAD allocates approximately 8*1024*2 bytes bytes, which is enough
@@ -122,16 +110,16 @@
*/
#define STATIC_CAPS \
- STATIC_INT_CAPS (16)
+ STATIC_RAW_CAPS (S16)
#if 0
#define NOTUSED "; " \
-STATIC_INT_CAPS (24) \
+STATIC_RAW_CAPS (S24) \
"; " \
-STATIC_INT_CAPS (32) \
+STATIC_RAW_CAPS (S32) \
"; " \
-STATIC_FLOAT_CAPS (32) \
+STATIC_RAW_CAPS (F32) \
"; " \
-STATIC_FLOAT_CAPS (64)
+STATIC_RAW_CAPS (F64)
#endif
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
@@ -154,12 +142,14 @@
static gboolean gst_faad_open_decoder (GstFaad * faad);
static void gst_faad_close_decoder (GstFaad * faad);
-GST_BOILERPLATE (GstFaad, gst_faad, GstAudioDecoder, GST_TYPE_AUDIO_DECODER);
+#define gst_faad_parent_class parent_class
+G_DEFINE_TYPE (GstFaad, gst_faad, GST_TYPE_AUDIO_DECODER);
static void
-gst_faad_base_init (gpointer klass)
+gst_faad_class_init (GstFaadClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+ GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_template));
@@ -171,26 +161,18 @@
"Free MPEG-2/4 AAC decoder",
"Ronald Bultje <rbultje@ronald.bitfreak.net>");
- GST_DEBUG_CATEGORY_INIT (faad_debug, "faad", 0, "AAC decoding");
-}
-
-static void
-gst_faad_class_init (GstFaadClass * klass)
-{
- GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
base_class->start = GST_DEBUG_FUNCPTR (gst_faad_start);
base_class->stop = GST_DEBUG_FUNCPTR (gst_faad_stop);
base_class->set_format = GST_DEBUG_FUNCPTR (gst_faad_set_format);
base_class->parse = GST_DEBUG_FUNCPTR (gst_faad_parse);
base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_faad_handle_frame);
base_class->flush = GST_DEBUG_FUNCPTR (gst_faad_flush);
+
+ GST_DEBUG_CATEGORY_INIT (faad_debug, "faad", 0, "AAC decoding");
}
static void
-gst_faad_init (GstFaad * faad, GstFaadClass * klass)
+gst_faad_init (GstFaad * faad)
{
gst_faad_reset (faad);
}
@@ -280,6 +262,8 @@
GstStructure *str = gst_caps_get_structure (caps, 0);
GstBuffer *buf;
const GValue *value;
+ guint8 *cdata;
+ gsize csize;
/* clean up current decoder, rather than trying to reconfigure */
gst_faad_close_decoder (faad);
@@ -294,8 +278,6 @@
guint32 samplerate;
#endif
guint8 channels;
- guint8 *cdata;
- guint csize;
/* We have codec data, means packetised stream */
faad->packetised = TRUE;
@@ -303,8 +285,7 @@
buf = gst_value_get_buffer (value);
g_return_val_if_fail (buf != NULL, FALSE);
- cdata = GST_BUFFER_DATA (buf);
- csize = GST_BUFFER_SIZE (buf);
+ cdata = gst_buffer_map (buf, &csize, NULL, GST_MAP_READ);
if (csize < 2)
goto wrong_length;
@@ -375,18 +356,21 @@
{
GST_DEBUG_OBJECT (faad, "codec_data less than 2 bytes long");
gst_object_unref (faad);
+ gst_buffer_unmap (buf, cdata, csize);
return FALSE;
}
open_failed:
{
GST_DEBUG_OBJECT (faad, "failed to create decoder");
gst_object_unref (faad);
+ gst_buffer_unmap (buf, cdata, csize);
return FALSE;
}
init_failed:
{
GST_DEBUG_OBJECT (faad, "faacDecInit2() failed");
gst_object_unref (faad);
+ gst_buffer_unmap (buf, cdata, csize);
return FALSE;
}
}
@@ -509,11 +493,8 @@
g_free (faad->channel_positions);
faad->channel_positions = g_memdup (info->channel_position, faad->channels);
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_AUDIO_NE (S16),
"rate", G_TYPE_INT, faad->samplerate,
"channels", G_TYPE_INT, faad->channels, NULL);
@@ -535,7 +516,7 @@
GST_DEBUG_OBJECT (faad, "New output caps: %" GST_PTR_FORMAT, caps);
- ret = gst_pad_set_caps (GST_AUDIO_DECODER_SRC_PAD (faad), caps);
+ ret = gst_audio_decoder_set_outcaps (GST_AUDIO_DECODER (faad), caps);
gst_caps_unref (caps);
return ret;
@@ -662,9 +643,13 @@
*length = size;
return GST_FLOW_OK;
} else {
- data = gst_adapter_peek (adapter, size);
- return gst_faad_sync (faad, data, size, !eos, offset, length) ?
- GST_FLOW_OK : GST_FLOW_UNEXPECTED;
+ gboolean ret;
+
+ data = gst_adapter_map (adapter, size);
+ ret = gst_faad_sync (faad, data, size, !eos, offset, length);
+ gst_adapter_unmap (adapter, 0);
+
+ return (ret ? GST_FLOW_OK : GST_FLOW_UNEXPECTED);
}
}
@@ -673,7 +658,7 @@
{
GstFaad *faad;
GstFlowReturn ret = GST_FLOW_OK;
- guint input_size;
+ gsize input_size;
guchar *input_data;
GstBuffer *outbuf;
faacDecFrameInfo info;
@@ -685,8 +670,7 @@
if (G_UNLIKELY (!buffer))
return GST_FLOW_OK;
- input_data = GST_BUFFER_DATA (buffer);
- input_size = GST_BUFFER_SIZE (buffer);
+ input_data = gst_buffer_map (buffer, &input_size, NULL, GST_MAP_READ);
init:
/* init if not already done during capsnego */
@@ -764,20 +748,17 @@
goto sample_overflow;
/* note: info.samples is total samples, not per channel */
- ret =
- gst_pad_alloc_buffer_and_set_caps (GST_AUDIO_DECODER_SRC_PAD
- (faad), 0, info.samples * faad->bps,
- GST_PAD_CAPS (GST_AUDIO_DECODER_SRC_PAD (faad)), &outbuf);
- if (ret != GST_FLOW_OK)
- goto out;
-
- memcpy (GST_BUFFER_DATA (outbuf), out, GST_BUFFER_SIZE (outbuf));
+ /* FIXME, add bufferpool and allocator support to the base class */
+ outbuf = gst_buffer_new_allocate (NULL, info.samples * faad->bps, 0);
+ gst_buffer_fill (outbuf, 0, out, info.samples * faad->bps);
ret = gst_audio_decoder_finish_frame (dec, outbuf, 1);
}
} while (FALSE);
out:
+ gst_buffer_unmap (buffer, input_data, input_size);
+
return ret;
/* ERRORS */
diff --git a/ext/flite/gstflitetestsrc.c b/ext/flite/gstflitetestsrc.c
index ea7da1d..716d736 100644
--- a/ext/flite/gstflitetestsrc.c
+++ b/ext/flite/gstflitetestsrc.c
@@ -86,16 +86,13 @@
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) true, "
- "width = (int) 16, "
- "depth = (int) 16, " "rate = (int) 48000, " "channels = (int) [1,8]")
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (s16) ", "
+ "rate = (int) 48000, " "channels = (int) [1,8]")
);
-
-GST_BOILERPLATE (GstFliteTestSrc, gst_flite_test_src, GstBaseSrc,
- GST_TYPE_BASE_SRC);
+#define gst_flite_test_src_parent_class parent_class
+G_DEFINE_TYPE (GstFliteTestSrc, gst_flite_test_src, GST_TYPE_BASE_SRC);
static void gst_flite_test_src_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec);
@@ -109,55 +106,46 @@
static gboolean
gst_flite_test_src_set_caps (GstBaseSrc * basesrc, GstCaps * caps);
-
-static void
-gst_flite_test_src_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- GST_DEBUG_CATEGORY_INIT (flite_test_src_debug, "flitetestsrc", 0,
- "Flite Audio Test Source");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_flite_test_src_src_template));
- gst_element_class_set_details_simple (element_class,
- "Flite speech test source", "Source/Audio",
- "Creates audio test signals identifying channels",
- "David Schleef <ds@schleef.org>");
-}
-
static void
gst_flite_test_src_class_init (GstFliteTestSrcClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstBaseSrcClass *gstbasesrc_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstbasesrc_class = (GstBaseSrcClass *) klass;
gobject_class->set_property = gst_flite_test_src_set_property;
gobject_class->get_property = gst_flite_test_src_get_property;
- gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_flite_test_src_start);
- gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_flite_test_src_stop);
- gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_flite_test_src_create);
- gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_flite_test_src_set_caps);
-
g_object_class_install_property (gobject_class, PROP_SAMPLES_PER_BUFFER,
g_param_spec_int ("samplesperbuffer", "Samples per buffer",
"Number of samples in each outgoing buffer",
1, G_MAXINT, DEFAULT_SAMPLES_PER_BUFFER,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_flite_test_src_src_template));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "Flite speech test source", "Source/Audio",
+ "Creates audio test signals identifying channels",
+ "David Schleef <ds@schleef.org>");
+
+ gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_flite_test_src_start);
+ gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_flite_test_src_stop);
+ gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_flite_test_src_create);
+ gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_flite_test_src_set_caps);
+
+ GST_DEBUG_CATEGORY_INIT (flite_test_src_debug, "flitetestsrc", 0,
+ "Flite Audio Test Source");
}
static void
-gst_flite_test_src_init (GstFliteTestSrc * src, GstFliteTestSrcClass * g_class)
+gst_flite_test_src_init (GstFliteTestSrc * src)
{
-#if 0
- GstPad *pad = GST_BASE_SRC_PAD (src);
-#endif
-
src->samplerate = 48000;
src->samples_per_buffer = DEFAULT_SAMPLES_PER_BUFFER;
@@ -367,6 +355,7 @@
int i;
gint16 *data;
cst_wave *wave;
+ gsize size;
text = get_channel_name (src, src->channel);
@@ -377,14 +366,15 @@
GST_DEBUG ("type %s, sample_rate %d, num_samples %d, num_channels %d",
wave->type, wave->sample_rate, wave->num_samples, wave->num_channels);
- buf = gst_buffer_new_and_alloc (src->n_channels * sizeof (gint16) *
- wave->num_samples);
+ size = src->n_channels * sizeof (gint16) * wave->num_samples;
+ buf = gst_buffer_new_and_alloc (size);
- data = (void *) GST_BUFFER_DATA (buf);
- memset (data, 0, src->n_channels * sizeof (gint16) * wave->num_samples);
+ data = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
+ memset (data, 0, size);
for (i = 0; i < wave->num_samples; i++) {
data[i * src->n_channels + src->channel] = wave->samples[i];
}
+ gst_buffer_unmap (buf, data, size);
src->channel++;
if (src->channel == src->n_channels) {
diff --git a/ext/gme/gstgme.c b/ext/gme/gstgme.c
index ae49c64..974779f 100644
--- a/ext/gme/gstgme.c
+++ b/ext/gme/gstgme.c
@@ -45,7 +45,8 @@
"width = (int) 16, "
"depth = (int) 16, " "rate = (int) 32000, " "channels = (int) 2"));
-GST_BOILERPLATE (GstGmeDec, gst_gme_dec, GstElement, GST_TYPE_ELEMENT);
+#define gst_gme_dec_parent_class parent_class
+G_DEFINE_TYPE (GstGmeDec, gst_gme_dec, GST_TYPE_ELEMENT);
static GstFlowReturn gst_gme_dec_chain (GstPad * pad, GstBuffer * buffer);
static gboolean gst_gme_dec_sink_event (GstPad * pad, GstEvent * event);
@@ -104,9 +105,12 @@
}
static void
-gst_gme_dec_base_init (gpointer g_class)
+gst_gme_dec_class_init (GstGmeDecClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *element_class = (GstElementClass *) klass;
+
+ gobject_class->dispose = gst_gme_dec_dispose;
gst_element_class_set_details_simple (element_class,
"Gaming console music file decoder", "Codec/Audio/Decoder",
@@ -118,16 +122,8 @@
gst_static_pad_template_get (&sink_factory));
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
-}
-
-static void
-gst_gme_dec_class_init (GstGmeDecClass * klass)
-{
- GstElementClass *element_class = (GstElementClass *) klass;
- GObjectClass *gobject_class = (GObjectClass *) klass;
element_class->change_state = GST_DEBUG_FUNCPTR (gst_gme_dec_change_state);
- gobject_class->dispose = gst_gme_dec_dispose;
}
static const GstQueryType *
@@ -144,7 +140,7 @@
static void
-gst_gme_dec_init (GstGmeDec * gme, GstGmeDecClass * klass)
+gst_gme_dec_init (GstGmeDec * gme)
{
gme->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
/* gst_pad_set_query_function (gme->sinkpad, NULL); */
@@ -255,6 +251,7 @@
stop = GST_CLOCK_TIME_NONE;
if (start_type == GST_SEEK_TYPE_SET) {
+ GstSegment seg;
guint64 cur = gme_tell (gme->player) * GST_MSECOND;
guint64 dest = (guint64) start;
@@ -282,15 +279,19 @@
}
if (flush) {
- gst_pad_push_event (gme->srcpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (gme->srcpad, gst_event_new_flush_stop (TRUE));
}
if (stop == GST_CLOCK_TIME_NONE
&& gme->total_duration != GST_CLOCK_TIME_NONE)
stop = gme->total_duration;
- gst_pad_push_event (gme->srcpad, gst_event_new_new_segment (FALSE, rate,
- GST_FORMAT_TIME, dest, stop, dest));
+ gst_segment_init (&seg, GST_FORMAT_TIME);
+ seg.rate = rate;
+ seg.start = dest;
+ seg.stop = stop;
+ seg.time = dest;
+ gst_pad_push_event (gme->srcpad, gst_event_new_segment (&seg));
gme->seekpoint = dest / GST_MSECOND; /* nsecs to msecs */
gme->seeking = TRUE;
@@ -367,13 +368,15 @@
const int NUM_SAMPLES = 1600; /* 4 bytes (stereo 16-bit) per sample */
if (!seeking) {
+ short *data;
+
out = gst_buffer_new_and_alloc (NUM_SAMPLES * 4);
- gst_buffer_set_caps (out, GST_PAD_CAPS (pad));
GST_BUFFER_TIMESTAMP (out) = gme_tell (gme->player) * GST_MSECOND;
- gme_err =
- gme_play (gme->player, NUM_SAMPLES * 2,
- (short *) GST_BUFFER_DATA (out));
+ data = gst_buffer_map (out, NULL, NULL, GST_MAP_WRITE);
+ gme_err = gme_play (gme->player, NUM_SAMPLES * 2, data);
+ gst_buffer_unmap (out, data, -1);
+
if (gme_err) {
GST_ELEMENT_ERROR (gme, STREAM, DEMUX, (NULL), (gme_err));
gst_pad_pause_task (pad);
@@ -386,7 +389,6 @@
gme->seeking = FALSE;
out = gst_buffer_new ();
- gst_buffer_set_caps (out, GST_PAD_CAPS (pad));
}
if ((flow_return = gst_pad_push (gme->srcpad, out)) != GST_FLOW_OK) {
@@ -425,6 +427,9 @@
guint64 total_duration;
guint64 fade_time;
GstBuffer *buffer;
+ GstSegment seg;
+ guint8 *data;
+ gsize size;
if (!gst_adapter_available (gme->adapter) || !gme_negotiate (gme)) {
return FALSE;
@@ -434,9 +439,9 @@
gst_adapter_take_buffer (gme->adapter,
gst_adapter_available (gme->adapter));
- gme_err =
- gme_open_data (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer),
- &gme->player, 32000);
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
+ gme_err = gme_open_data (data, size, &gme->player, 32000);
+ gst_buffer_unmap (buffer, data, size);
gst_buffer_unref (buffer);
if (gme_err || !gme->player) {
@@ -452,7 +457,7 @@
gme_err = gme_track_info (gme->player, &info, 0);
- taglist = gst_tag_list_new ();
+ taglist = gst_tag_list_new_empty ();
if (info->song && *info->song)
gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_TITLE,
@@ -500,8 +505,8 @@
if (fade_time)
gme_set_fade (gme->player, fade_time);
- gst_pad_push_event (gme->srcpad, gst_event_new_new_segment (FALSE, 1.0,
- GST_FORMAT_TIME, 0, -1, 0));
+ gst_segment_init (&seg, GST_FORMAT_TIME);
+ gst_pad_push_event (gme->srcpad, gst_event_new_segment (&seg));
gst_pad_start_task (gme->srcpad, (GstTaskFunction) gst_gme_play, gme->srcpad);
diff --git a/ext/kate/gstkatedec.c b/ext/kate/gstkatedec.c
index df36070..6b1ee73 100644
--- a/ext/kate/gstkatedec.c
+++ b/ext/kate/gstkatedec.c
@@ -117,7 +117,8 @@
GST_STATIC_CAPS ("text/plain; text/x-pango-markup; " GST_KATE_SPU_MIME_TYPE)
);
-GST_BOILERPLATE (GstKateDec, gst_kate_dec, GstElement, GST_TYPE_ELEMENT);
+#define gst_kate_dec_parent_class parent_class
+G_DEFINE_TYPE (GstKateDec, gst_kate_dec, GST_TYPE_ELEMENT);
static void gst_kate_dec_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
@@ -130,23 +131,7 @@
static gboolean gst_kate_dec_sink_query (GstPad * pad, GstQuery * query);
static gboolean gst_kate_dec_sink_event (GstPad * pad, GstEvent * event);
static gboolean gst_kate_dec_sink_handle_event (GstPad * pad, GstEvent * event);
-static GstCaps *gst_kate_dec_src_get_caps (GstPad * pad);
-
-static void
-gst_kate_dec_base_init (gpointer gclass)
-{
-
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_set_details_simple (element_class,
- "Kate stream text decoder", "Codec/Decoder/Subtitle",
- "Decodes Kate text streams",
- "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
-}
+static GstCaps *gst_kate_dec_src_get_caps (GstPad * pad, GstCaps * filter);
/* initialize the plugin's class */
static void
@@ -170,6 +155,16 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_kate_dec_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "Kate stream text decoder", "Codec/Decoder/Subtitle",
+ "Decodes Kate text streams",
+ "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
}
/* initialize the new element
@@ -178,7 +173,7 @@
* initialize structure
*/
static void
-gst_kate_dec_init (GstKateDec * dec, GstKateDecClass * gclass)
+gst_kate_dec_init (GstKateDec * dec)
{
GST_DEBUG_OBJECT (dec, "gst_kate_dec_init");
@@ -294,12 +289,11 @@
buffer = gst_buffer_new_and_alloc (len + 1);
if (G_LIKELY (buffer)) {
const char *mime = plain ? "text/plain" : "text/x-pango-markup";
- GstCaps *caps = gst_caps_new_simple (mime, NULL);
- gst_buffer_set_caps (buffer, caps);
+ GstCaps *caps = gst_caps_new_empty_simple (mime);
gst_caps_unref (caps);
/* allocate and copy the NULs, but don't include them in passed size */
- memcpy (GST_BUFFER_DATA (buffer), escaped, len + 1);
- GST_BUFFER_SIZE (buffer) = len;
+ gst_buffer_fill (buffer, 0, escaped, len + 1);
+ gst_buffer_resize (buffer, 0, len);
GST_BUFFER_TIMESTAMP (buffer) = ev->start_time * GST_SECOND;
GST_BUFFER_DURATION (buffer) =
(ev->end_time - ev->start_time) * GST_SECOND;
@@ -330,9 +324,6 @@
if (ev->bitmap && ev->palette) {
GstBuffer *buffer = gst_kate_spu_encode_spu (kd, ev);
if (buffer) {
- GstCaps *caps = gst_caps_new_simple (GST_KATE_SPU_MIME_TYPE, NULL);
- gst_buffer_set_caps (buffer, caps);
- gst_caps_unref (caps);
GST_BUFFER_TIMESTAMP (buffer) = ev->start_time * GST_SECOND;
GST_BUFFER_DURATION (buffer) =
(ev->end_time - ev->start_time) * GST_SECOND;
@@ -416,8 +407,8 @@
GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
- gst_kate_util_decoder_base_new_segment_event (&kd->decoder, event);
+ case GST_EVENT_SEGMENT:
+ gst_kate_util_decoder_base_segment_event (&kd->decoder, event);
res = gst_pad_event_default (pad, event);
break;
@@ -442,7 +433,7 @@
}
static GstCaps *
-gst_kate_dec_src_get_caps (GstPad * pad)
+gst_kate_dec_src_get_caps (GstPad * pad, GstCaps * filter)
{
GstKateDec *kd = (GstKateDec *) (gst_object_get_parent (GST_OBJECT (pad)));
GstCaps *caps;
diff --git a/ext/kate/gstkateenc.c b/ext/kate/gstkateenc.c
index 6befaf8..8ee8b69 100644
--- a/ext/kate/gstkateenc.c
+++ b/ext/kate/gstkateenc.c
@@ -142,26 +142,10 @@
static gboolean gst_kate_enc_sink_event (GstPad * pad, GstEvent * event);
static const GstQueryType *gst_kate_enc_source_query_type (GstPad * pad);
static gboolean gst_kate_enc_source_query (GstPad * pad, GstQuery * query);
-static void gst_kate_enc_add_interfaces (GType kateenc_type);
-GST_BOILERPLATE_FULL (GstKateEnc, gst_kate_enc, GstElement,
- GST_TYPE_ELEMENT, gst_kate_enc_add_interfaces);
-
-static void
-gst_kate_enc_base_init (gpointer gclass)
-{
-
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_set_details_simple (element_class, "Kate stream encoder",
- "Codec/Encoder/Subtitle",
- "Encodes Kate streams from text or subpictures",
- "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
-}
+#define gst_kate_enc_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKateEnc, gst_kate_enc, GST_TYPE_ELEMENT,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL));
/* initialize the plugin's class */
static void
@@ -173,8 +157,6 @@
gobject_class = (GObjectClass *) klass;
gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_peek_parent (klass);
-
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_kate_enc_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_kate_enc_get_property);
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_kate_enc_dispose);
@@ -228,15 +210,16 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_kate_enc_change_state);
-}
-static void
-gst_kate_enc_add_interfaces (GType kateenc_type)
-{
- static const GInterfaceInfo tag_setter_info = { NULL, NULL, NULL };
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_factory));
- g_type_add_interface_static (kateenc_type, GST_TYPE_TAG_SETTER,
- &tag_setter_info);
+ gst_element_class_set_details_simple (gstelement_class, "Kate stream encoder",
+ "Codec/Encoder/Subtitle",
+ "Encodes Kate streams from text or subpictures",
+ "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
}
/* initialize the new element
@@ -245,7 +228,7 @@
* initialize structure
*/
static void
-gst_kate_enc_init (GstKateEnc * ke, GstKateEncClass * gclass)
+gst_kate_enc_init (GstKateEnc * ke)
{
GST_DEBUG_OBJECT (ke, "gst_kate_enc_init");
@@ -254,8 +237,6 @@
GST_DEBUG_FUNCPTR (gst_kate_enc_chain));
gst_pad_set_event_function (ke->sinkpad,
GST_DEBUG_FUNCPTR (gst_kate_enc_sink_event));
- gst_pad_set_setcaps_function (ke->sinkpad,
- GST_DEBUG_FUNCPTR (gst_kate_enc_setcaps));
gst_element_add_pad (GST_ELEMENT (ke), ke->sinkpad);
ke->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
@@ -410,14 +391,14 @@
g_return_val_if_fail (kp != NULL, NULL);
g_return_val_if_fail (kp->data != NULL, NULL);
- buffer = gst_buffer_try_new_and_alloc (kp->nbytes);
+ buffer = gst_buffer_new_allocate (NULL, kp->nbytes, 0);
if (G_UNLIKELY (!buffer)) {
GST_WARNING_OBJECT (ke, "Failed to allocate buffer for %u bytes",
(guint) kp->nbytes);
return NULL;
}
- memcpy (GST_BUFFER_DATA (buffer), kp->data, kp->nbytes);
+ gst_buffer_fill (buffer, 0, kp->data, kp->nbytes);
/* same system as other Ogg codecs, as per ext/ogg/README:
OFFSET_END is the granulepos
@@ -644,16 +625,6 @@
if (caps) {
GST_DEBUG_OBJECT (ke, "here are the caps: %" GST_PTR_FORMAT, caps);
gst_pad_set_caps (ke->srcpad, caps);
-
- GST_LOG_OBJECT (ke, "setting caps on headers");
- item = headers;
- while (item) {
- GstBuffer *buffer = item->data;
- GST_LOG_OBJECT (ke, "settings caps on header %p", buffer);
- gst_buffer_set_caps (buffer, caps);
- item = item->next;
- }
-
gst_caps_unref (caps);
GST_LOG_OBJECT (ke, "pushing headers");
@@ -869,7 +840,7 @@
#endif
GST_DEBUG_OBJECT (ke, "Encoding %ux%u SPU: (%u bytes) from %f to %f",
(guint) kbitmap->width, (guint) kbitmap->height,
- GST_BUFFER_SIZE (buf), t0, t1);
+ gst_buffer_get_size (buf), t0, t1);
ret = kate_encode_set_region (&ke->k, kregion);
if (G_UNLIKELY (ret < 0)) {
@@ -953,15 +924,18 @@
("kate_encode_set_markup_type: %d", ret));
rflow = GST_FLOW_ERROR;
} else {
- const char *text = (const char *) GST_BUFFER_DATA (buf);
+ char *text;
+ gsize text_len;
+
+ text = gst_buffer_map (buf, &text_len, NULL, GST_MAP_READ);
if (text) {
- size_t text_len = GST_BUFFER_SIZE (buf);
kate_float t0 = start / (double) GST_SECOND;
kate_float t1 = stop / (double) GST_SECOND;
GST_LOG_OBJECT (ke, "Encoding text: %*.*s (%u bytes) from %f to %f",
- (int) text_len, (int) text_len, GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf), t0, t1);
+ (int) text_len, (int) text_len, text, text_len, t0, t1);
+
ret = kate_encode_text (&ke->k, t0, t1, text, text_len, &kp);
+
if (G_UNLIKELY (ret < 0)) {
GST_ELEMENT_ERROR (ke, STREAM, ENCODE, (NULL),
("Failed to encode text: %d", ret));
@@ -976,6 +950,7 @@
("no text in text packet"));
rflow = GST_FLOW_ERROR;
}
+ gst_buffer_unmap (buf, text, text_len);
}
return rflow;
@@ -992,10 +967,10 @@
GstCaps *caps;
const gchar *mime_type = NULL;
- GST_DEBUG_OBJECT (ke, "got packet, %u bytes", GST_BUFFER_SIZE (buf));
+ GST_DEBUG_OBJECT (ke, "got packet, %u bytes", gst_buffer_get_size (buf));
/* get the type of the data we're being sent */
- caps = GST_PAD_CAPS (pad);
+ caps = gst_pad_get_current_caps (pad);
if (G_UNLIKELY (caps == NULL)) {
GST_WARNING_OBJECT (ke, "No input caps set");
rflow = GST_FLOW_NOT_NEGOTIATED;
@@ -1027,6 +1002,7 @@
} else {
GST_WARNING_OBJECT (ke, "Packet has no MIME type, ignored");
}
+ gst_caps_unref (caps);
}
gst_buffer_unref (buf);
@@ -1049,7 +1025,7 @@
switch (transition) {
case GST_STATE_CHANGE_NULL_TO_READY:
- ke->tags = gst_tag_list_new ();
+ ke->tags = gst_tag_list_new_empty ();
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
GST_DEBUG_OBJECT (ke, "READY -> PAUSED, initializing kate state");
@@ -1261,38 +1237,46 @@
gst_kate_enc_sink_event (GstPad * pad, GstEvent * event)
{
GstKateEnc *ke = GST_KATE_ENC (gst_pad_get_parent (pad));
- GstStructure *structure;
+ const GstStructure *structure;
gboolean ret;
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_kate_enc_setcaps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
+ case GST_EVENT_SEGMENT:
GST_LOG_OBJECT (ke, "Got newsegment event");
if (ke->initialized) {
GST_LOG_OBJECT (ke, "ensuring all headers are in");
if (gst_kate_enc_flush_headers (ke) != GST_FLOW_OK) {
GST_WARNING_OBJECT (ke, "Failed to flush headers");
} else {
- GstFormat format;
- gint64 timestamp;
+ GstSegment seg;
- gst_event_parse_new_segment (event, NULL, NULL, &format, ×tamp,
- NULL, NULL);
- if (format != GST_FORMAT_TIME || !GST_CLOCK_TIME_IS_VALID (timestamp)) {
+ gst_event_copy_segment (event, &seg);
+ if (seg.format != GST_FORMAT_TIME
+ || !GST_CLOCK_TIME_IS_VALID (seg.start)) {
GST_WARNING_OBJECT (ke,
"No time in newsegment event %p, format %d, timestamp %"
- G_GINT64_FORMAT, event, (int) format, timestamp);
+ G_GINT64_FORMAT, event, (int) seg.format, seg.start);
/* to be safe, we'd need to generate a keepalive anyway, but we'd have to guess at the timestamp to use; a
good guess would be the last known timestamp plus the keepalive time, but if we then get a packet with a
timestamp less than this, it would fail to encode, which would be Bad. If we don't encode a keepalive, we
run the risk of stalling the pipeline and hanging, which is Very Bad. Oh dear. We can't exit(-1), can we ? */
} else {
- float t = timestamp / (double) GST_SECOND;
+ float t = seg.start / (double) GST_SECOND;
if (ke->delayed_spu
&& t - ke->delayed_start / (double) GST_SECOND >=
ke->default_spu_duration) {
if (G_UNLIKELY (gst_kate_enc_flush_waiting (ke,
- timestamp) != GST_FLOW_OK)) {
+ seg.start) != GST_FLOW_OK)) {
GST_WARNING_OBJECT (ke, "Failed to encode delayed packet");
/* continue with new segment handling anyway */
}
@@ -1307,7 +1291,7 @@
/* we only generate a keepalive if there is no SPU waiting, as it would
mean out of sequence start times - and granulepos */
if (!ke->delayed_spu) {
- gst_kate_enc_generate_keepalive (ke, timestamp);
+ gst_kate_enc_generate_keepalive (ke, seg.start);
}
}
}
@@ -1319,7 +1303,7 @@
case GST_EVENT_CUSTOM_DOWNSTREAM:
GST_LOG_OBJECT (ke, "Got custom downstream event");
/* adapted from the dvdsubdec element */
- structure = event->structure;
+ structure = gst_event_get_structure (event);
if (structure != NULL
&& gst_structure_has_name (structure, "application/x-gst-dvd")) {
if (ke->initialized) {
diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c
index 6a72ede..80c7ca4 100644
--- a/ext/kate/gstkateparse.c
+++ b/ext/kate/gstkateparse.c
@@ -83,7 +83,8 @@
GST_STATIC_CAPS ("subtitle/x-kate; application/x-kate")
);
-GST_BOILERPLATE (GstKateParse, gst_kate_parse, GstElement, GST_TYPE_ELEMENT);
+#define gst_kate_parse_parent_class parent_class
+G_DEFINE_TYPE (GstKateParse, gst_kate_parse, GST_TYPE_ELEMENT);
static GstFlowReturn gst_kate_parse_chain (GstPad * pad, GstBuffer * buffer);
static GstStateChangeReturn gst_kate_parse_change_state (GstElement * element,
@@ -99,32 +100,27 @@
GstBuffer * buf);
static void
-gst_kate_parse_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_kate_parse_src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_kate_parse_sink_factory));
- gst_element_class_set_details_simple (element_class, "Kate stream parser",
- "Codec/Parser/Subtitle",
- "parse raw kate streams",
- "Vincent Penquerc'h <ogg.k.ogg.k at googlemail dot com>");
-}
-
-static void
gst_kate_parse_class_init (GstKateParseClass * klass)
{
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
gstelement_class->change_state = gst_kate_parse_change_state;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_kate_parse_src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_kate_parse_sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "Kate stream parser",
+ "Codec/Parser/Subtitle",
+ "parse raw kate streams",
+ "Vincent Penquerc'h <ogg.k.ogg.k at googlemail dot com>");
+
klass->parse_packet = GST_DEBUG_FUNCPTR (gst_kate_parse_parse_packet);
}
static void
-gst_kate_parse_init (GstKateParse * parse, GstKateParseClass * g_class)
+gst_kate_parse_init (GstKateParse * parse)
{
parse->sinkpad =
gst_pad_new_from_static_template (&gst_kate_parse_sink_factory, "sink");
@@ -166,7 +162,7 @@
/* get the headers into the caps, passing them to kate as we go */
caps =
gst_kate_util_set_header_on_caps (&parse->element,
- gst_pad_get_negotiated_caps (parse->sinkpad), parse->streamheader);
+ gst_pad_get_current_caps (parse->sinkpad), parse->streamheader);
if (G_UNLIKELY (!caps)) {
GST_ELEMENT_ERROR (parse, STREAM, DECODE, (NULL),
@@ -184,13 +180,18 @@
headers = parse->streamheader;
while (headers) {
+ guint8 *data;
+ gsize size;
+
outbuf = GST_BUFFER_CAST (headers->data);
- kate_packet_wrap (&packet, GST_BUFFER_SIZE (outbuf),
- GST_BUFFER_DATA (outbuf));
+
+ data = gst_buffer_map (outbuf, &size, NULL, GST_MAP_READ);
+ kate_packet_wrap (&packet, size, data);
ret = kate_decode_headerin (&parse->ki, &parse->kc, &packet);
if (G_UNLIKELY (ret < 0)) {
GST_WARNING_OBJECT (parse, "kate_decode_headerin returned %d", ret);
}
+ gst_buffer_unmap (outbuf, data, size);
/* takes ownership of outbuf, which was previously in parse->streamheader */
outbuf_list = g_list_append (outbuf_list, outbuf);
headers = headers->next;
@@ -203,7 +204,6 @@
headers = outbuf_list;
while (headers) {
outbuf = GST_BUFFER_CAST (headers->data);
- gst_buffer_set_caps (outbuf, GST_PAD_CAPS (parse->srcpad));
gst_pad_push (parse->srcpad, outbuf);
headers = headers->next;
}
@@ -255,8 +255,6 @@
GST_BUFFER_OFFSET_END (buf) = granulepos;
GST_BUFFER_TIMESTAMP (buf) = GST_BUFFER_OFFSET (buf);
- gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
-
return gst_pad_push (parse->srcpad, buf);
}
@@ -318,7 +316,7 @@
GstFlowReturn ret = GST_FLOW_OK;
gint64 granpos;
- buf = gst_buffer_make_metadata_writable (buf);
+ buf = gst_buffer_make_writable (buf);
/* oggdemux stores the granule pos in the offset end */
granpos = GST_BUFFER_OFFSET_END (buf);
@@ -347,17 +345,20 @@
gst_kate_parse_parse_packet (GstKateParse * parse, GstBuffer * buf)
{
GstFlowReturn ret = GST_FLOW_OK;
+ guint8 header[1];
+ gsize size;
g_assert (parse);
parse->packetno++;
- GST_LOG_OBJECT (parse, "Got packet %02x, %u bytes",
- GST_BUFFER_SIZE (buf) ? GST_BUFFER_DATA (buf)[0] : -1,
- GST_BUFFER_SIZE (buf));
+ size = gst_buffer_extract (buf, 0, header, 1);
- if (GST_BUFFER_SIZE (buf) > 0 && GST_BUFFER_DATA (buf)[0] & 0x80) {
- GST_DEBUG_OBJECT (parse, "Found header %02x", GST_BUFFER_DATA (buf)[0]);
+ GST_LOG_OBJECT (parse, "Got packet %02x, %u bytes",
+ size ? header[0] : -1, gst_buffer_get_size (buf));
+
+ if (size > 0 && header[0] & 0x80) {
+ GST_DEBUG_OBJECT (parse, "Found header %02x", header[0]);
/* if 0x80 is set, it's streamheader,
* so put it on the streamheader list and return */
parse->streamheader = g_list_append (parse->streamheader, buf);
@@ -387,7 +388,7 @@
g_assert (klass->parse_packet != NULL);
- if (G_UNLIKELY (GST_PAD_CAPS (pad) == NULL))
+ if (G_UNLIKELY (!gst_pad_has_current_caps (pad)))
return GST_FLOW_NOT_NEGOTIATED;
return klass->parse_packet (parse, buffer);
@@ -602,7 +603,7 @@
break;
}
- ret = parent_class->change_state (element, transition);
+ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
switch (transition) {
case GST_STATE_CHANGE_PAUSED_TO_READY:
diff --git a/ext/kate/gstkatespu.c b/ext/kate/gstkatespu.c
index 4392916..8560649 100644
--- a/ext/kate/gstkatespu.c
+++ b/ext/kate/gstkatespu.c
@@ -276,17 +276,17 @@
guint16 date;
guint16 next_command_sequence;
const guint8 *ptr;
+ guint8 *data;
guint16 sz;
+ gsize size;
- if (command_sequence_offset >= GST_BUFFER_SIZE (buf)) {
- GST_ELEMENT_ERROR (ke, STREAM, DECODE, (NULL),
- ("Command sequence offset %u is out of range %u",
- command_sequence_offset, GST_BUFFER_SIZE (buf)));
- return GST_FLOW_ERROR;
- }
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
- ptr = GST_BUFFER_DATA (buf) + command_sequence_offset;
- sz = GST_BUFFER_SIZE (buf) - command_sequence_offset;
+ if (command_sequence_offset >= size)
+ goto out_of_range;
+
+ ptr = data + command_sequence_offset;
+ sz = size - command_sequence_offset;
GST_DEBUG_OBJECT (ke, "Decoding command sequence at %u (%u bytes)",
command_sequence_offset, sz);
@@ -353,21 +353,35 @@
if (next_command_sequence != command_sequence_offset) {
GST_DEBUG_OBJECT (ke, "Jumping to next sequence at offset %u",
next_command_sequence);
+ gst_buffer_unmap (buf, data, size);
return gst_kate_spu_decode_command_sequence (ke, buf,
next_command_sequence);
} else {
+ gst_buffer_unmap (buf, data, size);
GST_DEBUG_OBJECT (ke, "No more sequences to decode");
return GST_FLOW_OK;
}
break;
default:
+ gst_buffer_unmap (buf, data, size);
GST_ELEMENT_ERROR (ke, STREAM, ENCODE, (NULL),
("Invalid SPU command: %u", cmd));
return GST_FLOW_ERROR;
}
}
+ gst_buffer_unmap (buf, data, size);
GST_ELEMENT_ERROR (ke, STREAM, ENCODE, (NULL), ("Error parsing SPU"));
return GST_FLOW_ERROR;
+
+ /* ERRORS */
+out_of_range:
+ {
+ gst_buffer_unmap (buf, data, size);
+ GST_ELEMENT_ERROR (ke, STREAM, DECODE, (NULL),
+ ("Command sequence offset %u is out of range %u",
+ command_sequence_offset, size));
+ return GST_FLOW_ERROR;
+ }
}
static inline int
@@ -451,8 +465,10 @@
gst_kate_spu_decode_spu (GstKateEnc * ke, GstBuffer * buf, kate_region * kr,
kate_bitmap * kb, kate_palette * kp)
{
- const guint8 *ptr = GST_BUFFER_DATA (buf);
- size_t sz = GST_BUFFER_SIZE (buf);
+ guint8 *data;
+ gsize size;
+ const guint8 *ptr;
+ size_t sz;
guint16 packet_size;
guint16 x, y;
size_t n;
@@ -463,6 +479,11 @@
guint16 next_command_sequence;
guint16 code;
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
+
+ ptr = data;
+ sz = size;
+
/* before decoding anything, initialize to sensible defaults */
memset (ke->spu_colormap, 0, sizeof (ke->spu_colormap));
memset (ke->spu_alpha, 0, sizeof (ke->spu_alpha));
@@ -476,19 +497,21 @@
packet_size = GST_KATE_UINT16_BE (ptr);
ADVANCE (2);
GST_DEBUG_OBJECT (ke, "packet size %u (GstBuffer size %u)", packet_size,
- GST_BUFFER_SIZE (buf));
+ size);
CHECK (2);
next_command_sequence = GST_KATE_UINT16_BE (ptr);
ADVANCE (2);
- ptr = GST_BUFFER_DATA (buf) + next_command_sequence;
- sz = GST_BUFFER_SIZE (buf) - next_command_sequence;
+ ptr = data + next_command_sequence;
+ sz = size - next_command_sequence;
GST_DEBUG_OBJECT (ke, "next command sequence at %u for %u",
next_command_sequence, (guint) sz);
rflow = gst_kate_spu_decode_command_sequence (ke, buf, next_command_sequence);
- if (G_UNLIKELY (rflow != GST_FLOW_OK))
+ if (G_UNLIKELY (rflow != GST_FLOW_OK)) {
+ gst_buffer_unmap (buf, data, size);
return rflow;
+ }
/* if no addresses or sizes were given, or if they define an empty SPU, nothing more to do */
if (G_UNLIKELY (ke->spu_right - ke->spu_left < 0
@@ -501,13 +524,16 @@
GST_WARNING_OBJECT (ke, "SPU area is empty, nothing to encode");
kate_bitmap_init (kb);
kb->width = kb->height = 0;
+ gst_buffer_unmap (buf, data, size);
return GST_FLOW_OK;
}
/* create the palette */
rflow = gst_kate_spu_create_spu_palette (ke, kp);
- if (G_UNLIKELY (rflow != GST_FLOW_OK))
+ if (G_UNLIKELY (rflow != GST_FLOW_OK)) {
+ gst_buffer_unmap (buf, data, size);
return rflow;
+ }
/* create the bitmap */
kate_bitmap_init (kb);
@@ -517,14 +543,15 @@
kb->type = kate_bitmap_type_paletted;
kb->pixels = (unsigned char *) g_malloc (kb->width * kb->height);
if (G_UNLIKELY (!kb->pixels)) {
+ gst_buffer_unmap (buf, data, size);
GST_ELEMENT_ERROR (ke, STREAM, ENCODE, (NULL),
("Failed to allocate memory for pixel data"));
return GST_FLOW_ERROR;
}
n = 0;
- pixptr[0] = GST_BUFFER_DATA (buf) + ke->spu_pix_data[0];
- pixptr[1] = GST_BUFFER_DATA (buf) + ke->spu_pix_data[1];
+ pixptr[0] = data + ke->spu_pix_data[0];
+ pixptr[1] = data + ke->spu_pix_data[1];
nybble_offset[0] = 0;
nybble_offset[1] = 0;
max_nybbles[0] = 2 * (packet_size - ke->spu_pix_data[0]);
@@ -591,6 +618,7 @@
probably going to end before the next one while being readable */
//ke->hide_time = ke->show_time + (1000 * 90 / 1024);
}
+ gst_buffer_unmap (buf, data, size);
return GST_FLOW_OK;
}
@@ -856,15 +884,12 @@
bytes[3] = first_commands_offset & 0xff;
/* Create a buffer with those values */
- buffer = gst_buffer_new ();
+ buffer = gst_buffer_new_wrapped (bytes, nbytes);
if (G_UNLIKELY (!buffer)) {
GST_WARNING_OBJECT (kd,
"Failed to allocate %" G_GSIZE_FORMAT " byte buffer", nbytes);
goto error;
}
- GST_BUFFER_DATA (buffer) = bytes;
- GST_BUFFER_MALLOCDATA (buffer) = bytes;
- GST_BUFFER_SIZE (buffer) = nbytes;
GST_BUFFER_OFFSET_END (buffer) = GST_SECOND * (ev->end_time);
GST_BUFFER_OFFSET (buffer) = GST_SECOND * (ev->start_time);
GST_BUFFER_TIMESTAMP (buffer) = GST_SECOND * (ev->start_time);
diff --git a/ext/kate/gstkatetag.c b/ext/kate/gstkatetag.c
index 34d8cf2..38e2a3c 100644
--- a/ext/kate/gstkatetag.c
+++ b/ext/kate/gstkatetag.c
@@ -97,38 +97,19 @@
GValue * value, GParamSpec * pspec);
static void gst_kate_tag_dispose (GObject * object);
-
-#define _do_init(type) \
- G_STMT_START{ \
- static const GInterfaceInfo tag_setter_info = { \
- NULL, \
- NULL, \
- NULL \
- }; \
- g_type_add_interface_static (type, GST_TYPE_TAG_SETTER, \
- &tag_setter_info); \
- }G_STMT_END
-
-GST_BOILERPLATE_FULL (GstKateTag, gst_kate_tag, GstKateParse,
- GST_TYPE_KATE_PARSE, _do_init);
-
-static void
-gst_kate_tag_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Kate stream tagger",
- "Formatter/Metadata",
- "Retags kate streams", "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
-}
+#define gst_kate_tag_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKateTag, gst_kate_tag, GST_TYPE_KATE_PARSE,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL));
static void
gst_kate_tag_class_init (GstKateTagClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstKateParseClass *gstkateparse_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
gstkateparse_class = GST_KATE_PARSE_CLASS (klass);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_kate_tag_set_property);
@@ -155,12 +136,16 @@
"Set the height of the canvas this stream was authored for (0 is unspecified)",
0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ gst_element_class_set_details_simple (gstelement_class, "Kate stream tagger",
+ "Formatter/Metadata",
+ "Retags kate streams", "Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com>");
+
gstkateparse_class->parse_packet =
GST_DEBUG_FUNCPTR (gst_kate_tag_parse_packet);
}
static void
-gst_kate_tag_init (GstKateTag * kt, GstKateTagClass * g_class)
+gst_kate_tag_init (GstKateTag * kt)
{
kt->language = NULL;
kt->category = NULL;
@@ -281,44 +266,52 @@
GstKateTag *kt;
gchar *encoder = NULL;
GstBuffer *new_buf;
+ guint8 *data;
+ gsize size;
kt = GST_KATE_TAG (parse);
- /* rewrite the language and category */
- if (GST_BUFFER_SIZE (buffer) >= 64 && GST_BUFFER_DATA (buffer)[0] == 0x80) {
- GstBuffer *new_buffer = gst_buffer_copy (buffer);
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
+ /* rewrite the language and category */
+ if (size >= 64 && data[0] == 0x80) {
+ GstBuffer *new_buffer;
+
+ gst_buffer_unmap (buffer, data, size);
+ new_buffer = gst_buffer_copy (buffer);
gst_buffer_unref (buffer);
buffer = new_buffer;
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READWRITE);
/* language is at offset 32, 16 bytes, zero terminated */
if (kt->language) {
- strncpy ((char *) GST_BUFFER_DATA (buffer) + 32, kt->language, 15);
- GST_BUFFER_DATA (buffer)[47] = 0;
+ strncpy ((char *) data + 32, kt->language, 15);
+ data[47] = 0;
}
/* category is at offset 48, 16 bytes, zero terminated */
if (kt->category) {
- strncpy ((char *) GST_BUFFER_DATA (buffer) + 48, kt->category, 15);
- GST_BUFFER_DATA (buffer)[63] = 0;
+ strncpy ((char *) data + 48, kt->category, 15);
+ data[63] = 0;
}
if (kt->original_canvas_width >= 0) {
guint16 v = encode_canvas_size (kt->original_canvas_width);
- GST_BUFFER_DATA (buffer)[16] = v & 0xff;
- GST_BUFFER_DATA (buffer)[17] = (v >> 8) & 0xff;
+ data[16] = v & 0xff;
+ data[17] = (v >> 8) & 0xff;
}
if (kt->original_canvas_height >= 0) {
guint16 v = encode_canvas_size (kt->original_canvas_height);
- GST_BUFFER_DATA (buffer)[18] = v & 0xff;
- GST_BUFFER_DATA (buffer)[19] = (v >> 8) & 0xff;
+ data[18] = v & 0xff;
+ data[19] = (v >> 8) & 0xff;
}
}
/* rewrite the comments packet */
- if (GST_BUFFER_SIZE (buffer) >= 9 && GST_BUFFER_DATA (buffer)[0] == 0x81) {
+ if (size >= 9 && data[0] == 0x81) {
old_tags =
- gst_tag_list_from_vorbiscomment_buffer (buffer,
+ gst_tag_list_from_vorbiscomment (data, size,
(const guint8 *) "\201kate\0\0\0\0", 9, &encoder);
user_tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (kt));
+ gst_buffer_unmap (buffer, data, size);
/* build new tag list */
new_tags = gst_tag_list_merge (user_tags, old_tags,
@@ -328,16 +321,18 @@
new_buf =
gst_tag_list_to_vorbiscomment_buffer (new_tags,
(const guint8 *) "\201kate\0\0\0\0", 9, encoder);
- gst_buffer_copy_metadata (new_buf, buffer, GST_BUFFER_COPY_TIMESTAMPS);
+ gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
gst_tag_list_free (new_tags);
g_free (encoder);
gst_buffer_unref (buffer);
/* the buffer will have the framing bit used by Vorbis, but we don't use it */
- --GST_BUFFER_SIZE (new_buf);
+ gst_buffer_resize (new_buf, 0, gst_buffer_get_size (new_buf) - 1);
buffer = new_buf;
+ } else {
+ gst_buffer_unmap (buffer, data, size);
}
return GST_KATE_PARSE_CLASS (parent_class)->parse_packet (parse, buffer);
diff --git a/ext/kate/gstkateutil.c b/ext/kate/gstkateutil.c
index 3062d5c..787bc3e 100644
--- a/ext/kate/gstkateutil.c
+++ b/ext/kate/gstkateutil.c
@@ -247,12 +247,16 @@
int ret;
GstFlowReturn rflow = GST_FLOW_OK;
gboolean is_header;
+ guint8 *data;
+ gsize size;
+ guint8 header[1];
+
+ size = gst_buffer_extract (buf, 0, header, 1);
GST_DEBUG_OBJECT (element, "got kate packet, %u bytes, type %02x",
- GST_BUFFER_SIZE (buf),
- GST_BUFFER_SIZE (buf) == 0 ? -1 : GST_BUFFER_DATA (buf)[0]);
+ gst_buffer_get_size (buf), size == 0 ? -1 : header[0]);
- is_header = GST_BUFFER_SIZE (buf) > 0 && (GST_BUFFER_DATA (buf)[0] & 0x80);
+ is_header = size > 0 && (header[0] & 0x80);
if (!is_header && decoder->tags) {
/* after we've processed headers, send any tags before processing the data packet */
@@ -262,8 +266,11 @@
decoder->tags = NULL;
}
- kate_packet_wrap (&kp, GST_BUFFER_SIZE (buf), GST_BUFFER_DATA (buf));
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
+ kate_packet_wrap (&kp, size, data);
ret = kate_high_decode_packetin (&decoder->k, &kp, ev);
+ gst_buffer_unmap (buf, data, size);
+
if (G_UNLIKELY (ret < 0)) {
GST_ELEMENT_ERROR (element, STREAM, DECODE, (NULL),
("Failed to decode Kate packet: %d", ret));
@@ -277,7 +284,7 @@
/* headers may be interesting to retrieve information from */
if (G_UNLIKELY (is_header)) {
- switch (GST_BUFFER_DATA (buf)[0]) {
+ switch (header[0]) {
case 0x80: /* ID header */
GST_INFO_OBJECT (element, "Parsed ID header: language %s, category %s",
decoder->k.ki->language, decoder->k.ki->category);
@@ -288,11 +295,11 @@
}
if (strcmp (decoder->k.ki->category, "K-SPU") == 0 ||
strcmp (decoder->k.ki->category, "spu-subtitles") == 0) {
- *src_caps = gst_caps_new_simple ("video/x-dvd-subpicture", NULL);
+ *src_caps = gst_caps_new_empty_simple ("video/x-dvd-subpicture");
} else if (decoder->k.ki->text_markup_type == kate_markup_none) {
- *src_caps = gst_caps_new_simple ("text/plain", NULL);
+ *src_caps = gst_caps_new_empty_simple ("text/plain");
} else {
- *src_caps = gst_caps_new_simple ("text/x-pango-markup", NULL);
+ *src_caps = gst_caps_new_empty_simple ("text/x-pango-markup");
}
GST_INFO_OBJECT (srcpad, "Setting caps: %" GST_PTR_FORMAT, *src_caps);
if (!gst_pad_set_caps (srcpad, *src_caps)) {
@@ -301,7 +308,7 @@
}
}
if (decoder->k.ki->language && *decoder->k.ki->language) {
- GstTagList *old = decoder->tags, *tags = gst_tag_list_new ();
+ GstTagList *old = decoder->tags, *tags = gst_tag_list_new_empty ();
if (tags) {
gchar *lang_code;
@@ -350,7 +357,7 @@
if (!decoder->tags) {
GST_ERROR_OBJECT (element, "failed to decode comment header");
- decoder->tags = gst_tag_list_new ();
+ decoder->tags = gst_tag_list_new_empty ();
}
if (encoder) {
gst_tag_list_add (decoder->tags, GST_TAG_MERGE_REPLACE,
@@ -387,7 +394,7 @@
else if (*ev && (*ev)->meta) {
int count = kate_meta_query_count ((*ev)->meta);
if (count > 0) {
- GstTagList *evtags = gst_tag_list_new ();
+ GstTagList *evtags = gst_tag_list_new_empty ();
int idx;
GST_DEBUG_OBJECT (decoder, "Kate event has %d attached metadata", count);
for (idx = 0; idx < count; ++idx) {
@@ -484,37 +491,23 @@
}
void
-gst_kate_util_decoder_base_new_segment_event (GstKateDecoderBase * decoder,
+gst_kate_util_decoder_base_segment_event (GstKateDecoderBase * decoder,
GstEvent * event)
{
- gboolean update;
- gdouble rate;
- GstFormat format;
- gint64 start, stop, time;
- gdouble arate;
+ GstSegment seg;
- gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
- &start, &stop, &time);
- GST_DEBUG_OBJECT (decoder, "kate pad segment:"
- " Update %d, rate %g arate %g format %d start %" GST_TIME_FORMAT
- " %" GST_TIME_FORMAT " position %" GST_TIME_FORMAT,
- update, rate, arate, format, GST_TIME_ARGS (start),
- GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
- if (!update) {
- /* Tiger uses this segment is used to remap the video running time to the
- Kate running time. The sending of segment updates to keep streams in sync
- does kinda rain on our parade though, and since we don't need these,
- we just ignore those here */
- gst_segment_set_newsegment_full (&decoder->kate_segment, update, rate,
- arate, format, start, stop, time);
- }
+ gst_event_copy_segment (event, &seg);
+
+ GST_DEBUG_OBJECT (decoder, "kate pad segment: %" GST_SEGMENT_FORMAT, &seg);
+
+ decoder->kate_segment = seg;
}
gboolean
gst_kate_util_decoder_base_update_segment (GstKateDecoderBase * decoder,
GstElement * element, GstBuffer * buf)
{
- gint64 clip_start = 0, clip_stop = 0;
+ guint64 clip_start = 0, clip_stop = 0;
gboolean in_seg;
if (decoder->kate_flushing) {
@@ -538,8 +531,7 @@
if (in_seg) {
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
- gst_segment_set_last_stop (&decoder->kate_segment, GST_FORMAT_TIME,
- clip_start);
+ decoder->kate_segment.position = clip_start;
}
} else {
GST_INFO_OBJECT (element, "Kate buffer not in segment, ignored");
diff --git a/ext/kate/gstkateutil.h b/ext/kate/gstkateutil.h
index 27b6f70..a837369 100644
--- a/ext/kate/gstkateutil.h
+++ b/ext/kate/gstkateutil.h
@@ -82,7 +82,7 @@
gst_kate_util_decoder_base_set_flushing (GstKateDecoderBase * decoder,
gboolean flushing);
extern void
-gst_kate_util_decoder_base_new_segment_event (GstKateDecoderBase * decoder,
+gst_kate_util_decoder_base_segment_event (GstKateDecoderBase * decoder,
GstEvent * event);
extern gboolean
gst_kate_util_decoder_base_update_segment (GstKateDecoderBase * decoder,
diff --git a/ext/libmms/gstmms.c b/ext/libmms/gstmms.c
index cf7a091..0e6c68a 100644
--- a/ext/libmms/gstmms.c
+++ b/ext/libmms/gstmms.c
@@ -70,42 +70,16 @@
static gboolean gst_mms_uri_set_uri (GstURIHandler * handler,
const gchar * uri);
-static void
-gst_mms_urihandler_init (GType mms_type)
-{
- static const GInterfaceInfo urihandler_info = {
- gst_mms_uri_handler_init,
- NULL,
- NULL
- };
-
- g_type_add_interface_static (mms_type, GST_TYPE_URI_HANDLER,
- &urihandler_info);
-}
-
-GST_BOILERPLATE_FULL (GstMMS, gst_mms, GstPushSrc, GST_TYPE_PUSH_SRC,
- gst_mms_urihandler_init);
-
-static void
-gst_mms_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_set_details_simple (element_class, "MMS streaming source",
- "Source/Network",
- "Receive data streamed via MSFT Multi Media Server protocol",
- "Maciej Katafiasz <mathrick@users.sourceforge.net>");
-
- GST_DEBUG_CATEGORY_INIT (mmssrc_debug, "mmssrc", 0, "MMS Source Element");
-}
+#define gst_mms_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstMMS, gst_mms, GST_TYPE_PUSH_SRC,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_mms_uri_handler_init));
/* initialize the plugin's class */
static void
gst_mms_class_init (GstMMSClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
GstBaseSrcClass *gstbasesrc_class = (GstBaseSrcClass *) klass;
GstPushSrcClass *gstpushsrc_class = (GstPushSrcClass *) klass;
@@ -125,6 +99,16 @@
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* Note: connection-speed is intentionaly limited to G_MAXINT as libmms use int for it */
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "MMS streaming source", "Source/Network",
+ "Receive data streamed via MSFT Multi Media Server protocol",
+ "Maciej Katafiasz <mathrick@users.sourceforge.net>");
+
+ GST_DEBUG_CATEGORY_INIT (mmssrc_debug, "mmssrc", 0, "MMS Source Element");
+
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_mms_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_mms_stop);
@@ -144,7 +128,7 @@
* initialize structure
*/
static void
-gst_mms_init (GstMMS * mmssrc, GstMMSClass * g_class)
+gst_mms_init (GstMMS * mmssrc)
{
mmssrc->uri_name = NULL;
mmssrc->current_connection_uri_name = NULL;
@@ -264,7 +248,7 @@
of the segment. */
gst_segment_init (segment, seek_format);
- gst_segment_set_seek (segment, rate, seek_format, flags, cur_type, cur,
+ gst_segment_do_seek (segment, rate, seek_format, flags, cur_type, cur,
stop_type, stop, NULL);
return TRUE;
@@ -301,7 +285,7 @@
return FALSE;
}
gst_segment_init (segment, GST_FORMAT_BYTES);
- gst_segment_set_seek (segment, segment->rate, GST_FORMAT_BYTES,
+ gst_segment_do_seek (segment, segment->rate, GST_FORMAT_BYTES,
segment->flags, GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_NONE,
segment->stop, NULL);
return TRUE;
@@ -339,35 +323,30 @@
else
blocksize = mmsx_get_asf_packet_len (mmssrc->connection);
- *buf = gst_buffer_try_new_and_alloc (blocksize);
- if (!*buf) {
+ data = g_try_malloc (blocksize);
+ if (!data) {
GST_ERROR_OBJECT (mmssrc, "Failed to allocate %u bytes", blocksize);
return GST_FLOW_ERROR;
}
- data = GST_BUFFER_DATA (*buf);
- GST_BUFFER_SIZE (*buf) = 0;
GST_LOG_OBJECT (mmssrc, "reading %d bytes", blocksize);
result = mmsx_read (NULL, mmssrc->connection, (char *) data, blocksize);
-
/* EOS? */
if (result == 0)
goto eos;
+ *buf = gst_buffer_new_wrapped (data, result);
GST_BUFFER_OFFSET (*buf) = offset;
- GST_BUFFER_SIZE (*buf) = result;
GST_LOG_OBJECT (mmssrc, "Returning buffer with offset %" G_GINT64_FORMAT
- " and size %u", GST_BUFFER_OFFSET (*buf), GST_BUFFER_SIZE (*buf));
-
- gst_buffer_set_caps (*buf, GST_PAD_CAPS (GST_BASE_SRC_PAD (mmssrc)));
+ " and size %u", offset, result);
return GST_FLOW_OK;
eos:
{
GST_DEBUG_OBJECT (mmssrc, "EOS");
- gst_buffer_unref (*buf);
+ g_free (data);
*buf = NULL;
return GST_FLOW_UNEXPECTED;
}
@@ -544,13 +523,13 @@
}
static GstURIType
-gst_mms_uri_get_type (void)
+gst_mms_uri_get_type (GType type)
{
return GST_URI_SRC;
}
static gchar **
-gst_mms_uri_get_protocols (void)
+gst_mms_uri_get_protocols (GType type)
{
static const gchar *protocols[] = { "mms", "mmsh", "mmst", "mmsu", NULL };
diff --git a/ext/resindvd/rsnparsetter.c b/ext/resindvd/rsnparsetter.c
index 02fdd1f..a69366f 100644
--- a/ext/resindvd/rsnparsetter.c
+++ b/ext/resindvd/rsnparsetter.c
@@ -121,13 +121,16 @@
rsn_parsetter_chain (GstPad * pad, GstBuffer * buf)
{
RsnParSetter *parset = RSN_PARSETTER (GST_OBJECT_PARENT (pad));
+ RsnMetaWrapped *meta;
+
+ meta = RSN_META_WRAPPED_GET (buf);
/* If this is a buffer we wrapped up earlier, unwrap it now */
- if (RSN_IS_WRAPPEDBUFFER (buf)) {
- RsnWrappedBuffer *wrap_buf = RSN_WRAPPEDBUFFER (buf);
+ if (meta != NULL) {
+ GstBuffer *wrap_buf = buf;
- if (wrap_buf->owner == GST_ELEMENT (parset)) {
- buf = rsn_wrappedbuffer_unwrap_and_unref (wrap_buf);
+ if (meta->owner == GST_ELEMENT (parset)) {
+ buf = rsn_meta_wrapped_unwrap_and_unref (wrap_buf, meta);
GST_DEBUG_OBJECT (parset, "Unwrapping %p yields buffer %p with caps %"
GST_PTR_FORMAT, wrap_buf, buf, GST_BUFFER_CAPS (buf));
}
@@ -376,15 +379,12 @@
if (ret != GST_FLOW_OK)
return ret;
- outbuf = (GstBuffer *) rsn_wrapped_buffer_new (orig_buf);
+ outbuf = rsn_wrapped_buffer_new (orig_buf, GST_ELEMENT_CAST (parset));
if (!outbuf) {
/* FIXME: Throw error */
return GST_FLOW_ERROR;
}
- rsn_wrapped_buffer_set_owner (RSN_WRAPPEDBUFFER (outbuf),
- GST_ELEMENT (parset));
-
gst_buffer_set_caps (outbuf, caps);
GST_LOG_OBJECT (parset,
diff --git a/ext/resindvd/rsnwrappedbuffer.c b/ext/resindvd/rsnwrappedbuffer.c
index 516cf35..a5f4c0f 100644
--- a/ext/resindvd/rsnwrappedbuffer.c
+++ b/ext/resindvd/rsnwrappedbuffer.c
@@ -26,53 +26,19 @@
#include "rsnwrappedbuffer.h"
-G_DEFINE_TYPE (RsnWrappedBuffer, rsn_wrappedbuffer, GST_TYPE_BUFFER);
-
-static gboolean
-rsn_wrapped_buffer_default_release (GstElement * owner, RsnWrappedBuffer * buf);
-
-static void rsn_wrapped_buffer_finalize (RsnWrappedBuffer * wrap_buf);
-
-static void
-rsn_wrappedbuffer_class_init (RsnWrappedBufferClass * klass)
+GstBuffer *
+rsn_wrapped_buffer_new (GstBuffer * buf_to_wrap, GstElement * owner)
{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (klass);
+ GstBuffer *buf;
+ RsnMetaWrapped *meta;
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- rsn_wrapped_buffer_finalize;
-}
-
-static void
-rsn_wrappedbuffer_init (RsnWrappedBuffer * self)
-{
- self->release = rsn_wrapped_buffer_default_release;
-}
-
-static void
-rsn_wrapped_buffer_finalize (RsnWrappedBuffer * wrap_buf)
-{
- if (wrap_buf->release) {
- /* Release might increment the refcount to recycle and return TRUE,
- * in which case, exit without chaining up */
- if (wrap_buf->release (wrap_buf->owner, wrap_buf))
- return;
- }
-
- GST_MINI_OBJECT_CLASS (rsn_wrappedbuffer_parent_class)->finalize
- (GST_MINI_OBJECT (wrap_buf));
-}
-
-RsnWrappedBuffer *
-rsn_wrapped_buffer_new (GstBuffer * buf_to_wrap)
-{
- RsnWrappedBuffer *buf;
g_return_val_if_fail (buf_to_wrap, NULL);
- buf = (RsnWrappedBuffer *) gst_mini_object_new (RSN_TYPE_WRAPPEDBUFFER);
- if (buf == NULL)
- return NULL;
+ buf = gst_buffer_new ();
+ meta = RSN_META_WRAPPED_ADD (buf);
- buf->wrapped_buffer = buf_to_wrap;
+ meta->wrapped_buffer = buf_to_wrap;
+ meta->owner = gst_object_ref (owner);
GST_BUFFER_DATA (buf) = GST_BUFFER_DATA (buf_to_wrap);
GST_BUFFER_SIZE (buf) = GST_BUFFER_SIZE (buf_to_wrap);
@@ -86,52 +52,29 @@
}
void
-rsn_wrapped_buffer_set_owner (RsnWrappedBuffer * wrapped_buf,
- GstElement * owner)
+rsn_meta_wrapped_set_owner (RsnMetaWrapped * meta, GstElement * owner)
{
- g_return_if_fail (wrapped_buf != NULL);
+ g_return_if_fail (meta != NULL);
- if (wrapped_buf->owner)
- gst_object_unref (wrapped_buf->owner);
+ if (meta->owner)
+ gst_object_unref (meta->owner);
if (owner)
- wrapped_buf->owner = gst_object_ref (owner);
- else
- wrapped_buf->owner = NULL;
-}
+ gst_object_ref (owner);
-void
-rsn_wrapped_buffer_set_releasefunc (RsnWrappedBuffer * wrapped_buf,
- RsnWrappedBufferReleaseFunc release_func)
-{
- g_return_if_fail (wrapped_buf != NULL);
-
- wrapped_buf->release = release_func;
-}
-
-static gboolean
-rsn_wrapped_buffer_default_release (GstElement * owner, RsnWrappedBuffer * buf)
-{
- g_return_val_if_fail (buf != NULL, FALSE);
- g_return_val_if_fail (buf->wrapped_buffer != NULL, FALSE);
-
- gst_buffer_unref (buf->wrapped_buffer);
- if (buf->owner)
- gst_object_unref (buf->owner);
-
- return FALSE;
+ meta->owner = owner;
}
GstBuffer *
-rsn_wrappedbuffer_unwrap_and_unref (RsnWrappedBuffer * wrap_buf)
+rsn_meta_wrapped_unwrap_and_unref (GstBuffer * wrap_buf, RsnMetaWrapped * meta)
{
GstBuffer *buf;
gboolean is_readonly;
g_return_val_if_fail (wrap_buf != NULL, NULL);
- g_return_val_if_fail (wrap_buf->wrapped_buffer != NULL, NULL);
+ g_return_val_if_fail (meta->wrapped_buffer != NULL, NULL);
- buf = gst_buffer_ref (wrap_buf->wrapped_buffer);
+ buf = gst_buffer_ref (meta->wrapped_buffer);
buf = gst_buffer_make_metadata_writable (buf);
/* Copy changed metadata back to the wrapped buffer from the wrapper,
@@ -142,7 +85,37 @@
if (!is_readonly)
GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_READONLY);
- gst_buffer_unref (GST_BUFFER (wrap_buf));
+ gst_buffer_unref (wrap_buf);
return buf;
}
+
+static void
+rsn_meta_wrapped_init (RsnMetaWrapped * meta, GstBuffer * buffer)
+{
+ meta->owner = NULL;
+}
+
+static void
+rsn_meta_wrapped_free (RsnMetaWrapped * meta, GstBuffer * buffer)
+{
+ gst_buffer_unref (meta->wrapped_buffer);
+ if (meta->owner)
+ gst_object_unref (meta->owner);
+}
+
+const GstMetaInfo *
+rsn_meta_wrapped_get_info (void)
+{
+ static const GstMetaInfo *meta_info = NULL;
+
+ if (meta_info == NULL) {
+ meta_info = gst_meta_register ("RsnMetaWrapped", "RsnMetaWrapped",
+ sizeof (RsnMetaWrapped),
+ (GstMetaInitFunction) rsn_meta_wrapped_init,
+ (GstMetaFreeFunction) rsn_meta_wrapped_free,
+ (GstMetaTransformFunction) NULL,
+ (GstMetaSerializeFunction) NULL, (GstMetaDeserializeFunction) NULL);
+ }
+ return meta_info;
+}
diff --git a/ext/resindvd/rsnwrappedbuffer.h b/ext/resindvd/rsnwrappedbuffer.h
index 7c6a0e7..3c0afe2 100644
--- a/ext/resindvd/rsnwrappedbuffer.h
+++ b/ext/resindvd/rsnwrappedbuffer.h
@@ -24,45 +24,25 @@
G_BEGIN_DECLS
-#define RSN_TYPE_WRAPPEDBUFFER (rsn_wrappedbuffer_get_type())
-#define RSN_WRAPPEDBUFFER(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), RSN_TYPE_WRAPPEDBUFFER, \
- RsnWrappedBuffer))
-#define RSN_WRAPPEDBUFFER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), RSN_TYPE_WRAPPEDBUFFER, \
- RsnWrappedBufferClass))
-#define RSN_IS_WRAPPEDBUFFER(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), RSN_TYPE_WRAPPEDBUFFER))
-#define RSN_IS_WRAPPEDBUFFER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), RSN_TYPE_WRAPPEDBUFFER))
+typedef struct _RsnMetaWrapped RsnMetaWrapped;
-typedef struct _RsnWrappedBuffer RsnWrappedBuffer;
-typedef struct _RsnWrappedBufferClass RsnWrappedBufferClass;
-
-typedef gboolean (*RsnWrappedBufferReleaseFunc)(GstElement *owner,
- RsnWrappedBuffer *buf);
-
-struct _RsnWrappedBuffer {
- GstBuffer buffer;
+struct _RsnMetaWrapped {
+ GstMeta meta;
GstBuffer *wrapped_buffer;
GstElement *owner;
- RsnWrappedBufferReleaseFunc release;
};
-struct _RsnWrappedBufferClass
-{
- GstBufferClass parent_class;
-};
+GstBuffer *rsn_wrapped_buffer_new (GstBuffer *buf_to_wrap, GstElement *owner);
-RsnWrappedBuffer *rsn_wrapped_buffer_new (GstBuffer *buf_to_wrap);
-GstBuffer *rsn_wrappedbuffer_unwrap_and_unref (RsnWrappedBuffer *wrap_buf);
-void rsn_wrapped_buffer_set_owner (RsnWrappedBuffer *wrapped_buf,
- GstElement *owner);
-void rsn_wrapped_buffer_set_releasefunc (RsnWrappedBuffer *wrapped_buf,
- RsnWrappedBufferReleaseFunc release_func);
+GstBuffer *rsn_meta_wrapped_unwrap_and_unref (GstBuffer *wrap_buf, RsnMetaWrapped *meta);
-GType rsn_wrappedbuffer_get_type (void);
+void rsn_meta_wrapped_set_owner (RsnMetaWrapped *meta, GstElement *owner);
+
+const GstMetaInfo * rsn_meta_wrapped_get_info (void);
+
+#define RSN_META_WRAPPED_GET(buf) ((RsnMetaWrapped *)gst_buffer_get_meta(buf,rsn_meta_wrapped_get_info()))
+#define RSN_META_WRAPPED_ADD(buf) ((RsnMetaWrapped *)gst_buffer_add_meta(buf,rsn_meta_wrapped_get_info(),NULL))
G_END_DECLS
diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c
index 90a1a79..6137ee5 100644
--- a/ext/rtmp/gstrtmpsink.c
+++ b/ext/rtmp/gstrtmpsink.c
@@ -75,63 +75,50 @@
static gboolean gst_rtmp_sink_start (GstBaseSink * sink);
static GstFlowReturn gst_rtmp_sink_render (GstBaseSink * sink, GstBuffer * buf);
-static void
-_do_init (GType gtype)
-{
- static const GInterfaceInfo urihandler_info = {
- gst_rtmp_sink_uri_handler_init,
- NULL,
- NULL
- };
-
- g_type_add_interface_static (gtype, GST_TYPE_URI_HANDLER, &urihandler_info);
-
- GST_DEBUG_CATEGORY_INIT (gst_rtmp_sink_debug, "rtmpsink", 0,
- "RTMP server element");
-}
-
-GST_BOILERPLATE_FULL (GstRTMPSink, gst_rtmp_sink, GstBaseSink,
- GST_TYPE_BASE_SINK, _do_init);
-
-
-static void
-gst_rtmp_sink_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details_simple (element_class,
- "RTMP output sink",
- "Sink/Network", "Sends FLV content to a server via RTMP",
- "Jan Schmidt <thaytan@noraisin.net>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-}
+#define gst_rtmp_sink_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstRTMPSink, gst_rtmp_sink, GST_TYPE_BASE_SINK,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER,
+ gst_rtmp_sink_uri_handler_init));
/* initialize the plugin's class */
static void
gst_rtmp_sink_class_init (GstRTMPSinkClass * klass)
{
GObjectClass *gobject_class;
- GstBaseSinkClass *gstbasesink_class = (GstBaseSinkClass *) klass;
+ GstElementClass *gstelement_class;
+ GstBaseSinkClass *gstbasesink_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+ gstbasesink_class = (GstBaseSinkClass *) klass;
+
gobject_class->set_property = gst_rtmp_sink_set_property;
gobject_class->get_property = gst_rtmp_sink_get_property;
+ gst_element_class_install_std_props (gstelement_class,
+ "location", PROP_LOCATION, G_PARAM_READWRITE, NULL);
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "RTMP output sink",
+ "Sink/Network", "Sends FLV content to a server via RTMP",
+ "Jan Schmidt <thaytan@noraisin.net>");
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_template));
+
gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_sink_start);
gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_sink_stop);
gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_rtmp_sink_render);
- gst_element_class_install_std_props (GST_ELEMENT_CLASS (klass),
- "location", PROP_LOCATION, G_PARAM_READWRITE, NULL);
+ GST_DEBUG_CATEGORY_INIT (gst_rtmp_sink_debug, "rtmpsink", 0,
+ "RTMP server element");
}
/* initialize the new element
* initialize instance structure
*/
static void
-gst_rtmp_sink_init (GstRTMPSink * sink, GstRTMPSinkClass * klass)
+gst_rtmp_sink_init (GstRTMPSink * sink)
{
}
@@ -194,6 +181,8 @@
{
GstRTMPSink *sink = GST_RTMP_SINK (bsink);
GstBuffer *reffed_buf = NULL;
+ guint8 *data;
+ gsize size;
if (sink->first) {
/* open the connection */
@@ -214,7 +203,7 @@
/* FIXME: Parse the first buffer and see if it contains a header plus a packet instead
* of just assuming it's only the header */
GST_LOG_OBJECT (sink, "Caching first buffer of size %d for concatenation",
- GST_BUFFER_SIZE (buf));
+ gst_buffer_get_size (buf));
gst_buffer_replace (&sink->cache, buf);
sink->first = FALSE;
return GST_FLOW_OK;
@@ -222,40 +211,48 @@
if (sink->cache) {
GST_LOG_OBJECT (sink, "Joining 2nd buffer of size %d to cached buf",
- GST_BUFFER_SIZE (buf));
+ gst_buffer_get_size (buf));
gst_buffer_ref (buf);
reffed_buf = buf = gst_buffer_join (sink->cache, buf);
sink->cache = NULL;
}
GST_LOG_OBJECT (sink, "Sending %d bytes to RTMP server",
- GST_BUFFER_SIZE (buf));
+ gst_buffer_get_size (buf));
- if (!RTMP_Write (sink->rtmp,
- (char *) GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf))) {
- GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL), ("Failed to write data"));
- if (reffed_buf)
- gst_buffer_unref (reffed_buf);
- return GST_FLOW_ERROR;
- }
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
+ if (!RTMP_Write (sink->rtmp, (char *) data, size))
+ goto write_failed;
+
+ gst_buffer_unmap (buf, data, size);
if (reffed_buf)
gst_buffer_unref (reffed_buf);
return GST_FLOW_OK;
+
+ /* ERRORS */
+write_failed:
+ {
+ GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL), ("Failed to write data"));
+ gst_buffer_unmap (buf, data, size);
+ if (reffed_buf)
+ gst_buffer_unref (reffed_buf);
+ return GST_FLOW_ERROR;
+ }
}
/*
* URI interface support.
*/
static GstURIType
-gst_rtmp_sink_uri_get_type (void)
+gst_rtmp_sink_uri_get_type (GType type)
{
return GST_URI_SINK;
}
static gchar **
-gst_rtmp_sink_uri_get_protocols (void)
+gst_rtmp_sink_uri_get_protocols (GType type)
{
static gchar *protocols[] =
{ (char *) "rtmp", (char *) "rtmpt", (char *) "rtmps", (char *) "rtmpe",
diff --git a/ext/rtmp/gstrtmpsrc.c b/ext/rtmp/gstrtmpsrc.c
index e37ac06..36e7488 100644
--- a/ext/rtmp/gstrtmpsrc.c
+++ b/ext/rtmp/gstrtmpsrc.c
@@ -88,47 +88,21 @@
GstBuffer ** buffer);
static gboolean gst_rtmp_src_query (GstBaseSrc * src, GstQuery * query);
-static void
-_do_init (GType gtype)
-{
- static const GInterfaceInfo urihandler_info = {
- gst_rtmp_src_uri_handler_init,
- NULL,
- NULL
- };
-
- g_type_add_interface_static (gtype, GST_TYPE_URI_HANDLER, &urihandler_info);
-
- GST_DEBUG_CATEGORY_INIT (rtmpsrc_debug, "rtmpsrc", 0, "RTMP Source");
-}
-
-GST_BOILERPLATE_FULL (GstRTMPSrc, gst_rtmp_src, GstPushSrc, GST_TYPE_PUSH_SRC,
- _do_init);
-
-static void
-gst_rtmp_src_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
-
- gst_element_class_set_details_simple (element_class,
- "RTMP Source",
- "Source/File",
- "Read RTMP streams",
- "Bastien Nocera <hadess@hadess.net>, "
- "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
+#define gst_rtmp_src_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstRTMPSrc, gst_rtmp_src, GST_TYPE_PUSH_SRC,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER,
+ gst_rtmp_src_uri_handler_init));
static void
gst_rtmp_src_class_init (GstRTMPSrcClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstBaseSrcClass *gstbasesrc_class;
GstPushSrcClass *gstpushsrc_class;
gobject_class = G_OBJECT_CLASS (klass);
+ gstelement_class = GST_ELEMENT_CLASS (klass);
gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
gstpushsrc_class = GST_PUSH_SRC_CLASS (klass);
@@ -137,9 +111,19 @@
gobject_class->get_property = gst_rtmp_src_get_property;
/* properties */
- gst_element_class_install_std_props (GST_ELEMENT_CLASS (klass),
+ gst_element_class_install_std_props (gstelement_class,
"location", PROP_LOCATION, G_PARAM_READWRITE, NULL);
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&srctemplate));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "RTMP Source",
+ "Source/File",
+ "Read RTMP streams",
+ "Bastien Nocera <hadess@hadess.net>, "
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_src_stop);
gstbasesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_rtmp_src_is_seekable);
@@ -148,10 +132,12 @@
gstbasesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_rtmp_src_do_seek);
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_rtmp_src_create);
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_rtmp_src_query);
+
+ GST_DEBUG_CATEGORY_INIT (rtmpsrc_debug, "rtmpsrc", 0, "RTMP Source");
}
static void
-gst_rtmp_src_init (GstRTMPSrc * rtmpsrc, GstRTMPSrcClass * klass)
+gst_rtmp_src_init (GstRTMPSrc * rtmpsrc)
{
rtmpsrc->cur_offset = 0;
rtmpsrc->last_timestamp = 0;
@@ -175,13 +161,13 @@
*/
static GstURIType
-gst_rtmp_src_uri_get_type (void)
+gst_rtmp_src_uri_get_type (GType type)
{
return GST_URI_SRC;
}
static gchar **
-gst_rtmp_src_uri_get_protocols (void)
+gst_rtmp_src_uri_get_protocols (GType type)
{
static gchar *protocols[] =
{ (char *) "rtmp", (char *) "rtmpt", (char *) "rtmps", (char *) "rtmpe",
@@ -286,8 +272,9 @@
{
GstRTMPSrc *src;
GstBuffer *buf;
- guint8 *data;
+ guint8 *data, *bdata;
guint todo;
+ gsize bsize;
int read;
int size;
@@ -300,15 +287,15 @@
GST_DEBUG ("reading from %" G_GUINT64_FORMAT
", size %u", src->cur_offset, size);
- buf = gst_buffer_try_new_and_alloc (size);
+ buf = gst_buffer_new_allocate (NULL, size, 0);
if (G_UNLIKELY (buf == NULL)) {
GST_ERROR_OBJECT (src, "Failed to allocate %u bytes", size);
return GST_FLOW_ERROR;
}
- todo = size;
- data = GST_BUFFER_DATA (buf);
- read = 0;
+ bsize = todo = size;
+ bdata = data = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
+ read = bsize = 0;
while (todo > 0) {
read = RTMP_Read (src->rtmp, (char *) data, todo);
@@ -316,7 +303,6 @@
if (G_UNLIKELY (read == 0 && todo == size)) {
goto eos;
} else if (G_UNLIKELY (read == 0)) {
- GST_BUFFER_SIZE (buf) -= todo;
todo = 0;
break;
}
@@ -325,13 +311,16 @@
goto read_failed;
if (read < todo) {
- data = &data[read];
+ data += read;
todo -= read;
+ bsize += read;
} else {
todo = 0;
+ bsize += todo;
}
GST_LOG (" got size %d", read);
}
+ gst_buffer_unmap (buf, bdata, bsize);
if (src->discont) {
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
@@ -465,7 +454,7 @@
}
gst_segment_init (segment, GST_FORMAT_TIME);
- gst_segment_set_seek (segment, rate, format, flags, cur_type, cur, stop_type,
+ gst_segment_do_seek (segment, rate, format, flags, cur_type, cur, stop_type,
stop, NULL);
return TRUE;
diff --git a/ext/sndfile/gstsfsink.c b/ext/sndfile/gstsfsink.c
index a4ef877..56dc4b0 100644
--- a/ext/sndfile/gstsfsink.c
+++ b/ext/sndfile/gstsfsink.c
@@ -415,9 +415,9 @@
basesink->offset += GST_BUFFER_SIZE (buf);
- GST_PAD_PREROLL_LOCK (pad);
+ GST_BASE_SINK_PREROLL_LOCK (basesink);
result = gst_sf_sink_render (basesink, buf);
- GST_PAD_PREROLL_UNLOCK (pad);
+ GST_BASE_SINK_PREROLL_UNLOCK (basesink);
if (G_UNLIKELY (result != GST_FLOW_OK))
goto paused;
diff --git a/ext/zbar/gstzbar.c b/ext/zbar/gstzbar.c
index cdeb898..0737945 100644
--- a/ext/zbar/gstzbar.c
+++ b/ext/zbar/gstzbar.c
@@ -109,14 +109,14 @@
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV (ZBAR_YUV_CAPS))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (ZBAR_YUV_CAPS))
);
static GstStaticPadTemplate gst_zbar_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV (ZBAR_YUV_CAPS))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (ZBAR_YUV_CAPS))
);
static void gst_zbar_finalize (GObject * object);
@@ -132,32 +132,18 @@
static gboolean gst_zbar_start (GstBaseTransform * base);
static gboolean gst_zbar_stop (GstBaseTransform * base);
-GST_BOILERPLATE (GstZBar, gst_zbar, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
-
-
-static void
-gst_zbar_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Barcode detector",
- "Filter/Analyzer/Video",
- "Detect bar codes in the video streams",
- "Stefan Kost <ensonic@users.sf.net>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_zbar_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_zbar_src_template));
-}
+#define gst_zbar_parent_class parent_class
+G_DEFINE_TYPE (GstZBar, gst_zbar, GST_TYPE_VIDEO_FILTER);
static void
gst_zbar_class_init (GstZBarClass * g_class)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
GstBaseTransformClass *trans_class;
gobject_class = G_OBJECT_CLASS (g_class);
+ gstelement_class = GST_ELEMENT_CLASS (g_class);
trans_class = GST_BASE_TRANSFORM_CLASS (g_class);
gobject_class->set_property = gst_zbar_set_property;
@@ -176,6 +162,16 @@
G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY |
G_PARAM_STATIC_STRINGS));
+ gst_element_class_set_details_simple (gstelement_class, "Barcode detector",
+ "Filter/Analyzer/Video",
+ "Detect bar codes in the video streams",
+ "Stefan Kost <ensonic@users.sf.net>");
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_zbar_sink_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_zbar_src_template));
+
trans_class->set_caps = GST_DEBUG_FUNCPTR (gst_zbar_set_caps);
trans_class->transform_ip = GST_DEBUG_FUNCPTR (gst_zbar_transform_ip);
trans_class->start = GST_DEBUG_FUNCPTR (gst_zbar_start);
@@ -183,7 +179,7 @@
}
static void
-gst_zbar_init (GstZBar * zbar, GstZBarClass * g_class)
+gst_zbar_init (GstZBar * zbar)
{
zbar->cache = DEFAULT_CACHE;
zbar->message = DEFAULT_MESSAGE;
@@ -249,52 +245,53 @@
gst_zbar_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps)
{
GstZBar *zbar = GST_ZBAR (base);
- GstStructure *structure;
- gboolean res;
- guint32 fourcc;
- gint width, height;
+ GstVideoInfo info;
GST_DEBUG_OBJECT (zbar,
"set_caps: in %" GST_PTR_FORMAT " out %" GST_PTR_FORMAT, incaps, outcaps);
- structure = gst_caps_get_structure (incaps, 0);
+ if (!gst_video_info_from_caps (&info, incaps))
+ goto invalid_caps;
- res = gst_structure_get_int (structure, "width", &width);
- res &= gst_structure_get_int (structure, "height", &height);
- res &= gst_structure_get_fourcc (structure, "format", &fourcc);
+ zbar->info = info;
- if (res) {
- zbar->width = width;
- zbar->height = height;
- zbar->format = gst_video_format_from_fourcc (fourcc);
+ return TRUE;
+
+ /* ERRORS */
+invalid_caps:
+ {
+ GST_ERROR_OBJECT (zbar, "invalid caps received");
+ return FALSE;
}
-
- return res;
}
static GstFlowReturn
gst_zbar_transform_ip (GstBaseTransform * base, GstBuffer * outbuf)
{
GstZBar *zbar = GST_ZBAR (base);
- guint8 *data;
- guint rowstride;
+ gpointer data;
+ gint stride, height;
zbar_image_t *image;
+ GstVideoFrame frame;
const zbar_symbol_t *symbol;
int n;
if (base->passthrough)
goto done;
- data = GST_BUFFER_DATA (outbuf);
+ gst_video_frame_map (&frame, &zbar->info, outbuf, GST_MAP_READ);
image = zbar_image_create ();
/* all formats we support start with an 8-bit Y plane. zbar doesn't need
* to know about the chroma plane(s) */
+ data = GST_VIDEO_FRAME_COMP_DATA (&frame, 0);
+ stride = GST_VIDEO_FRAME_COMP_STRIDE (&frame, 0);
+ height = GST_VIDEO_FRAME_HEIGHT (&frame);
+
zbar_image_set_format (image, GST_MAKE_FOURCC ('Y', '8', '0', '0'));
- rowstride = gst_video_format_get_row_stride (zbar->format, 0, zbar->width);
- zbar_image_set_size (image, rowstride, zbar->height);
- zbar_image_set_data (image, (gpointer) data, rowstride * zbar->height, NULL);
+ zbar_image_set_size (image, stride, height);
+ zbar_image_set_data (image, (gpointer) data, stride * height, NULL);
/* scan the image for barcodes */
n = zbar_scan_image (zbar->scanner, image);
@@ -330,6 +327,7 @@
out:
/* clean up */
+ gst_video_frame_unmap (&frame);
zbar_image_scanner_recycle_image (zbar->scanner, image);
zbar_image_destroy (image);
@@ -344,9 +342,7 @@
{
GstZBar *zbar = GST_ZBAR (base);
- zbar->width = 0;
- zbar->height = 0;
- zbar->format = GST_VIDEO_FORMAT_UNKNOWN;
+ gst_video_info_init (&zbar->info);
/* start the cache if enabled (e.g. for filtering dupes) */
zbar_image_scanner_enable_cache (zbar->scanner, zbar->cache);
diff --git a/ext/zbar/gstzbar.h b/ext/zbar/gstzbar.h
index b73c8b6..dd08af4 100644
--- a/ext/zbar/gstzbar.h
+++ b/ext/zbar/gstzbar.h
@@ -52,10 +52,7 @@
GstVideoFilter videofilter;
/* format */
- gint width;
- gint height;
-
- GstVideoFormat format;
+ GstVideoInfo info;
/* properties */
gboolean message;
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index 130956e..d790c51 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -1,5 +1,5 @@
-SUBDIRS = interfaces signalprocessor video basecamerabinsrc codecparsers
+SUBDIRS = interfaces signalprocessor codecparsers
noinst_HEADERS = gst-i18n-plugin.h gettext.h
DIST_SUBDIRS = interfaces signalprocessor video basecamerabinsrc codecparsers
diff --git a/gst-libs/gst/interfaces/photography.c b/gst-libs/gst/interfaces/photography.c
index 878b185..11f0e71 100644
--- a/gst-libs/gst/interfaces/photography.c
+++ b/gst-libs/gst/interfaces/photography.c
@@ -62,8 +62,6 @@
gst_photography_type = g_type_register_static (G_TYPE_INTERFACE,
"GstPhotography", &gst_photography_info, 0);
- g_type_interface_add_prerequisite (gst_photography_type,
- GST_TYPE_IMPLEMENTS_INTERFACE);
}
return gst_photography_type;
@@ -112,7 +110,7 @@
{ \
GstPhotographyInterface *iface; \
g_return_val_if_fail (photo != NULL, FALSE); \
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo); \
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo); \
if (iface->set_ ## function_name) { \
return iface->set_ ## function_name (photo, param); \
} \
@@ -123,7 +121,7 @@
{ \
GstPhotographyInterface *iface; \
g_return_val_if_fail (photo != NULL, FALSE); \
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo); \
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo); \
if (iface->get_ ## function_name) { \
return iface->get_ ## function_name (photo, param); \
} \
@@ -391,7 +389,7 @@
GstPhotographyInterface *iface;
g_return_val_if_fail (photo != NULL, GST_PHOTOGRAPHY_CAPS_NONE);
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo);
if (iface->get_capabilities) {
return iface->get_capabilities (photo);
} else {
@@ -420,7 +418,7 @@
g_return_val_if_fail (photo != NULL, FALSE);
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo);
if (iface->prepare_for_capture) {
ret = iface->prepare_for_capture (photo, func, capture_caps, user_data);
}
@@ -442,7 +440,7 @@
GstPhotographyInterface *iface;
g_return_if_fail (photo != NULL);
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo);
if (iface->set_autofocus) {
iface->set_autofocus (photo, on);
}
@@ -465,7 +463,7 @@
g_return_val_if_fail (photo != NULL, FALSE);
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo);
if (iface->set_config) {
ret = iface->set_config (photo, config);
}
@@ -490,7 +488,7 @@
g_return_val_if_fail (photo != NULL, FALSE);
- iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
+ iface = GST_PHOTOGRAPHY_GET_INTERFACE (photo);
if (iface->get_config) {
ret = iface->get_config (photo, config);
}
diff --git a/gst-libs/gst/interfaces/photography.h b/gst-libs/gst/interfaces/photography.h
index 4852ea3..21a4a50 100644
--- a/gst-libs/gst/interfaces/photography.h
+++ b/gst-libs/gst/interfaces/photography.h
@@ -37,10 +37,10 @@
#define GST_TYPE_PHOTOGRAPHY \
(gst_photography_get_type ())
#define GST_PHOTOGRAPHY(obj) \
- (GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PHOTOGRAPHY, GstPhotography))
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PHOTOGRAPHY, GstPhotography))
#define GST_IS_PHOTOGRAPHY(obj) \
- (GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PHOTOGRAPHY))
-#define GST_PHOTOGRAPHY_GET_IFACE(inst) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PHOTOGRAPHY))
+#define GST_PHOTOGRAPHY_GET_INTERFACE(inst) \
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_PHOTOGRAPHY, GstPhotographyInterface))
diff --git a/gst-libs/gst/signalprocessor/gstsignalprocessor.c b/gst-libs/gst/signalprocessor/gstsignalprocessor.c
index 2cd33a4..5699c38 100644
--- a/gst-libs/gst/signalprocessor/gstsignalprocessor.c
+++ b/gst-libs/gst/signalprocessor/gstsignalprocessor.c
@@ -165,17 +165,38 @@
return type;
}
-static void
-_do_init (GType object_type)
+static GstElementClass *parent_class = NULL;
+
+static void gst_signal_processor_class_init (GstSignalProcessorClass * klass);
+static void gst_signal_processor_init (GstSignalProcessor * self,
+ GstSignalProcessorClass * klass);
+
+GType
+gst_signal_processor_get_type (void)
{
- GST_DEBUG_CATEGORY_INIT (gst_signal_processor_debug, "signalprocessor", 0,
- "signalprocessor baseclass");
+ static volatile gsize signal_processor_type = 0;
+
+ if (g_once_init_enter (&signal_processor_type)) {
+ GType _type;
+ static const GTypeInfo signal_processor_info = {
+ sizeof (GstSignalProcessorClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) gst_signal_processor_class_init,
+ NULL,
+ NULL,
+ sizeof (GstSignalProcessor),
+ 0,
+ (GInstanceInitFunc) gst_signal_processor_init,
+ };
+
+ _type = g_type_register_static (GST_TYPE_ELEMENT,
+ "GstSignalProcessor", &signal_processor_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&signal_processor_type, _type);
+ }
+ return signal_processor_type;
}
-GST_BOILERPLATE_FULL (GstSignalProcessor, gst_signal_processor, GstElement,
- GST_TYPE_ELEMENT, _do_init);
-
-
static void gst_signal_processor_finalize (GObject * object);
static gboolean gst_signal_processor_src_activate_pull (GstPad * pad,
gboolean active);
@@ -193,12 +214,6 @@
static void
-gst_signal_processor_base_init (gpointer g_class)
-{
- /* NOP */
-}
-
-static void
gst_signal_processor_class_init (GstSignalProcessorClass * klass)
{
GObjectClass *gobject_class;
@@ -207,6 +222,8 @@
gobject_class = G_OBJECT_CLASS (klass);
gstelement_class = GST_ELEMENT_CLASS (klass);
+ parent_class = g_type_class_peek_parent (klass);
+
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_signal_processor_finalize);
gstelement_class->change_state =
@@ -218,6 +235,9 @@
GST_DEBUG_REGISTER_FUNCPTR (gst_signal_processor_sink_activate_push);
GST_DEBUG_REGISTER_FUNCPTR (gst_signal_processor_getrange);
GST_DEBUG_REGISTER_FUNCPTR (gst_signal_processor_src_activate_pull);
+
+ GST_DEBUG_CATEGORY_INIT (gst_signal_processor_debug, "signalprocessor", 0,
+ "signalprocessor baseclass");
}
static void
@@ -234,8 +254,6 @@
GST_SIGNAL_PROCESSOR_PAD (pad)->channels =
GST_SIGNAL_PROCESSOR_PAD_TEMPLATE (templ)->channels;
- gst_pad_set_setcaps_function (pad, gst_signal_processor_setcaps);
-
if (templ->direction == GST_PAD_SINK) {
GST_DEBUG_OBJECT (pad, "added new sink pad");
@@ -470,7 +488,8 @@
self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad));
- if (self->mode == GST_ACTIVATE_PULL && !gst_caps_is_equal (caps, self->caps)
+ if (self->mode == GST_PAD_ACTIVATE_PULL
+ && !gst_caps_is_equal (caps, self->caps)
&& !gst_signal_processor_setcaps_pull (self, pad, caps))
goto setcaps_pull_failed;
@@ -583,16 +602,27 @@
bclass->event (self, event);
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_signal_processor_setcaps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_FLUSH_START:
+ ret = gst_pad_event_default (pad, event);
break;
case GST_EVENT_FLUSH_STOP:
/* clear errors now */
self->flow_state = GST_FLOW_OK;
+ ret = gst_pad_event_default (pad, event);
break;
default:
+ ret = gst_pad_event_default (pad, event);
break;
}
- ret = gst_pad_event_default (pad, event);
gst_object_unref (self);
@@ -693,7 +723,7 @@
srcpad = (GstSignalProcessorPad *) srcs->data;
if (sinkpad->channels == 1 && sinkpad->channels == srcpad->channels
- && GST_BUFFER_SIZE (sinkpad->pen) ==
+ && gst_buffer_get_size (sinkpad->pen) ==
samples_avail * sizeof (gfloat)) {
/* reusable, yay */
g_assert (sinkpad->samples_avail == samples_avail);
@@ -714,24 +744,18 @@
/* now allocate for any remaining outputs */
while (srcs) {
GstSignalProcessorPad *srcpad;
- GstFlowReturn ret;
srcpad = (GstSignalProcessorPad *) srcs->data;
- ret = gst_pad_alloc_buffer_and_set_caps (GST_PAD (srcpad),
- GST_CLOCK_TIME_NONE,
- samples_avail * srcpad->channels * sizeof (gfloat), self->caps,
- &srcpad->pen);
+ srcpad->pen =
+ gst_buffer_new_allocate (NULL,
+ samples_avail * srcpad->channels * sizeof (gfloat), 0);
- if (ret != GST_FLOW_OK) {
- GST_INFO_OBJECT (self,
- "allocating buffer for %u samples, %u channels failed", samples_avail,
- srcpad->channels);
- self->flow_state = ret;
- return 0;
- } else if (srcpad->channels > 1) {
+ if (srcpad->channels > 1) {
GstSignalProcessorGroup *group = &self->group_out[out_group_index++];
- group->interleaved_buffer = (gfloat *) GST_BUFFER_DATA (srcpad->pen);
+ group->interleaved_buffer =
+ (gfloat *) gst_buffer_map (srcpad->pen, NULL, NULL,
+ GST_MAP_READWRITE);
if (!group->buffer || group->channels < srcpad->channels
|| group->nframes < samples_avail)
group->buffer =
@@ -741,7 +765,9 @@
group->nframes = samples_avail;
self->pending_out++;
} else {
- self->audio_out[srcpad->index] = (gfloat *) GST_BUFFER_DATA (srcpad->pen);
+ self->audio_out[srcpad->index] =
+ (gfloat *) gst_buffer_map (srcpad->pen, NULL, NULL,
+ GST_MAP_READWRITE);
self->pending_out++;
}
@@ -841,15 +867,16 @@
GstBuffer * buffer)
{
GstSignalProcessorPad *spad = (GstSignalProcessorPad *) pad;
+ gsize size;
if (spad->pen)
goto had_buffer;
/* keep the reference */
spad->pen = buffer;
- spad->data = (gfloat *) GST_BUFFER_DATA (buffer);
- spad->samples_avail =
- GST_BUFFER_SIZE (buffer) / sizeof (float) / spad->channels;
+ spad->data =
+ (gfloat *) gst_buffer_map (buffer, &size, NULL, GST_MAP_READWRITE);
+ spad->samples_avail = size / sizeof (float) / spad->channels;
g_assert (self->pending_in != 0);
@@ -882,6 +909,7 @@
GstSignalProcessorPad *spad = (GstSignalProcessorPad *) pads->data;
if (spad->pen) {
+ gst_buffer_unmap (spad->pen, spad->data, -1);
gst_buffer_unref (spad->pen);
spad->pen = NULL;
spad->data = NULL;
@@ -1049,20 +1077,20 @@
self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad));
if (active) {
- if (self->mode == GST_ACTIVATE_NONE) {
- self->mode = GST_ACTIVATE_PUSH;
+ if (self->mode == GST_PAD_ACTIVATE_NONE) {
+ self->mode = GST_PAD_ACTIVATE_PUSH;
result = TRUE;
- } else if (self->mode == GST_ACTIVATE_PUSH) {
+ } else if (self->mode == GST_PAD_ACTIVATE_PUSH) {
result = TRUE;
} else {
g_warning ("foo");
result = FALSE;
}
} else {
- if (self->mode == GST_ACTIVATE_NONE) {
+ if (self->mode == GST_PAD_ACTIVATE_NONE) {
result = TRUE;
- } else if (self->mode == GST_ACTIVATE_PUSH) {
- self->mode = GST_ACTIVATE_NONE;
+ } else if (self->mode == GST_PAD_ACTIVATE_PUSH) {
+ self->mode = GST_PAD_ACTIVATE_NONE;
result = TRUE;
} else {
g_warning ("foo");
@@ -1086,29 +1114,29 @@
self = GST_SIGNAL_PROCESSOR (gst_pad_get_parent (pad));
if (active) {
- if (self->mode == GST_ACTIVATE_NONE) {
+ if (self->mode == GST_PAD_ACTIVATE_NONE) {
GList *l;
for (l = GST_ELEMENT (self)->sinkpads; l; l = l->next)
result &= gst_pad_activate_pull (pad, active);
if (result)
- self->mode = GST_ACTIVATE_PULL;
- } else if (self->mode == GST_ACTIVATE_PULL) {
+ self->mode = GST_PAD_ACTIVATE_PULL;
+ } else if (self->mode == GST_PAD_ACTIVATE_PULL) {
result = TRUE;
} else {
g_warning ("foo");
result = FALSE;
}
} else {
- if (self->mode == GST_ACTIVATE_NONE) {
+ if (self->mode == GST_PAD_ACTIVATE_NONE) {
result = TRUE;
- } else if (self->mode == GST_ACTIVATE_PULL) {
+ } else if (self->mode == GST_PAD_ACTIVATE_PULL) {
GList *l;
for (l = GST_ELEMENT (self)->sinkpads; l; l = l->next)
result &= gst_pad_activate_pull (pad, active);
if (result)
- self->mode = GST_ACTIVATE_NONE;
+ self->mode = GST_PAD_ACTIVATE_NONE;
result = TRUE;
} else {
g_warning ("foo");
diff --git a/gst-libs/gst/signalprocessor/gstsignalprocessor.h b/gst-libs/gst/signalprocessor/gstsignalprocessor.h
index 4d512e1..402fe48 100644
--- a/gst-libs/gst/signalprocessor/gstsignalprocessor.h
+++ b/gst-libs/gst/signalprocessor/gstsignalprocessor.h
@@ -82,7 +82,7 @@
GstCaps *caps;
GstSignalProcessorState state;
GstFlowReturn flow_state;
- GstActivateMode mode;
+ GstPadActivateMode mode;
/* pending inputs before processing can take place */
guint pending_in;
diff --git a/gst-libs/gst/video/gstbasevideocodec.c b/gst-libs/gst/video/gstbasevideocodec.c
index 68e203d..a064ac7 100644
--- a/gst-libs/gst/video/gstbasevideocodec.c
+++ b/gst-libs/gst/video/gstbasevideocodec.c
@@ -45,16 +45,36 @@
static GstStateChangeReturn gst_base_video_codec_change_state (GstElement *
element, GstStateChange transition);
+static GstElementClass *parent_class = NULL;
-GST_BOILERPLATE (GstBaseVideoCodec, gst_base_video_codec, GstElement,
- GST_TYPE_ELEMENT);
+static void gst_base_video_codec_class_init (GstBaseVideoCodecClass * klass);
+static void gst_base_video_codec_init (GstBaseVideoCodec * dec,
+ GstBaseVideoCodecClass * klass);
-static void
-gst_base_video_codec_base_init (gpointer g_class)
+GType
+gst_base_video_codec_get_type (void)
{
- GST_DEBUG_CATEGORY_INIT (basevideocodec_debug, "basevideocodec", 0,
- "Base Video Codec");
+ static volatile gsize base_video_codec_type = 0;
+ if (g_once_init_enter (&base_video_codec_type)) {
+ GType _type;
+ static const GTypeInfo base_video_codec_info = {
+ sizeof (GstBaseVideoCodecClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) gst_base_video_codec_class_init,
+ NULL,
+ NULL,
+ sizeof (GstBaseVideoCodec),
+ 0,
+ (GInstanceInitFunc) gst_base_video_codec_init,
+ };
+
+ _type = g_type_register_static (GST_TYPE_ELEMENT,
+ "GstBaseVideoCodec", &base_video_codec_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&base_video_codec_type, _type);
+ }
+ return base_video_codec_type;
}
static void
@@ -69,6 +89,9 @@
gobject_class->finalize = gst_base_video_codec_finalize;
element_class->change_state = gst_base_video_codec_change_state;
+
+ GST_DEBUG_CATEGORY_INIT (basevideocodec_debug, "basevideocodec", 0,
+ "Base Video Codec");
}
static void
@@ -109,7 +132,7 @@
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_codec);
for (g = base_video_codec->frames; g; g = g_list_next (g)) {
- gst_base_video_codec_free_frame ((GstVideoFrame *) g->data);
+ gst_base_video_codec_free_frame ((GstVideoFrameState *) g->data);
}
g_list_free (base_video_codec->frames);
base_video_codec->frames = NULL;
@@ -168,12 +191,12 @@
return ret;
}
-GstVideoFrame *
+GstVideoFrameState *
gst_base_video_codec_new_frame (GstBaseVideoCodec * base_video_codec)
{
- GstVideoFrame *frame;
+ GstVideoFrameState *frame;
- frame = g_slice_new0 (GstVideoFrame);
+ frame = g_slice_new0 (GstVideoFrameState);
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_codec);
frame->system_frame_number = base_video_codec->system_frame_number;
@@ -184,7 +207,7 @@
}
void
-gst_base_video_codec_free_frame (GstVideoFrame * frame)
+gst_base_video_codec_free_frame (GstVideoFrameState * frame)
{
g_return_if_fail (frame != NULL);
@@ -202,5 +225,5 @@
if (frame->coder_hook_destroy_notify && frame->coder_hook)
frame->coder_hook_destroy_notify (frame->coder_hook);
- g_slice_free (GstVideoFrame, frame);
+ g_slice_free (GstVideoFrameState, frame);
}
diff --git a/gst-libs/gst/video/gstbasevideocodec.h b/gst-libs/gst/video/gstbasevideocodec.h
index 6471c35..ff242a6 100644
--- a/gst-libs/gst/video/gstbasevideocodec.h
+++ b/gst-libs/gst/video/gstbasevideocodec.h
@@ -83,7 +83,7 @@
#define GST_BASE_VIDEO_CODEC_STREAM_UNLOCK(codec) g_static_rec_mutex_unlock (&GST_BASE_VIDEO_CODEC (codec)->stream_lock)
typedef struct _GstVideoState GstVideoState;
-typedef struct _GstVideoFrame GstVideoFrame;
+typedef struct _GstVideoFrameState GstVideoFrameState;
typedef struct _GstBaseVideoCodec GstBaseVideoCodec;
typedef struct _GstBaseVideoCodecClass GstBaseVideoCodecClass;
@@ -108,7 +108,7 @@
};
-struct _GstVideoFrame
+struct _GstVideoFrameState
{
GstClockTime decode_timestamp;
GstClockTime presentation_timestamp;
@@ -180,8 +180,8 @@
GType gst_base_video_codec_get_type (void);
-GstVideoFrame * gst_base_video_codec_new_frame (GstBaseVideoCodec *base_video_codec);
-void gst_base_video_codec_free_frame (GstVideoFrame *frame);
+GstVideoFrameState * gst_base_video_codec_new_frame (GstBaseVideoCodec *base_video_codec);
+void gst_base_video_codec_free_frame (GstVideoFrameState *frame);
G_END_DECLS
diff --git a/gst-libs/gst/video/gstbasevideodecoder.c b/gst-libs/gst/video/gstbasevideodecoder.c
index 1b01ed7..4b42a89 100644
--- a/gst-libs/gst/video/gstbasevideodecoder.c
+++ b/gst-libs/gst/video/gstbasevideodecoder.c
@@ -167,21 +167,14 @@
base_video_decoder, int field_offset);
static guint64 gst_base_video_decoder_get_field_duration (GstBaseVideoDecoder *
base_video_decoder, int n_fields);
-static GstVideoFrame *gst_base_video_decoder_new_frame (GstBaseVideoDecoder *
- base_video_decoder);
+static GstVideoFrameState *gst_base_video_decoder_new_frame (GstBaseVideoDecoder
+ * base_video_decoder);
static void gst_base_video_decoder_clear_queues (GstBaseVideoDecoder * dec);
-GST_BOILERPLATE (GstBaseVideoDecoder, gst_base_video_decoder,
- GstBaseVideoCodec, GST_TYPE_BASE_VIDEO_CODEC);
-
-static void
-gst_base_video_decoder_base_init (gpointer g_class)
-{
- GST_DEBUG_CATEGORY_INIT (basevideodecoder_debug, "basevideodecoder", 0,
- "Base Video Decoder");
-
-}
+#define gst_base_video_decoder_parent_class parent_class
+G_DEFINE_TYPE (GstBaseVideoDecoder, gst_base_video_decoder,
+ GST_TYPE_BASE_VIDEO_CODEC);
static void
gst_base_video_decoder_class_init (GstBaseVideoDecoderClass * klass)
@@ -196,11 +189,13 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_base_video_decoder_change_state);
+
+ GST_DEBUG_CATEGORY_INIT (basevideodecoder_debug, "basevideodecoder", 0,
+ "Base Video Decoder");
}
static void
-gst_base_video_decoder_init (GstBaseVideoDecoder * base_video_decoder,
- GstBaseVideoDecoderClass * klass)
+gst_base_video_decoder_init (GstBaseVideoDecoder * base_video_decoder)
{
GstPad *pad;
@@ -212,8 +207,6 @@
GST_DEBUG_FUNCPTR (gst_base_video_decoder_chain));
gst_pad_set_event_function (pad,
GST_DEBUG_FUNCPTR (gst_base_video_decoder_sink_event));
- gst_pad_set_setcaps_function (pad,
- GST_DEBUG_FUNCPTR (gst_base_video_decoder_sink_setcaps));
gst_pad_set_query_function (pad,
GST_DEBUG_FUNCPTR (gst_base_video_decoder_sink_query));
@@ -288,6 +281,7 @@
structure = gst_caps_get_structure (caps, 0);
gst_video_format_parse_caps (caps, NULL, &state.width, &state.height);
+
/* this one fails if no framerate in caps */
if (!gst_video_parse_caps_framerate (caps, &state.fps_n, &state.fps_d)) {
state.fps_n = 0;
@@ -314,8 +308,8 @@
}
if (ret) {
- gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->
- state.codec_data, NULL);
+ gst_buffer_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state.
+ codec_data, NULL);
gst_caps_replace (&GST_BASE_VIDEO_CODEC (base_video_decoder)->state.caps,
NULL);
GST_BASE_VIDEO_CODEC (base_video_decoder)->state = state;
@@ -404,6 +398,15 @@
GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_base_video_decoder_sink_setcaps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_EOS:
{
GstFlowReturn flow_ret;
@@ -427,66 +430,52 @@
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
break;
}
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- gboolean update;
- double rate, arate;
- GstFormat format;
- gint64 start;
- gint64 stop;
- gint64 pos;
+ GstSegment seg;
GstSegment *segment = &GST_BASE_VIDEO_CODEC (base_video_decoder)->segment;
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
- gst_event_parse_new_segment_full (event, &update, &rate,
- &arate, &format, &start, &stop, &pos);
+ gst_event_copy_segment (event, &seg);
- if (format == GST_FORMAT_TIME) {
+ if (seg.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (base_video_decoder,
- "received TIME NEW_SEGMENT %" GST_TIME_FORMAT
- " -- %" GST_TIME_FORMAT ", pos %" GST_TIME_FORMAT
- ", rate %g, applied_rate %g",
- GST_TIME_ARGS (start), GST_TIME_ARGS (stop), GST_TIME_ARGS (pos),
- rate, arate);
+ "received TIME SEGMENT %" GST_SEGMENT_FORMAT, &seg);
} else {
GstFormat dformat = GST_FORMAT_TIME;
+ gint64 start;
GST_DEBUG_OBJECT (base_video_decoder,
- "received NEW_SEGMENT %" G_GINT64_FORMAT
- " -- %" G_GINT64_FORMAT ", time %" G_GINT64_FORMAT
- ", rate %g, applied_rate %g", start, stop, pos, rate, arate);
+ "received SEGMENT %" GST_SEGMENT_FORMAT, &seg);
/* handle newsegment as a result from our legacy simple seeking */
/* note that initial 0 should convert to 0 in any case */
if (base_video_decoder->do_byte_time &&
gst_pad_query_convert (GST_BASE_VIDEO_CODEC_SINK_PAD
- (base_video_decoder), GST_FORMAT_BYTES, start, &dformat,
+ (base_video_decoder), GST_FORMAT_BYTES, seg.start, dformat,
&start)) {
/* best attempt convert */
/* as these are only estimates, stop is kept open-ended to avoid
* premature cutting */
GST_DEBUG_OBJECT (base_video_decoder,
"converted to TIME start %" GST_TIME_FORMAT,
- GST_TIME_ARGS (start));
- pos = start;
- stop = GST_CLOCK_TIME_NONE;
+ GST_TIME_ARGS (seg.start));
+ seg.start = start;
+ seg.stop = GST_CLOCK_TIME_NONE;
+ seg.time = start;
/* replace event */
gst_event_unref (event);
- event = gst_event_new_new_segment_full (update, rate, arate,
- GST_FORMAT_TIME, start, stop, pos);
+ event = gst_event_new_segment (&seg);
} else {
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
goto newseg_wrong_format;
}
}
- if (!update) {
- gst_base_video_decoder_flush (base_video_decoder, FALSE);
- }
+ gst_base_video_decoder_flush (base_video_decoder, FALSE);
- base_video_decoder->timestamp_offset = start;
+ base_video_decoder->timestamp_offset = seg.start;
- gst_segment_set_newsegment_full (segment,
- update, rate, arate, format, start, stop, pos);
+ *segment = seg;
ret = gst_base_video_decoder_push_src_event (base_video_decoder, event);
GST_BASE_VIDEO_CODEC_STREAM_UNLOCK (base_video_decoder);
@@ -565,13 +554,12 @@
}
memcpy (&seek_segment, &codec->segment, sizeof (seek_segment));
- gst_segment_set_seek (&seek_segment, rate, format, flags, start_type,
+ gst_segment_do_seek (&seek_segment, rate, format, flags, start_type,
start_time, end_type, end_time, NULL);
- start_time = seek_segment.last_stop;
+ start_time = seek_segment.position;
- format = GST_FORMAT_BYTES;
if (!gst_pad_query_convert (codec->sinkpad, GST_FORMAT_TIME, start_time,
- &format, &start)) {
+ GST_FORMAT_BYTES, &start)) {
GST_DEBUG_OBJECT (dec, "conversion failed");
return FALSE;
}
@@ -630,9 +618,9 @@
/* ... though a non-time seek can be aided as well */
/* First bring the requested format to time */
tformat = GST_FORMAT_TIME;
- if (!(res = gst_pad_query_convert (pad, format, cur, &tformat, &tcur)))
+ if (!(res = gst_pad_query_convert (pad, format, cur, tformat, &tcur)))
goto convert_error;
- if (!(res = gst_pad_query_convert (pad, format, stop, &tformat, &tstop)))
+ if (!(res = gst_pad_query_convert (pad, format, stop, tformat, &tstop)))
goto convert_error;
/* then seek with time on the peer */
@@ -647,12 +635,13 @@
}
case GST_EVENT_QOS:
{
+ GstQOSType type;
gdouble proportion;
GstClockTimeDiff diff;
GstClockTime timestamp;
GstClockTime duration;
- gst_event_parse_qos (event, &proportion, &diff, ×tamp);
+ gst_event_parse_qos (event, &type, &proportion, &diff, ×tamp);
GST_OBJECT_LOCK (base_video_decoder);
GST_BASE_VIDEO_CODEC (base_video_decoder)->proportion = proportion;
@@ -750,7 +739,7 @@
/* and convert to the final format */
gst_query_parse_position (query, &format, NULL);
if (!(res = gst_pad_query_convert (pad, GST_FORMAT_TIME, time,
- &format, &value)))
+ format, &value)))
break;
gst_query_set_position (query, format, value);
@@ -775,11 +764,11 @@
format = GST_FORMAT_BYTES;
if (gst_pad_query_peer_duration (GST_BASE_VIDEO_CODEC_SINK_PAD (dec),
- &format, &value)) {
+ format, &value)) {
GST_LOG_OBJECT (dec, "upstream size %" G_GINT64_FORMAT, value);
format = GST_FORMAT_TIME;
if (gst_pad_query_convert (GST_BASE_VIDEO_CODEC_SINK_PAD (dec),
- GST_FORMAT_BYTES, value, &format, &value)) {
+ GST_FORMAT_BYTES, value, format, &value)) {
gst_query_set_duration (query, GST_FORMAT_TIME, value);
res = TRUE;
}
@@ -1000,7 +989,7 @@
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
gst_base_video_decoder_add_timestamp (base_video_decoder, buf);
}
- base_video_decoder->input_offset += GST_BUFFER_SIZE (buf);
+ base_video_decoder->input_offset += gst_buffer_get_size (buf);
if (base_video_decoder->packetized) {
base_video_decoder->current_frame->sink_buffer = buf;
@@ -1083,7 +1072,7 @@
while (walk) {
GList *next;
- GstVideoFrame *frame = (GstVideoFrame *) (walk->data);
+ GstVideoFrameState *frame = (GstVideoFrameState *) (walk->data);
GstBuffer *buf = frame->sink_buffer;
GST_DEBUG_OBJECT (dec, "decoding frame %p, ts %" GST_TIME_FORMAT,
@@ -1144,9 +1133,9 @@
/* now we can process frames */
GST_DEBUG_OBJECT (dec, "checking frames");
while (dec->parse_gather) {
- GstVideoFrame *frame;
+ GstVideoFrameState *frame;
- frame = (GstVideoFrame *) (dec->parse_gather->data);
+ frame = (GstVideoFrameState *) (dec->parse_gather->data);
/* remove from the gather list */
dec->parse_gather =
g_list_delete_link (dec->parse_gather, dec->parse_gather);
@@ -1167,10 +1156,10 @@
if (G_LIKELY (res == GST_FLOW_OK)) {
GST_DEBUG_OBJECT (dec, "pushing buffer %p of size %u, "
"time %" GST_TIME_FORMAT ", dur %" GST_TIME_FORMAT, buf,
- GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+ gst_buffer_get_size (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
/* should be already, but let's be sure */
- buf = gst_buffer_make_metadata_writable (buf);
+ buf = gst_buffer_make_writable (buf);
/* avoid stray DISCONT from forward processing,
* which have no meaning in reverse pushing */
GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
@@ -1210,7 +1199,7 @@
if (G_LIKELY (buf)) {
GST_DEBUG_OBJECT (dec, "gathering buffer %p of size %u, "
"time %" GST_TIME_FORMAT ", dur %" GST_TIME_FORMAT, buf,
- GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+ gst_buffer_get_size (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
/* add buffer to gather queue */
@@ -1231,7 +1220,7 @@
GST_LOG_OBJECT (base_video_decoder,
"chain %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " size %d",
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
- GST_TIME_ARGS (GST_BUFFER_DURATION (buf)), GST_BUFFER_SIZE (buf));
+ GST_TIME_ARGS (GST_BUFFER_DURATION (buf)), gst_buffer_get_size (buf));
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
@@ -1339,10 +1328,10 @@
return ret;
}
-static GstVideoFrame *
+static GstVideoFrameState *
gst_base_video_decoder_new_frame (GstBaseVideoDecoder * base_video_decoder)
{
- GstVideoFrame *frame;
+ GstVideoFrameState *frame;
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
frame =
@@ -1368,7 +1357,7 @@
/**
* gst_base_video_decoder_finish_frame:
* @base_video_decoder: a #GstBaseVideoDecoder
- * @frame: a decoded #GstVideoFrame
+ * @frame: a decoded #GstVideoFrameState
*
* @frame should have a valid decoded data buffer, whose metadata fields
* are then appropriately set according to frame data and pushed downstream.
@@ -1379,7 +1368,7 @@
*/
GstFlowReturn
gst_base_video_decoder_finish_frame (GstBaseVideoDecoder * base_video_decoder,
- GstVideoFrame * frame)
+ GstVideoFrameState * frame)
{
GstVideoState *state = &GST_BASE_VIDEO_CODEC (base_video_decoder)->state;
GstBuffer *src_buffer;
@@ -1402,7 +1391,7 @@
/* Push all pending events that arrived before this frame */
for (l = base_video_decoder->base_video_codec.frames; l; l = l->next) {
- GstVideoFrame *tmp = l->data;
+ GstVideoFrameState *tmp = l->data;
if (tmp->events) {
GList *k;
@@ -1486,7 +1475,7 @@
goto done;
}
- src_buffer = gst_buffer_make_metadata_writable (frame->src_buffer);
+ src_buffer = gst_buffer_make_writable (frame->src_buffer);
frame->src_buffer = NULL;
GST_BUFFER_FLAG_UNSET (src_buffer, GST_BUFFER_FLAG_DELTA_UNIT);
@@ -1521,7 +1510,7 @@
/* update rate estimate */
GST_BASE_VIDEO_CODEC (base_video_decoder)->bytes +=
- GST_BUFFER_SIZE (src_buffer);
+ gst_buffer_get_size (src_buffer);
if (GST_CLOCK_TIME_IS_VALID (frame->presentation_duration)) {
GST_BASE_VIDEO_CODEC (base_video_decoder)->time +=
frame->presentation_duration;
@@ -1600,7 +1589,7 @@
/**
* gst_base_video_decoder_finish_frame:
* @base_video_decoder: a #GstBaseVideoDecoder
- * @n_bytes: an encoded #GstVideoFrame
+ * @n_bytes: an encoded #GstVideoFrameState
*
* Removes next @n_bytes of input data and adds it to currently parsed frame.
*/
@@ -1734,7 +1723,7 @@
static GstFlowReturn
gst_base_video_decoder_have_frame_2 (GstBaseVideoDecoder * base_video_decoder)
{
- GstVideoFrame *frame = base_video_decoder->current_frame;
+ GstVideoFrameState *frame = base_video_decoder->current_frame;
GstBaseVideoDecoderClass *base_video_decoder_class;
GstFlowReturn ret = GST_FLOW_OK;
@@ -1844,9 +1833,9 @@
* gst_base_video_decoder_get_oldest_frame:
* @base_video_decoder: a #GstBaseVideoDecoder
*
- * Returns: oldest pending unfinished #GstVideoFrame.
+ * Returns: oldest pending unfinished #GstVideoFrameState.
*/
-GstVideoFrame *
+GstVideoFrameState *
gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *
base_video_decoder)
{
@@ -1858,7 +1847,7 @@
if (g == NULL)
return NULL;
- return (GstVideoFrame *) (g->data);
+ return (GstVideoFrameState *) (g->data);
}
/**
@@ -1866,19 +1855,19 @@
* @base_video_decoder: a #GstBaseVideoDecoder
* @frame_number: system_frame_number of a frame
*
- * Returns: pending unfinished #GstVideoFrame identified by @frame_number.
+ * Returns: pending unfinished #GstVideoFrameState identified by @frame_number.
*/
-GstVideoFrame *
+GstVideoFrameState *
gst_base_video_decoder_get_frame (GstBaseVideoDecoder * base_video_decoder,
int frame_number)
{
GList *g;
- GstVideoFrame *frame = NULL;
+ GstVideoFrameState *frame = NULL;
GST_BASE_VIDEO_CODEC_STREAM_LOCK (base_video_decoder);
for (g = g_list_first (GST_BASE_VIDEO_CODEC (base_video_decoder)->frames);
g; g = g_list_next (g)) {
- GstVideoFrame *tmp = g->data;
+ GstVideoFrameState *tmp = g->data;
if (frame->system_frame_number == frame_number) {
frame = tmp;
@@ -1986,7 +1975,7 @@
/**
* gst_base_video_decoder_alloc_src_frame:
* @base_video_decoder: a #GstBaseVideoDecoder
- * @frame: a #GstVideoFrame
+ * @frame: a #GstVideoFrameState
*
* Helper function that uses gst_pad_alloc_buffer_and_set_caps
* to allocate a buffer to hold a video frame for @base_video_decoder's
@@ -1997,7 +1986,7 @@
*/
GstFlowReturn
gst_base_video_decoder_alloc_src_frame (GstBaseVideoDecoder *
- base_video_decoder, GstVideoFrame * frame)
+ base_video_decoder, GstVideoFrameState * frame)
{
GstFlowReturn flow_ret;
GstVideoState *state = &GST_BASE_VIDEO_CODEC (base_video_decoder)->state;
@@ -2029,7 +2018,7 @@
/**
* gst_base_video_decoder_get_max_decode_time:
* @base_video_decoder: a #GstBaseVideoDecoder
- * @frame: a #GstVideoFrame
+ * @frame: a #GstVideoFrameState
*
* Determines maximum possible decoding time for @frame that will
* allow it to decode and arrive in time (as determined by QoS messages).
@@ -2040,7 +2029,7 @@
*/
GstClockTimeDiff
gst_base_video_decoder_get_max_decode_time (GstBaseVideoDecoder *
- base_video_decoder, GstVideoFrame * frame)
+ base_video_decoder, GstVideoFrameState * frame)
{
GstClockTimeDiff deadline;
GstClockTime earliest_time;
diff --git a/gst-libs/gst/video/gstbasevideodecoder.h b/gst-libs/gst/video/gstbasevideodecoder.h
index 98c29e5..0cdec8e 100644
--- a/gst-libs/gst/video/gstbasevideodecoder.h
+++ b/gst-libs/gst/video/gstbasevideodecoder.h
@@ -142,7 +142,7 @@
/* ... being tracked here;
* only available during parsing */
/* FIXME remove and add parameter to method */
- GstVideoFrame *current_frame;
+ GstVideoFrameState *current_frame;
/* events that should apply to the current frame */
GList *current_frame_events;
/* relative offset of input data */
@@ -233,7 +233,7 @@
GstFlowReturn (*finish) (GstBaseVideoDecoder *coder);
- GstFlowReturn (*handle_frame) (GstBaseVideoDecoder *coder, GstVideoFrame *frame);
+ GstFlowReturn (*handle_frame) (GstBaseVideoDecoder *coder, GstVideoFrameState *frame);
/*< private >*/
@@ -247,9 +247,9 @@
void gst_base_video_decoder_class_set_capture_pattern (GstBaseVideoDecoderClass *klass,
guint32 mask, guint32 pattern);
-GstVideoFrame *gst_base_video_decoder_get_frame (GstBaseVideoDecoder *coder,
+GstVideoFrameState *gst_base_video_decoder_get_frame (GstBaseVideoDecoder *coder,
int frame_number);
-GstVideoFrame *gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *coder);
+GstVideoFrameState *gst_base_video_decoder_get_oldest_frame (GstBaseVideoDecoder *coder);
void gst_base_video_decoder_add_to_frame (GstBaseVideoDecoder *base_video_decoder,
int n_bytes);
@@ -260,13 +260,13 @@
gboolean gst_base_video_decoder_set_src_caps (GstBaseVideoDecoder *base_video_decoder);
GstBuffer *gst_base_video_decoder_alloc_src_buffer (GstBaseVideoDecoder * base_video_decoder);
GstFlowReturn gst_base_video_decoder_alloc_src_frame (GstBaseVideoDecoder *base_video_decoder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
GstVideoState *gst_base_video_decoder_get_state (GstBaseVideoDecoder *base_video_decoder);
GstClockTimeDiff gst_base_video_decoder_get_max_decode_time (
GstBaseVideoDecoder *base_video_decoder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
GstFlowReturn gst_base_video_decoder_finish_frame (GstBaseVideoDecoder *base_video_decoder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
GType gst_base_video_decoder_get_type (void);
diff --git a/gst-libs/gst/video/gstbasevideoencoder.c b/gst-libs/gst/video/gstbasevideoencoder.c
index 70c20b2..cb7a69d 100644
--- a/gst-libs/gst/video/gstbasevideoencoder.c
+++ b/gst-libs/gst/video/gstbasevideoencoder.c
@@ -705,7 +705,7 @@
{
GstBaseVideoEncoder *base_video_encoder;
GstBaseVideoEncoderClass *klass;
- GstVideoFrame *frame;
+ GstVideoFrameState *frame;
GstFlowReturn ret = GST_FLOW_OK;
base_video_encoder = GST_BASE_VIDEO_ENCODER (gst_pad_get_parent (pad));
@@ -835,7 +835,7 @@
/**
* gst_base_video_encoder_finish_frame:
* @base_video_encoder: a #GstBaseVideoEncoder
- * @frame: an encoded #GstVideoFrame
+ * @frame: an encoded #GstVideoFrameState
*
* @frame must have a valid encoded data buffer, whose metadata fields
* are then appropriately set according to frame data or no buffer at
@@ -847,7 +847,7 @@
*/
GstFlowReturn
gst_base_video_encoder_finish_frame (GstBaseVideoEncoder * base_video_encoder,
- GstVideoFrame * frame)
+ GstVideoFrameState * frame)
{
GstFlowReturn ret = GST_FLOW_OK;
GstBaseVideoEncoderClass *base_video_encoder_class;
@@ -863,7 +863,7 @@
/* Push all pending events that arrived before this frame */
for (l = base_video_encoder->base_video_codec.frames; l; l = l->next) {
- GstVideoFrame *tmp = l->data;
+ GstVideoFrameState *tmp = l->data;
if (tmp->events) {
GList *k;
@@ -1051,9 +1051,9 @@
* gst_base_video_encoder_get_oldest_frame:
* @base_video_encoder: a #GstBaseVideoEncoder
*
- * Returns: oldest unfinished pending #GstVideoFrame
+ * Returns: oldest unfinished pending #GstVideoFrameState
*/
-GstVideoFrame *
+GstVideoFrameState *
gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *
base_video_encoder)
{
@@ -1065,7 +1065,7 @@
if (g == NULL)
return NULL;
- return (GstVideoFrame *) (g->data);
+ return (GstVideoFrameState *) (g->data);
}
/* FIXME there could probably be more of these;
diff --git a/gst-libs/gst/video/gstbasevideoencoder.h b/gst-libs/gst/video/gstbasevideoencoder.h
index c712fe8..5723d59 100644
--- a/gst-libs/gst/video/gstbasevideoencoder.h
+++ b/gst-libs/gst/video/gstbasevideoencoder.h
@@ -150,13 +150,13 @@
GstVideoState *state);
GstFlowReturn (*handle_frame) (GstBaseVideoEncoder *coder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
gboolean (*reset) (GstBaseVideoEncoder *coder);
GstFlowReturn (*finish) (GstBaseVideoEncoder *coder);
GstFlowReturn (*shape_output) (GstBaseVideoEncoder *coder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
gboolean (*event) (GstBaseVideoEncoder *coder,
GstEvent *event);
@@ -170,9 +170,9 @@
const GstVideoState* gst_base_video_encoder_get_state (GstBaseVideoEncoder *coder);
-GstVideoFrame* gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *coder);
+GstVideoFrameState* gst_base_video_encoder_get_oldest_frame (GstBaseVideoEncoder *coder);
GstFlowReturn gst_base_video_encoder_finish_frame (GstBaseVideoEncoder *base_video_encoder,
- GstVideoFrame *frame);
+ GstVideoFrameState *frame);
void gst_base_video_encoder_set_latency (GstBaseVideoEncoder *base_video_encoder,
GstClockTime min_latency, GstClockTime max_latency);
diff --git a/gst/bayer/gstbayer2rgb.c b/gst/bayer/gstbayer2rgb.c
index 8f9ed12..8c2e31b 100644
--- a/gst/bayer/gstbayer2rgb.c
+++ b/gst/bayer/gstbayer2rgb.c
@@ -111,10 +111,9 @@
GstBaseTransform basetransform;
/* < private > */
+ GstVideoInfo info;
int width;
int height;
- int stride;
- int pixsize; /* bytes per pixel */
int r_off; /* offset for red */
int g_off; /* offset for green */
int b_off; /* offset for blue */
@@ -127,14 +126,7 @@
};
#define SRC_CAPS \
- GST_VIDEO_CAPS_RGBx ";" \
- GST_VIDEO_CAPS_xRGB ";" \
- GST_VIDEO_CAPS_BGRx ";" \
- GST_VIDEO_CAPS_xBGR ";" \
- GST_VIDEO_CAPS_RGBA ";" \
- GST_VIDEO_CAPS_ARGB ";" \
- GST_VIDEO_CAPS_BGRA ";" \
- GST_VIDEO_CAPS_ABGR
+ GST_VIDEO_CAPS_MAKE ("{ RGBx, xRGB, BGRx, xBGR, RGBA, ARGB, BGRA, ABGR }")
#define SINK_CAPS "video/x-raw-bayer,format=(string){bggr,grbg,gbrg,rggb}," \
"width=(int)[1,MAX],height=(int)[1,MAX],framerate=(fraction)[0/1,MAX]"
@@ -144,12 +136,10 @@
PROP_0
};
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_bayer2rgb_debug, "bayer2rgb", 0, "bayer2rgb element");
-
GType gst_bayer2rgb_get_type (void);
-GST_BOILERPLATE_FULL (GstBayer2RGB, gst_bayer2rgb, GstBaseTransform,
- GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
+
+#define gst_bayer2rgb_parent_class parent_class
+G_DEFINE_TYPE (GstBayer2RGB, gst_bayer2rgb, GST_TYPE_BASE_TRANSFORM);
static void gst_bayer2rgb_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
@@ -162,38 +152,35 @@
GstBuffer * inbuf, GstBuffer * outbuf);
static void gst_bayer2rgb_reset (GstBayer2RGB * filter);
static GstCaps *gst_bayer2rgb_transform_caps (GstBaseTransform * base,
- GstPadDirection direction, GstCaps * caps);
+ GstPadDirection direction, GstCaps * caps, GstCaps * filter);
static gboolean gst_bayer2rgb_get_unit_size (GstBaseTransform * base,
- GstCaps * caps, guint * size);
+ GstCaps * caps, gsize * size);
static void
-gst_bayer2rgb_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_set_details_simple (element_class,
- "Bayer to RGB decoder for cameras", "Filter/Converter/Video",
- "Converts video/x-raw-bayer to video/x-raw-rgb",
- "William Brack <wbrack@mmm.com.hk>");
-
- gst_element_class_add_pad_template (element_class,
- gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_caps_from_string (SRC_CAPS)));
- gst_element_class_add_pad_template (element_class,
- gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- gst_caps_from_string (SINK_CAPS)));
-}
-
-static void
gst_bayer2rgb_class_init (GstBayer2RGBClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+
gobject_class->set_property = gst_bayer2rgb_set_property;
gobject_class->get_property = gst_bayer2rgb_get_property;
+ gst_element_class_set_details_simple (gstelement_class,
+ "Bayer to RGB decoder for cameras", "Filter/Converter/Video",
+ "Converts video/x-raw-bayer to video/x-raw",
+ "William Brack <wbrack@mmm.com.hk>");
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+ gst_caps_from_string (SRC_CAPS)));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+ gst_caps_from_string (SINK_CAPS)));
+
GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
GST_DEBUG_FUNCPTR (gst_bayer2rgb_transform_caps);
GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
@@ -202,10 +189,13 @@
GST_DEBUG_FUNCPTR (gst_bayer2rgb_set_caps);
GST_BASE_TRANSFORM_CLASS (klass)->transform =
GST_DEBUG_FUNCPTR (gst_bayer2rgb_transform);
+
+ GST_DEBUG_CATEGORY_INIT (gst_bayer2rgb_debug, "bayer2rgb", 0,
+ "bayer2rgb element");
}
static void
-gst_bayer2rgb_init (GstBayer2RGB * filter, GstBayer2RGBClass * klass)
+gst_bayer2rgb_init (GstBayer2RGB * filter)
{
gst_bayer2rgb_reset (filter);
gst_base_transform_set_in_place (GST_BASE_TRANSFORM (filter), TRUE);
@@ -236,35 +226,14 @@
}
}
-/* Routine to convert colormask value into relative byte offset */
-static int
-get_pix_offset (int mask, int bpp)
-{
- int bpp32 = (bpp / 8) - 3;
-
- switch (mask) {
- case 255:
- return 2 + bpp32;
- case 65280:
- return 1 + bpp32;
- case 16711680:
- return 0 + bpp32;
- case -16777216:
- return 0;
- default:
- GST_ERROR ("Invalid color mask 0x%08x", mask);
- return -1;
- }
-}
-
static gboolean
gst_bayer2rgb_set_caps (GstBaseTransform * base, GstCaps * incaps,
GstCaps * outcaps)
{
GstBayer2RGB *bayer2rgb = GST_BAYER2RGB (base);
GstStructure *structure;
- int val, bpp;
const char *format;
+ GstVideoInfo info;
GST_DEBUG ("in caps %" GST_PTR_FORMAT " out caps %" GST_PTR_FORMAT, incaps,
outcaps);
@@ -273,7 +242,6 @@
gst_structure_get_int (structure, "width", &bayer2rgb->width);
gst_structure_get_int (structure, "height", &bayer2rgb->height);
- bayer2rgb->stride = GST_ROUND_UP_4 (bayer2rgb->width);
format = gst_structure_get_string (structure, "format");
if (g_str_equal (format, "bggr")) {
@@ -289,15 +257,12 @@
}
/* To cater for different RGB formats, we need to set params for later */
- structure = gst_caps_get_structure (outcaps, 0);
- gst_structure_get_int (structure, "bpp", &bpp);
- bayer2rgb->pixsize = bpp / 8;
- gst_structure_get_int (structure, "red_mask", &val);
- bayer2rgb->r_off = get_pix_offset (val, bpp);
- gst_structure_get_int (structure, "green_mask", &val);
- bayer2rgb->g_off = get_pix_offset (val, bpp);
- gst_structure_get_int (structure, "blue_mask", &val);
- bayer2rgb->b_off = get_pix_offset (val, bpp);
+ gst_video_info_from_caps (&info, outcaps);
+ bayer2rgb->r_off = GST_VIDEO_INFO_COMP_OFFSET (&info, 0);
+ bayer2rgb->g_off = GST_VIDEO_INFO_COMP_OFFSET (&info, 1);
+ bayer2rgb->b_off = GST_VIDEO_INFO_COMP_OFFSET (&info, 2);
+
+ bayer2rgb->info = info;
return TRUE;
}
@@ -307,16 +272,15 @@
{
filter->width = 0;
filter->height = 0;
- filter->stride = 0;
- filter->pixsize = 0;
filter->r_off = 0;
filter->g_off = 0;
filter->b_off = 0;
+ gst_video_info_init (&filter->info);
}
static GstCaps *
gst_bayer2rgb_transform_caps (GstBaseTransform * base,
- GstPadDirection direction, GstCaps * caps)
+ GstPadDirection direction, GstCaps * caps, GstCaps * filter)
{
GstStructure *structure;
GstCaps *newcaps;
@@ -330,7 +294,7 @@
newcaps = gst_caps_from_string ("video/x-raw-bayer,"
"format=(string){bggr,grbg,gbrg,rggb}");
} else {
- newcaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
+ newcaps = gst_caps_new_empty_simple ("video/x-raw");
}
newstruct = gst_caps_get_structure (newcaps, 0);
@@ -348,12 +312,11 @@
static gboolean
gst_bayer2rgb_get_unit_size (GstBaseTransform * base, GstCaps * caps,
- guint * size)
+ gsize * size)
{
GstStructure *structure;
int width;
int height;
- int pixsize;
const char *name;
structure = gst_caps_get_structure (caps, 0);
@@ -362,15 +325,13 @@
gst_structure_get_int (structure, "height", &height)) {
name = gst_structure_get_name (structure);
/* Our name must be either video/x-raw-bayer video/x-raw-rgb */
- if (strcmp (name, "video/x-raw-rgb")) {
+ if (strcmp (name, "video/x-raw")) {
*size = GST_ROUND_UP_4 (width) * height;
return TRUE;
} else {
- /* For output, calculate according to format */
- if (gst_structure_get_int (structure, "bpp", &pixsize)) {
- *size = width * height * (pixsize / 8);
- return TRUE;
- }
+ /* For output, calculate according to format (always 32 bits) */
+ *size = width * height * 4;
+ return TRUE;
}
}
@@ -487,20 +448,17 @@
{
GstBayer2RGB *filter = GST_BAYER2RGB (base);
uint8_t *input, *output;
-
- /*
- * We need to lock our filter params to prevent changing
- * caps in the middle of a transformation (nice way to get
- * segfaults)
- */
- GST_OBJECT_LOCK (filter);
+ GstVideoFrame frame;
GST_DEBUG ("transforming buffer");
- input = (uint8_t *) GST_BUFFER_DATA (inbuf);
- output = (uint8_t *) GST_BUFFER_DATA (outbuf);
+ input = gst_buffer_map (inbuf, NULL, NULL, GST_MAP_READ);
+ gst_video_frame_map (&frame, &filter->info, inbuf, GST_MAP_WRITE);
+
+ output = GST_VIDEO_FRAME_PLANE_DATA (&frame, 0);
gst_bayer2rgb_process (filter, output, filter->width * 4,
input, filter->width);
+ gst_video_frame_unmap (&frame);
+ gst_buffer_unmap (inbuf, input, -1);
- GST_OBJECT_UNLOCK (filter);
return GST_FLOW_OK;
}
diff --git a/gst/bayer/gstrgb2bayer.c b/gst/bayer/gstrgb2bayer.c
index 819d0e6..69aedb9 100644
--- a/gst/bayer/gstrgb2bayer.c
+++ b/gst/bayer/gstrgb2bayer.c
@@ -30,31 +30,24 @@
#define GST_CAT_DEFAULT gst_rgb2bayer_debug
GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
-static void gst_rgb2bayer_dispose (GObject * object);
static void gst_rgb2bayer_finalize (GObject * object);
static GstCaps *gst_rgb2bayer_transform_caps (GstBaseTransform * trans,
- GstPadDirection direction, GstCaps * caps);
+ GstPadDirection direction, GstCaps * caps, GstCaps * filter);
static gboolean
gst_rgb2bayer_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size);
+ gsize * size);
static gboolean
gst_rgb2bayer_set_caps (GstBaseTransform * trans, GstCaps * incaps,
GstCaps * outcaps);
-static gboolean gst_rgb2bayer_start (GstBaseTransform * trans);
-static gboolean gst_rgb2bayer_stop (GstBaseTransform * trans);
-static gboolean gst_rgb2bayer_event (GstBaseTransform * trans,
- GstEvent * event);
static GstFlowReturn gst_rgb2bayer_transform (GstBaseTransform * trans,
GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean gst_rgb2bayer_src_event (GstBaseTransform * trans,
- GstEvent * event);
static GstStaticPadTemplate gst_rgb2bayer_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_ARGB)
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("ARGB"))
);
#if 0
@@ -81,16 +74,18 @@
/* class initialization */
-#define DEBUG_INIT(bla) \
- GST_DEBUG_CATEGORY_INIT (gst_rgb2bayer_debug, "rgb2bayer", 0, "rgb2bayer element");
-
-GST_BOILERPLATE_FULL (GstRGB2Bayer, gst_rgb2bayer, GstBaseTransform,
- GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
+#define gst_rgb2bayer_parent_class parent_class
+G_DEFINE_TYPE (GstRGB2Bayer, gst_rgb2bayer, GST_TYPE_BASE_TRANSFORM);
static void
-gst_rgb2bayer_base_init (gpointer g_class)
+gst_rgb2bayer_class_init (GstRGB2BayerClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+ GstBaseTransformClass *base_transform_class =
+ GST_BASE_TRANSFORM_CLASS (klass);
+
+ gobject_class->finalize = gst_rgb2bayer_finalize;
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_rgb2bayer_src_template));
@@ -100,46 +95,27 @@
gst_element_class_set_details_simple (element_class,
"RGB to Bayer converter",
"Filter/Converter/Video",
- "Converts video/x-raw-rgb to video/x-raw-bayer",
+ "Converts video/x-raw to video/x-raw-bayer",
"David Schleef <ds@entropywave.com>");
-}
-static void
-gst_rgb2bayer_class_init (GstRGB2BayerClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GstBaseTransformClass *base_transform_class =
- GST_BASE_TRANSFORM_CLASS (klass);
-
- gobject_class->dispose = gst_rgb2bayer_dispose;
- gobject_class->finalize = gst_rgb2bayer_finalize;
base_transform_class->transform_caps =
GST_DEBUG_FUNCPTR (gst_rgb2bayer_transform_caps);
base_transform_class->get_unit_size =
GST_DEBUG_FUNCPTR (gst_rgb2bayer_get_unit_size);
base_transform_class->set_caps = GST_DEBUG_FUNCPTR (gst_rgb2bayer_set_caps);
- base_transform_class->start = GST_DEBUG_FUNCPTR (gst_rgb2bayer_start);
- base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_rgb2bayer_stop);
- base_transform_class->event = GST_DEBUG_FUNCPTR (gst_rgb2bayer_event);
base_transform_class->transform = GST_DEBUG_FUNCPTR (gst_rgb2bayer_transform);
- base_transform_class->src_event = GST_DEBUG_FUNCPTR (gst_rgb2bayer_src_event);
+ GST_DEBUG_CATEGORY_INIT (gst_rgb2bayer_debug, "rgb2bayer", 0,
+ "rgb2bayer element");
}
static void
-gst_rgb2bayer_init (GstRGB2Bayer * rgb2bayer,
- GstRGB2BayerClass * rgb2bayer_class)
+gst_rgb2bayer_init (GstRGB2Bayer * rgb2bayer)
{
}
void
-gst_rgb2bayer_dispose (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-void
gst_rgb2bayer_finalize (GObject * object)
{
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -148,7 +124,7 @@
static GstCaps *
gst_rgb2bayer_transform_caps (GstBaseTransform * trans,
- GstPadDirection direction, GstCaps * caps)
+ GstPadDirection direction, GstCaps * caps, GstCaps * filter)
{
GstStructure *structure;
GstStructure *new_structure;
@@ -160,9 +136,9 @@
structure = gst_caps_get_structure (caps, 0);
if (direction == GST_PAD_SRC) {
- newcaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
+ newcaps = gst_caps_new_empty_simple ("video/x-raw");
} else {
- newcaps = gst_caps_new_simple ("video/x-raw-bayer", NULL);
+ newcaps = gst_caps_new_empty_simple ("video/x-raw-bayer");
}
new_structure = gst_caps_get_structure (newcaps, 0);
@@ -183,12 +159,11 @@
static gboolean
gst_rgb2bayer_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
- guint * size)
+ gsize * size)
{
GstStructure *structure;
int width;
int height;
- int pixsize;
const char *name;
structure = gst_caps_get_structure (caps, 0);
@@ -196,16 +171,14 @@
if (gst_structure_get_int (structure, "width", &width) &&
gst_structure_get_int (structure, "height", &height)) {
name = gst_structure_get_name (structure);
- /* Our name must be either video/x-raw-bayer video/x-raw-rgb */
+ /* Our name must be either video/x-raw-bayer video/x-raw */
if (g_str_equal (name, "video/x-raw-bayer")) {
*size = width * height;
return TRUE;
} else {
/* For output, calculate according to format */
- if (gst_structure_get_int (structure, "bpp", &pixsize)) {
- *size = width * height * (pixsize / 8);
- return TRUE;
- }
+ *size = width * height * 4;
+ return TRUE;
}
}
@@ -220,10 +193,16 @@
GstRGB2Bayer *rgb2bayer = GST_RGB_2_BAYER (trans);
GstStructure *structure;
const char *format;
+ GstVideoInfo info;
GST_DEBUG ("in caps %" GST_PTR_FORMAT " out caps %" GST_PTR_FORMAT, incaps,
outcaps);
+ if (!gst_video_info_from_caps (&info, incaps))
+ return FALSE;
+
+ rgb2bayer->info = info;
+
structure = gst_caps_get_structure (outcaps, 0);
gst_structure_get_int (structure, "width", &rgb2bayer->width);
@@ -245,27 +224,6 @@
return TRUE;
}
-static gboolean
-gst_rgb2bayer_start (GstBaseTransform * trans)
-{
-
- return TRUE;
-}
-
-static gboolean
-gst_rgb2bayer_stop (GstBaseTransform * trans)
-{
-
- return TRUE;
-}
-
-static gboolean
-gst_rgb2bayer_event (GstBaseTransform * trans, GstEvent * event)
-{
-
- return TRUE;
-}
-
static GstFlowReturn
gst_rgb2bayer_transform (GstBaseTransform * trans, GstBuffer * inbuf,
GstBuffer * outbuf)
@@ -276,9 +234,12 @@
int i, j;
int height = rgb2bayer->height;
int width = rgb2bayer->width;
+ GstVideoFrame frame;
- dest = GST_BUFFER_DATA (outbuf);
- src = GST_BUFFER_DATA (inbuf);
+ gst_video_frame_map (&frame, &rgb2bayer->info, inbuf, GST_MAP_READ);
+
+ dest = gst_buffer_map (outbuf, NULL, NULL, GST_MAP_READ);
+ src = GST_VIDEO_FRAME_PLANE_DATA (&frame, 0);
for (j = 0; j < height; j++) {
guint8 *dest_line = dest + width * j;
@@ -295,13 +256,8 @@
}
}
}
+ gst_buffer_unmap (outbuf, dest, -1);
+ gst_video_frame_unmap (&frame);
return GST_FLOW_OK;
}
-
-static gboolean
-gst_rgb2bayer_src_event (GstBaseTransform * trans, GstEvent * event)
-{
-
- return TRUE;
-}
diff --git a/gst/bayer/gstrgb2bayer.h b/gst/bayer/gstrgb2bayer.h
index 7b7f073..cf37872 100644
--- a/gst/bayer/gstrgb2bayer.h
+++ b/gst/bayer/gstrgb2bayer.h
@@ -22,6 +22,7 @@
#include <gst/gst.h>
#include <gst/base/gstbasetransform.h>
+#include <gst/video/video.h>
G_BEGIN_DECLS
@@ -45,6 +46,7 @@
{
GstBaseTransform base_rgb2bayer;
+ GstVideoInfo info;
int width, height;
int format;
};
diff --git a/gst/camerabin/camerabinimage.c b/gst/camerabin/camerabinimage.c
index 542a227..ab82b40 100644
--- a/gst/camerabin/camerabinimage.c
+++ b/gst/camerabin/camerabinimage.c
@@ -217,9 +217,10 @@
taken by bin and therefore gst_object_sink is called for
these elements (they may still be in floating state
and not unreffed properly without sinking first)
+ FIXME, something else is wrong if you have to sink here
*/
if (img->app_enc) {
- gst_object_sink (img->app_enc);
+ //gst_object_ref_sink (img->app_enc);
GST_LOG_OBJECT (img, "disposing %s with refcount %d",
GST_ELEMENT_NAME (img->app_enc),
GST_OBJECT_REFCOUNT_VALUE (img->app_enc));
@@ -228,7 +229,7 @@
}
if (img->post) {
- gst_object_sink (img->post);
+ //gst_object_ref_sink (img->post);
GST_LOG_OBJECT (img, "disposing %s with refcount %d",
GST_ELEMENT_NAME (img->post), GST_OBJECT_REFCOUNT_VALUE (img->post));
gst_object_unref (img->post);
diff --git a/gst/camerabin/camerabinvideo.c b/gst/camerabin/camerabinvideo.c
index 868fdce..d88d1f4 100644
--- a/gst/camerabin/camerabinvideo.c
+++ b/gst/camerabin/camerabinvideo.c
@@ -217,33 +217,34 @@
taken by bin and therefore gst_object_sink is called for
these elements (they may still be in floating state
and not unreffed properly without sinking first)
+ FIXME, something else is wrong when you have to sink here
*/
if (vid->app_post) {
- gst_object_sink (vid->app_post);
+ //gst_object_sink (vid->app_post);
gst_object_unref (vid->app_post);
vid->app_post = NULL;
}
if (vid->app_vid_enc) {
- gst_object_sink (vid->app_vid_enc);
+ //gst_object_sink (vid->app_vid_enc);
gst_object_unref (vid->app_vid_enc);
vid->app_vid_enc = NULL;
}
if (vid->app_aud_enc) {
- gst_object_sink (vid->app_aud_enc);
+ //gst_object_sink (vid->app_aud_enc);
gst_object_unref (vid->app_aud_enc);
vid->app_aud_enc = NULL;
}
if (vid->app_aud_src) {
- gst_object_sink (vid->app_aud_src);
+ //gst_object_sink (vid->app_aud_src);
gst_object_unref (vid->app_aud_src);
vid->app_aud_src = NULL;
}
if (vid->app_mux) {
- gst_object_sink (vid->app_mux);
+ //gst_object_sink (vid->app_mux);
gst_object_unref (vid->app_mux);
vid->app_mux = NULL;
}
diff --git a/gst/camerabin/gstcamerabincolorbalance.c b/gst/camerabin/gstcamerabincolorbalance.c
index 73a325d..54899fa 100644
--- a/gst/camerabin/gstcamerabincolorbalance.c
+++ b/gst/camerabin/gstcamerabincolorbalance.c
@@ -71,7 +71,7 @@
*/
void
-gst_camerabin_color_balance_init (GstColorBalanceClass * iface)
+gst_camerabin_color_balance_init (GstColorBalanceInterface * iface)
{
/* FIXME: to get the same type as v4l2src */
GST_COLOR_BALANCE_TYPE (iface) = GST_COLOR_BALANCE_HARDWARE;
diff --git a/gst/camerabin/gstcamerabincolorbalance.h b/gst/camerabin/gstcamerabincolorbalance.h
index 442a23b..81984e7 100644
--- a/gst/camerabin/gstcamerabincolorbalance.h
+++ b/gst/camerabin/gstcamerabincolorbalance.h
@@ -23,6 +23,6 @@
#include <gst/interfaces/colorbalance.h>
-extern void gst_camerabin_color_balance_init (GstColorBalanceClass * iface);
+extern void gst_camerabin_color_balance_init (GstColorBalanceInterface * iface);
#endif /* #ifndef __GST_CAMERA_COLOR_BALANCE_H__ */
diff --git a/gst/colorspace/Makefile.am b/gst/colorspace/Makefile.am
deleted file mode 100644
index c5f5bd4..0000000
--- a/gst/colorspace/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-plugin_LTLIBRARIES = libgstcolorspace.la
-
-ORC_SOURCE=gstcolorspaceorc
-include $(top_srcdir)/common/orc.mak
-
-libgstcolorspace_la_SOURCES = gstcolorspace.c colorspace.c
-nodist_libgstcolorspace_la_SOURCES = $(ORC_NODIST_SOURCES)
-libgstcolorspace_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_CFLAGS) \
- $(ORC_CFLAGS)
-libgstcolorspace_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS) \
- $(ORC_LIBS)
-libgstcolorspace_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstcolorspace_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstcolorspace.h colorspace.h
-
-Android.mk: Makefile.am $(BUILT_SOURCES)
- androgenizer \
- -:PROJECT libgstcolorspace -:SHARED libgstcolorspace \
- -:TAGS eng debug \
- -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
- -:SOURCES $(libgstcolorspace_la_SOURCES) \
- $(nodist_libgstcolorspace_la_SOURCES) \
- -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstcolorspace_la_CFLAGS) \
- -:LDFLAGS $(libgstcolorspace_la_LDFLAGS) \
- $(libgstcolorspace_la_LIBADD) \
- -ldl \
- -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
- LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
- > $@
diff --git a/gst/colorspace/colorspace.c b/gst/colorspace/colorspace.c
deleted file mode 100644
index bfaa9e7..0000000
--- a/gst/colorspace/colorspace.c
+++ /dev/null
@@ -1,2474 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 David Schleef <ds@schleef.org>
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "colorspace.h"
-#include <glib.h>
-#include <string.h>
-#include "gstcolorspaceorc.h"
-
-
-static void colorspace_convert_generic (ColorspaceConvert * convert,
- guint8 * dest, const guint8 * src);
-static void colorspace_convert_lookup_fastpath (ColorspaceConvert * convert);
-static void colorspace_convert_lookup_getput (ColorspaceConvert * convert);
-static void colorspace_dither_none (ColorspaceConvert * convert, int j);
-static void colorspace_dither_verterr (ColorspaceConvert * convert, int j);
-static void colorspace_dither_halftone (ColorspaceConvert * convert, int j);
-
-
-ColorspaceConvert *
-colorspace_convert_new (GstVideoFormat to_format, ColorSpaceColorSpec to_spec,
- GstVideoFormat from_format, ColorSpaceColorSpec from_spec,
- int width, int height)
-{
- ColorspaceConvert *convert;
- int i;
-
- g_return_val_if_fail (!gst_video_format_is_rgb (to_format)
- || to_spec == COLOR_SPEC_RGB, NULL);
- g_return_val_if_fail (!gst_video_format_is_yuv (to_format)
- || to_spec == COLOR_SPEC_YUV_BT709
- || to_spec == COLOR_SPEC_YUV_BT470_6
- || to_spec == COLOR_SPEC_YUV_JPEG, NULL);
- g_return_val_if_fail (gst_video_format_is_rgb (to_format)
- || gst_video_format_is_yuv (to_format)
- || (gst_video_format_is_gray (to_format) &&
- to_spec == COLOR_SPEC_GRAY), NULL);
-
- g_return_val_if_fail (!gst_video_format_is_rgb (from_format)
- || from_spec == COLOR_SPEC_RGB, NULL);
- g_return_val_if_fail (!gst_video_format_is_yuv (from_format)
- || from_spec == COLOR_SPEC_YUV_BT709
- || from_spec == COLOR_SPEC_YUV_BT470_6
- || from_spec == COLOR_SPEC_YUV_JPEG, NULL);
- g_return_val_if_fail (gst_video_format_is_rgb (from_format)
- || gst_video_format_is_yuv (from_format)
- || (gst_video_format_is_gray (from_format) &&
- from_spec == COLOR_SPEC_GRAY), NULL);
-
- convert = g_malloc (sizeof (ColorspaceConvert));
- memset (convert, 0, sizeof (ColorspaceConvert));
-
- convert->to_format = to_format;
- convert->to_spec = to_spec;
- convert->from_format = from_format;
- convert->from_spec = from_spec;
- convert->height = height;
- convert->width = width;
- convert->convert = colorspace_convert_generic;
- convert->dither16 = colorspace_dither_none;
-
- if (gst_video_format_get_component_depth (to_format, 0) > 8 ||
- gst_video_format_get_component_depth (from_format, 0) > 8) {
- convert->use_16bit = TRUE;
- } else {
- convert->use_16bit = FALSE;
- }
-
- for (i = 0; i < 4; i++) {
- convert->dest_stride[i] = gst_video_format_get_row_stride (to_format, i,
- width);
- convert->dest_offset[i] = gst_video_format_get_component_offset (to_format,
- i, width, height);
- if (i == 0)
- convert->dest_offset[i] = 0;
-
- convert->src_stride[i] = gst_video_format_get_row_stride (from_format, i,
- width);
- convert->src_offset[i] = gst_video_format_get_component_offset (from_format,
- i, width, height);
- if (i == 0)
- convert->src_offset[i] = 0;
-
- GST_DEBUG ("%d: dest %d %d src %d %d", i,
- convert->dest_stride[i], convert->dest_offset[i],
- convert->src_stride[i], convert->src_offset[i]);
- }
-
- colorspace_convert_lookup_fastpath (convert);
- colorspace_convert_lookup_getput (convert);
-
- convert->tmpline = g_malloc (sizeof (guint8) * (width + 8) * 4);
- convert->tmpline16 = g_malloc (sizeof (guint16) * (width + 8) * 4);
- convert->errline = g_malloc (sizeof (guint16) * width * 4);
-
- if (to_format == GST_VIDEO_FORMAT_RGB8_PALETTED) {
- /* build poor man's palette, taken from ffmpegcolorspace */
- static const guint8 pal_value[6] = { 0x00, 0x33, 0x66, 0x99, 0xcc, 0xff };
- guint32 *palette;
- gint r, g, b;
-
- convert->palette = palette = g_new (guint32, 256);
- i = 0;
- for (r = 0; r < 6; r++) {
- for (g = 0; g < 6; g++) {
- for (b = 0; b < 6; b++) {
- palette[i++] =
- (0xffU << 24) | (pal_value[r] << 16) | (pal_value[g] << 8) |
- pal_value[b];
- }
- }
- }
- palette[i++] = 0; /* 100% transparent, i == 6*6*6 */
- while (i < 256)
- palette[i++] = 0xff000000;
- }
-
- return convert;
-}
-
-void
-colorspace_convert_free (ColorspaceConvert * convert)
-{
- g_free (convert->palette);
- g_free (convert->tmpline);
- g_free (convert->tmpline16);
- g_free (convert->errline);
-
- g_free (convert);
-}
-
-void
-colorspace_convert_set_interlaced (ColorspaceConvert * convert,
- gboolean interlaced)
-{
- convert->interlaced = interlaced;
-}
-
-void
-colorspace_convert_set_dither (ColorspaceConvert * convert, int type)
-{
- switch (type) {
- case 0:
- default:
- convert->dither16 = colorspace_dither_none;
- break;
- case 1:
- convert->dither16 = colorspace_dither_verterr;
- break;
- case 2:
- convert->dither16 = colorspace_dither_halftone;
- break;
- }
-}
-
-void
-colorspace_convert_set_palette (ColorspaceConvert * convert,
- const guint32 * palette)
-{
- if (convert->palette == NULL) {
- convert->palette = g_malloc (sizeof (guint32) * 256);
- }
- memcpy (convert->palette, palette, sizeof (guint32) * 256);
-}
-
-const guint32 *
-colorspace_convert_get_palette (ColorspaceConvert * convert)
-{
- return convert->palette;
-}
-
-void
-colorspace_convert_convert (ColorspaceConvert * convert,
- guint8 * dest, const guint8 * src)
-{
- convert->convert (convert, dest, src);
-}
-
-/* Line conversion to AYUV */
-
-#define FRAME_GET_LINE(dir, comp, line) \
- ((dir) + convert-> dir ## _offset[(comp)] + convert-> dir ## _stride[(comp)] * (line))
-
-static void
-getline_I420 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_I420 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j >> 1),
- FRAME_GET_LINE (src, 2, j >> 1), convert->width);
-}
-
-static void
-putline_I420 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_I420 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j >> 1),
- FRAME_GET_LINE (dest, 2, j >> 1), src, convert->width / 2);
-}
-
-static void
-getline_YV12 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_I420 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j >> 1),
- FRAME_GET_LINE (src, 2, j >> 1), convert->width);
-}
-
-static void
-putline_YV12 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_I420 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j >> 1),
- FRAME_GET_LINE (dest, 2, j >> 1), src, convert->width / 2);
-}
-
-static void
-getline_YUY2 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_YUY2 (dest, FRAME_GET_LINE (src, 0, j), convert->width / 2);
-}
-
-static void
-putline_YUY2 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_YUY2 (FRAME_GET_LINE (dest, 0, j), src, convert->width / 2);
-}
-
-static void
-getline_UYVY (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_UYVY (dest, FRAME_GET_LINE (src, 0, j), convert->width / 2);
-}
-
-static void
-putline_UYVY (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_UYVY (FRAME_GET_LINE (dest, 0, j), src, convert->width / 2);
-}
-
-static void
-getline_YVYU (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_YVYU (dest, FRAME_GET_LINE (src, 0, j), convert->width / 2);
-}
-
-static void
-putline_YVYU (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_YVYU (FRAME_GET_LINE (dest, 0, j), src, convert->width / 2);
-}
-
-static void
-getline_v308 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = srcline[i * 3 + 0];
- dest[i * 4 + 2] = srcline[i * 3 + 1];
- dest[i * 4 + 3] = srcline[i * 3 + 2];
- }
-}
-
-static void
-putline_v308 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i * 3 + 0] = src[i * 4 + 1];
- destline[i * 3 + 1] = src[i * 4 + 2];
- destline[i * 3 + 2] = src[i * 4 + 3];
- }
-}
-
-static void
-getline_AYUV (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- memcpy (dest, FRAME_GET_LINE (src, 0, j), convert->width * 4);
-}
-
-static void
-putline_AYUV (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- memcpy (FRAME_GET_LINE (dest, 0, j), src, convert->width * 4);
-}
-
-#if 0
-static void
-getline_v410 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = GST_READ_UINT16_LE (srcline + i * 8 + 0);
- dest[i * 4 + 1] = GST_READ_UINT16_LE (srcline + i * 8 + 2);
- dest[i * 4 + 2] = GST_READ_UINT16_LE (srcline + i * 8 + 4);
- dest[i * 4 + 3] = GST_READ_UINT16_LE (srcline + i * 8 + 6);
- }
-}
-#endif
-
-static void
-getline_v210 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
-
- for (i = 0; i < convert->width; i += 6) {
- guint32 a0, a1, a2, a3;
- guint16 y0, y1, y2, y3, y4, y5;
- guint16 u0, u2, u4;
- guint16 v0, v2, v4;
-
- a0 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 0);
- a1 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 4);
- a2 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 8);
- a3 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 12);
-
- u0 = ((a0 >> 0) & 0x3ff) >> 2;
- y0 = ((a0 >> 10) & 0x3ff) >> 2;
- v0 = ((a0 >> 20) & 0x3ff) >> 2;
- y1 = ((a1 >> 0) & 0x3ff) >> 2;
-
- u2 = ((a1 >> 10) & 0x3ff) >> 2;
- y2 = ((a1 >> 20) & 0x3ff) >> 2;
- v2 = ((a2 >> 0) & 0x3ff) >> 2;
- y3 = ((a2 >> 10) & 0x3ff) >> 2;
-
- u4 = ((a2 >> 20) & 0x3ff) >> 2;
- y4 = ((a3 >> 0) & 0x3ff) >> 2;
- v4 = ((a3 >> 10) & 0x3ff) >> 2;
- y5 = ((a3 >> 20) & 0x3ff) >> 2;
-
- dest[4 * (i + 0) + 0] = 0xff;
- dest[4 * (i + 0) + 1] = y0;
- dest[4 * (i + 0) + 2] = u0;
- dest[4 * (i + 0) + 3] = v0;
-
- dest[4 * (i + 1) + 0] = 0xff;
- dest[4 * (i + 1) + 1] = y1;
- dest[4 * (i + 1) + 2] = u0;
- dest[4 * (i + 1) + 3] = v0;
-
- dest[4 * (i + 2) + 0] = 0xff;
- dest[4 * (i + 2) + 1] = y2;
- dest[4 * (i + 2) + 2] = u2;
- dest[4 * (i + 2) + 3] = v2;
-
- dest[4 * (i + 3) + 0] = 0xff;
- dest[4 * (i + 3) + 1] = y3;
- dest[4 * (i + 3) + 2] = u2;
- dest[4 * (i + 3) + 3] = v2;
-
- dest[4 * (i + 4) + 0] = 0xff;
- dest[4 * (i + 4) + 1] = y4;
- dest[4 * (i + 4) + 2] = u4;
- dest[4 * (i + 4) + 3] = v4;
-
- dest[4 * (i + 5) + 0] = 0xff;
- dest[4 * (i + 5) + 1] = y5;
- dest[4 * (i + 5) + 2] = u4;
- dest[4 * (i + 5) + 3] = v4;
-
- }
-
-}
-
-static void
-putline_v210 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
-
- for (i = 0; i < convert->width + 5; i += 6) {
- guint32 a0, a1, a2, a3;
- guint16 y0, y1, y2, y3, y4, y5;
- guint16 u0, u1, u2;
- guint16 v0, v1, v2;
-
- y0 = src[4 * (i + 0) + 1] << 2;
- y1 = src[4 * (i + 1) + 1] << 2;
- y2 = src[4 * (i + 2) + 1] << 2;
- y3 = src[4 * (i + 3) + 1] << 2;
- y4 = src[4 * (i + 4) + 1] << 2;
- y5 = src[4 * (i + 5) + 1] << 2;
-
- u0 = (src[4 * (i + 0) + 2] + src[4 * (i + 1) + 2]) << 1;
- u1 = (src[4 * (i + 2) + 2] + src[4 * (i + 3) + 2]) << 1;
- u2 = (src[4 * (i + 4) + 2] + src[4 * (i + 5) + 2]) << 1;
-
- v0 = (src[4 * (i + 0) + 3] + src[4 * (i + 1) + 3]) << 1;
- v1 = (src[4 * (i + 2) + 3] + src[4 * (i + 3) + 3]) << 1;
- v2 = (src[4 * (i + 4) + 3] + src[4 * (i + 5) + 3]) << 1;
-
- a0 = u0 | (y0 << 10) | (v0 << 20);
- a1 = y1 | (u1 << 10) | (y2 << 20);
- a2 = v1 | (y3 << 10) | (u2 << 20);
- a3 = y4 | (v2 << 10) | (y5 << 20);
-
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 0, a0);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 4, a1);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 8, a2);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 12, a3);
- }
-}
-
-static void
-getline16_v210 (ColorspaceConvert * convert, guint16 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
-
- for (i = 0; i < convert->width; i += 6) {
- guint32 a0, a1, a2, a3;
- guint16 y0, y1, y2, y3, y4, y5;
- guint16 u0, u2, u4;
- guint16 v0, v2, v4;
-
- a0 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 0);
- a1 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 4);
- a2 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 8);
- a3 = GST_READ_UINT32_LE (srcline + (i / 6) * 16 + 12);
-
- u0 = ((a0 >> 0) & 0x3ff) << 6;
- y0 = ((a0 >> 10) & 0x3ff) << 6;
- v0 = ((a0 >> 20) & 0x3ff) << 6;
- y1 = ((a1 >> 0) & 0x3ff) << 6;
-
- u2 = ((a1 >> 10) & 0x3ff) << 6;
- y2 = ((a1 >> 20) & 0x3ff) << 6;
- v2 = ((a2 >> 0) & 0x3ff) << 6;
- y3 = ((a2 >> 10) & 0x3ff) << 6;
-
- u4 = ((a2 >> 20) & 0x3ff) << 6;
- y4 = ((a3 >> 0) & 0x3ff) << 6;
- v4 = ((a3 >> 10) & 0x3ff) << 6;
- y5 = ((a3 >> 20) & 0x3ff) << 6;
-
- dest[4 * (i + 0) + 0] = 0xffff;
- dest[4 * (i + 0) + 1] = y0;
- dest[4 * (i + 0) + 2] = u0;
- dest[4 * (i + 0) + 3] = v0;
-
- dest[4 * (i + 1) + 0] = 0xffff;
- dest[4 * (i + 1) + 1] = y1;
- dest[4 * (i + 1) + 2] = u0;
- dest[4 * (i + 1) + 3] = v0;
-
- dest[4 * (i + 2) + 0] = 0xffff;
- dest[4 * (i + 2) + 1] = y2;
- dest[4 * (i + 2) + 2] = u2;
- dest[4 * (i + 2) + 3] = v2;
-
- dest[4 * (i + 3) + 0] = 0xffff;
- dest[4 * (i + 3) + 1] = y3;
- dest[4 * (i + 3) + 2] = u2;
- dest[4 * (i + 3) + 3] = v2;
-
- dest[4 * (i + 4) + 0] = 0xffff;
- dest[4 * (i + 4) + 1] = y4;
- dest[4 * (i + 4) + 2] = u4;
- dest[4 * (i + 4) + 3] = v4;
-
- dest[4 * (i + 5) + 0] = 0xffff;
- dest[4 * (i + 5) + 1] = y5;
- dest[4 * (i + 5) + 2] = u4;
- dest[4 * (i + 5) + 3] = v4;
-
- }
-}
-
-static void
-putline16_v210 (ColorspaceConvert * convert, guint8 * dest, const guint16 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
-
- for (i = 0; i < convert->width + 5; i += 6) {
- guint32 a0, a1, a2, a3;
- guint16 y0, y1, y2, y3, y4, y5;
- guint16 u0, u1, u2;
- guint16 v0, v1, v2;
-
- y0 = src[4 * (i + 0) + 1] >> 6;
- y1 = src[4 * (i + 1) + 1] >> 6;
- y2 = src[4 * (i + 2) + 1] >> 6;
- y3 = src[4 * (i + 3) + 1] >> 6;
- y4 = src[4 * (i + 4) + 1] >> 6;
- y5 = src[4 * (i + 5) + 1] >> 6;
-
- u0 = (src[4 * (i + 0) + 2] + src[4 * (i + 1) + 2] + 1) >> 7;
- u1 = (src[4 * (i + 2) + 2] + src[4 * (i + 3) + 2] + 1) >> 7;
- u2 = (src[4 * (i + 4) + 2] + src[4 * (i + 5) + 2] + 1) >> 7;
-
- v0 = (src[4 * (i + 0) + 3] + src[4 * (i + 1) + 3] + 1) >> 7;
- v1 = (src[4 * (i + 2) + 3] + src[4 * (i + 3) + 3] + 1) >> 7;
- v2 = (src[4 * (i + 4) + 3] + src[4 * (i + 5) + 3] + 1) >> 7;
-
- a0 = u0 | (y0 << 10) | (v0 << 20);
- a1 = y1 | (u1 << 10) | (y2 << 20);
- a2 = v1 | (y3 << 10) | (u2 << 20);
- a3 = y4 | (v2 << 10) | (y5 << 20);
-
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 0, a0);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 4, a1);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 8, a2);
- GST_WRITE_UINT32_LE (destline + (i / 6) * 16 + 12, a3);
- }
-}
-
-static void
-getline_v216 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = GST_READ_UINT16_LE (srcline + i * 4 + 2) >> 8;
- dest[i * 4 + 2] = GST_READ_UINT16_LE (srcline + (i >> 1) * 8 + 0) >> 8;
- dest[i * 4 + 3] = GST_READ_UINT16_LE (srcline + (i >> 1) * 8 + 4) >> 8;
- }
-}
-
-static void
-putline_v216 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width / 2; i++) {
- GST_WRITE_UINT16_LE (destline + i * 8 + 0, src[(i * 2 + 0) * 4 + 2] << 8);
- GST_WRITE_UINT16_LE (destline + i * 8 + 2, src[(i * 2 + 0) * 4 + 1] << 8);
- GST_WRITE_UINT16_LE (destline + i * 8 + 4, src[(i * 2 + 1) * 4 + 3] << 8);
- GST_WRITE_UINT16_LE (destline + i * 8 + 8, src[(i * 2 + 0) * 4 + 1] << 8);
- }
-}
-
-static void
-getline16_v216 (ColorspaceConvert * convert, guint16 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xffff;
- dest[i * 4 + 1] = GST_READ_UINT16_LE (srcline + i * 4 + 2);
- dest[i * 4 + 2] = GST_READ_UINT16_LE (srcline + (i >> 1) * 8 + 0);
- dest[i * 4 + 3] = GST_READ_UINT16_LE (srcline + (i >> 1) * 8 + 4);
- }
-}
-
-static void
-putline16_v216 (ColorspaceConvert * convert, guint8 * dest, const guint16 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width / 2; i++) {
- GST_WRITE_UINT16_LE (destline + i * 8 + 0, src[(i * 2 + 0) * 4 + 2]);
- GST_WRITE_UINT16_LE (destline + i * 8 + 2, src[(i * 2 + 0) * 4 + 1]);
- GST_WRITE_UINT16_LE (destline + i * 8 + 4, src[(i * 2 + 1) * 4 + 3]);
- GST_WRITE_UINT16_LE (destline + i * 8 + 8, src[(i * 2 + 0) * 4 + 1]);
- }
-}
-
-static void
-getline_Y41B (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_YUV9 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j), FRAME_GET_LINE (src, 2, j),
- convert->width / 2);
-}
-
-static void
-putline_Y41B (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destlineY = FRAME_GET_LINE (dest, 0, j);
- guint8 *destlineU = FRAME_GET_LINE (dest, 1, j);
- guint8 *destlineV = FRAME_GET_LINE (dest, 2, j);
-
- for (i = 0; i < convert->width - 3; i += 4) {
- destlineY[i] = src[i * 4 + 1];
- destlineY[i + 1] = src[i * 4 + 5];
- destlineY[i + 2] = src[i * 4 + 9];
- destlineY[i + 3] = src[i * 4 + 13];
-
- destlineU[i >> 2] =
- (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10] + src[i * 4 + 14] +
- 2) >> 2;
- destlineV[i >> 2] =
- (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11] + src[i * 4 + 15] +
- 2) >> 2;
- }
-
- if (i == convert->width - 3) {
- destlineY[i] = src[i * 4 + 1];
- destlineY[i + 1] = src[i * 4 + 5];
- destlineY[i + 2] = src[i * 4 + 9];
-
- destlineU[i >> 2] =
- (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10] + 1) / 3;
- destlineV[i >> 2] =
- (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11] + 1) / 3;
- } else if (i == convert->width - 2) {
- destlineY[i] = src[i * 4 + 1];
- destlineY[i + 1] = src[i * 4 + 5];
-
- destlineU[i >> 2] = (src[i * 4 + 2] + src[i * 4 + 6] + 1) >> 1;
- destlineV[i >> 2] = (src[i * 4 + 3] + src[i * 4 + 7] + 1) >> 1;
- } else if (i == convert->width - 1) {
- destlineY[i + 1] = src[i * 4 + 5];
-
- destlineU[i >> 2] = src[i * 4 + 2];
- destlineV[i >> 2] = src[i * 4 + 3];
- }
-}
-
-static void
-getline_Y42B (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_Y42B (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j),
- FRAME_GET_LINE (src, 2, j), convert->width / 2);
-}
-
-static void
-putline_Y42B (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_Y42B (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j),
- FRAME_GET_LINE (dest, 2, j), src, convert->width / 2);
-}
-
-static void
-getline_Y444 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_Y444 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j), FRAME_GET_LINE (src, 2, j), convert->width);
-}
-
-static void
-putline_Y444 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_Y444 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j),
- FRAME_GET_LINE (dest, 2, j), src, convert->width);
-}
-
-static void
-getline_Y800 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_Y800 (dest, FRAME_GET_LINE (src, 0, j), convert->width);
-}
-
-static void
-putline_Y800 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_Y800 (FRAME_GET_LINE (dest, 0, j), src, convert->width);
-}
-
-static void
-getline_Y16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_Y16 (dest, FRAME_GET_LINE (src, 0, j), convert->width);
-}
-
-static void
-putline_Y16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_Y16 (FRAME_GET_LINE (dest, 0, j), src, convert->width);
-}
-
-static void
-getline_RGB16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint16 *srcline = (const guint16 *) FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = ((srcline[i] >> 11) & 0x1f) << 3;
- dest[i * 4 + 2] = ((srcline[i] >> 5) & 0x3f) << 2;
- dest[i * 4 + 3] = ((srcline[i]) & 0x1f) << 3;
- }
-}
-
-static void
-putline_RGB16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint16 *destline = (guint16 *) FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i] =
- ((src[i * 4 + 1] >> 3) << 11) | ((src[i * 4 +
- 2] >> 2) << 5) | (src[i * 4 + 3] >> 3);
- }
-}
-
-static void
-getline_BGR16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint16 *srcline = (const guint16 *) FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 3] = ((srcline[i] >> 11) & 0x1f) << 3;
- dest[i * 4 + 2] = ((srcline[i] >> 5) & 0x3f) << 2;
- dest[i * 4 + 1] = ((srcline[i]) & 0x1f) << 3;
- }
-}
-
-static void
-putline_BGR16 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint16 *destline = (guint16 *) FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i] =
- ((src[i * 4 + 3] >> 3) << 11) | ((src[i * 4 +
- 2] >> 2) << 5) | (src[i * 4 + 1] >> 3);
- }
-}
-
-static void
-getline_RGB15 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint16 *srcline = (const guint16 *) FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = ((srcline[i] >> 10) & 0x1f) << 3;
- dest[i * 4 + 2] = ((srcline[i] >> 5) & 0x1f) << 3;
- dest[i * 4 + 3] = ((srcline[i]) & 0x1f) << 3;
- }
-}
-
-static void
-putline_RGB15 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint16 *destline = (guint16 *) FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i] =
- ((src[i * 4 + 1] >> 3) << 10) | ((src[i * 4 +
- 2] >> 3) << 5) | (src[i * 4 + 3] >> 3);
- }
-}
-
-static void
-getline_BGR15 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint16 *srcline = (const guint16 *) FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 3] = ((srcline[i] >> 10) & 0x1f) << 3;
- dest[i * 4 + 2] = ((srcline[i] >> 5) & 0x1f) << 3;
- dest[i * 4 + 1] = ((srcline[i]) & 0x1f) << 3;
- }
-}
-
-static void
-putline_BGR15 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint16 *destline = (guint16 *) FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i] =
- ((src[i * 4 + 3] >> 3) << 10) | ((src[i * 4 +
- 2] >> 3) << 5) | (src[i * 4 + 1] >> 3);
- }
-}
-
-static void
-getline_BGRA (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_BGRA (dest, FRAME_GET_LINE (src, 0, j), convert->width);
-}
-
-static void
-putline_BGRA (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_BGRA (FRAME_GET_LINE (dest, 0, j), src, convert->width);
-}
-
-static void
-getline_ABGR (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_ABGR (dest, FRAME_GET_LINE (src, 0, j), convert->width);
-}
-
-static void
-putline_ABGR (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_ABGR (FRAME_GET_LINE (dest, 0, j), src, convert->width);
-}
-
-static void
-getline_RGBA (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_RGBA (dest, FRAME_GET_LINE (src, 0, j), convert->width);
-}
-
-static void
-putline_RGBA (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_RGBA (FRAME_GET_LINE (dest, 0, j), src, convert->width);
-}
-
-static void
-getline_RGB (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = srcline[i * 3 + 0];
- dest[i * 4 + 2] = srcline[i * 3 + 1];
- dest[i * 4 + 3] = srcline[i * 3 + 2];
- }
-}
-
-static void
-putline_RGB (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i * 3 + 0] = src[i * 4 + 1];
- destline[i * 3 + 1] = src[i * 4 + 2];
- destline[i * 3 + 2] = src[i * 4 + 3];
- }
-}
-
-static void
-getline_BGR (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = srcline[i * 3 + 2];
- dest[i * 4 + 2] = srcline[i * 3 + 1];
- dest[i * 4 + 3] = srcline[i * 3 + 0];
- }
-}
-
-static void
-putline_BGR (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width; i++) {
- destline[i * 3 + 0] = src[i * 4 + 3];
- destline[i * 3 + 1] = src[i * 4 + 2];
- destline[i * 3 + 2] = src[i * 4 + 1];
- }
-}
-
-static void
-getline_NV12 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_NV12 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j >> 1), convert->width / 2);
-}
-
-static void
-putline_NV12 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_NV12 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j >> 1), src, convert->width / 2);
-}
-
-static void
-getline_NV21 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_NV21 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 2, j >> 1), convert->width / 2);
-}
-
-static void
-putline_NV21 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_NV21 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 2, j >> 1), src, convert->width / 2);
-}
-
-static void
-getline_UYVP (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
-
- for (i = 0; i < convert->width; i += 2) {
- guint16 y0, y1;
- guint16 u0;
- guint16 v0;
-
- u0 = (src[(i / 2) * 5 + 0] << 2) | (src[(i / 2) * 5 + 1] >> 6);
- y0 = ((src[(i / 2) * 5 + 1] & 0x3f) << 4) | (src[(i / 2) * 5 + 2] >> 4);
- v0 = ((src[(i / 2) * 5 + 2] & 0x0f) << 6) | (src[(i / 2) * 5 + 3] >> 2);
- y1 = ((src[(i / 2) * 5 + 3] & 0x03) << 8) | src[(i / 2) * 5 + 4];
-
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = y0 >> 2;
- dest[i * 4 + 2] = u0 >> 2;
- dest[i * 4 + 3] = v0 >> 2;
- dest[i * 4 + 4] = 0xff;
- dest[i * 4 + 5] = y1 >> 2;
- dest[i * 4 + 6] = u0 >> 2;
- dest[i * 4 + 7] = v0 >> 2;
- }
-}
-
-static void
-putline_UYVP (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
-
- for (i = 0; i < convert->width; i += 2) {
- guint16 y0, y1;
- guint16 u0;
- guint16 v0;
-
- y0 = src[4 * (i + 0) + 1];
- y1 = src[4 * (i + 1) + 1];
- u0 = (src[4 * (i + 0) + 2] + src[4 * (i + 1) + 2] + 1) >> 1;
- v0 = (src[4 * (i + 0) + 3] + src[4 * (i + 1) + 3] + 1) >> 1;
-
- dest[(i / 2) * 5 + 0] = u0;
- dest[(i / 2) * 5 + 1] = y0 >> 2;
- dest[(i / 2) * 5 + 2] = (y0 << 6) | (v0 >> 4);
- dest[(i / 2) * 5 + 3] = (v0 << 4) | (y1 >> 2);
- dest[(i / 2) * 5 + 4] = (y1 << 2);
- }
-}
-
-static void
-getline_A420 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_A420 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j >> 1),
- FRAME_GET_LINE (src, 2, j >> 1),
- FRAME_GET_LINE (src, 3, j), convert->width);
-}
-
-static void
-putline_A420 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_putline_A420 (FRAME_GET_LINE (dest, 0, j),
- FRAME_GET_LINE (dest, 1, j >> 1),
- FRAME_GET_LINE (dest, 2, j >> 1),
- FRAME_GET_LINE (dest, 3, j), src, convert->width / 2);
-}
-
-static void
-getline_RGB8P (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- guint32 v = convert->palette[srcline[i]];
- dest[i * 4 + 0] = (v >> 24) & 0xff;
- dest[i * 4 + 1] = (v >> 16) & 0xff;
- dest[i * 4 + 2] = (v >> 8) & 0xff;
- dest[i * 4 + 3] = (v) & 0xff;
- }
-}
-
-static void
-putline_RGB8P (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- /* Use our poor man's palette, taken from ffmpegcolorspace too */
- for (i = 0; i < convert->width; i++) {
- /* crude approximation for alpha ! */
- if (src[i * 4 + 0] < 0x80)
- destline[i] = 6 * 6 * 6;
- else
- destline[i] =
- ((((src[i * 4 + 1]) / 47) % 6) * 6 * 6 + (((src[i * 4 +
- 2]) / 47) % 6) * 6 + (((src[i * 4 + 3]) / 47) % 6));
- }
-}
-
-
-static void
-getline_YUV9 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- cogorc_getline_YUV9 (dest,
- FRAME_GET_LINE (src, 0, j),
- FRAME_GET_LINE (src, 1, j >> 2),
- FRAME_GET_LINE (src, 2, j >> 2), convert->width / 2);
-}
-
-static void
-putline_YUV9 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destY = FRAME_GET_LINE (dest, 0, j);
- guint8 *destU = FRAME_GET_LINE (dest, 1, j >> 2);
- guint8 *destV = FRAME_GET_LINE (dest, 2, j >> 2);
-
- for (i = 0; i < convert->width - 3; i += 4) {
- destY[i] = src[i * 4 + 1];
- destY[i + 1] = src[i * 4 + 5];
- destY[i + 2] = src[i * 4 + 9];
- destY[i + 3] = src[i * 4 + 13];
- if (j % 4 == 0) {
- destU[i >> 2] =
- (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10] + src[i * 4 +
- 14]) >> 2;
- destV[i >> 2] =
- (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11] + src[i * 4 +
- 15]) >> 2;
- }
- }
-
- if (i == convert->width - 3) {
- destY[i] = src[i * 4 + 1];
- destY[i + 1] = src[i * 4 + 5];
- destY[i + 2] = src[i * 4 + 9];
- if (j % 4 == 0) {
- destU[i >> 2] = (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10]) / 3;
- destV[i >> 2] = (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11]) / 3;
- }
- } else if (i == convert->width - 2) {
- destY[i] = src[i * 4 + 1];
- destY[i + 1] = src[i * 4 + 5];
- if (j % 4 == 0) {
- destU[i >> 2] = (src[i * 4 + 2] + src[i * 4 + 6]) >> 1;
- destV[i >> 2] = (src[i * 4 + 3] + src[i * 4 + 7]) >> 1;
- }
- } else if (i == convert->width - 1) {
- destY[i] = src[i * 4 + 1];
- destU[i >> 2] = src[i * 4 + 2];
- destV[i >> 2] = src[i * 4 + 3];
- }
-}
-
-static void
-getline_IYU1 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
-
- for (i = 0; i < convert->width - 3; i += 4) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 4] = 0xff;
- dest[i * 4 + 8] = 0xff;
- dest[i * 4 + 12] = 0xff;
- dest[i * 4 + 1] = srcline[(i >> 2) * 6 + 1];
- dest[i * 4 + 5] = srcline[(i >> 2) * 6 + 2];
- dest[i * 4 + 9] = srcline[(i >> 2) * 6 + 4];
- dest[i * 4 + 13] = srcline[(i >> 2) * 6 + 5];
- dest[i * 4 + 2] = dest[i * 4 + 6] = dest[i * 4 + 10] = dest[i * 4 + 14] =
- srcline[(i >> 2) * 6 + 0];
- dest[i * 4 + 3] = dest[i * 4 + 7] = dest[i * 4 + 11] = dest[i * 4 + 15] =
- srcline[(i >> 2) * 6 + 3];
- }
-
- if (i == convert->width - 3) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 4] = 0xff;
- dest[i * 4 + 8] = 0xff;
- dest[i * 4 + 1] = srcline[(i >> 2) * 6 + 1];
- dest[i * 4 + 5] = srcline[(i >> 2) * 6 + 2];
- dest[i * 4 + 9] = srcline[(i >> 2) * 6 + 4];
- dest[i * 4 + 2] = dest[i * 4 + 6] = dest[i * 4 + 10] =
- srcline[(i >> 2) * 6 + 0];
- dest[i * 4 + 3] = dest[i * 4 + 7] = dest[i * 4 + 11] =
- srcline[(i >> 2) * 6 + 3];
- } else if (i == convert->width - 2) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 4] = 0xff;
- dest[i * 4 + 1] = srcline[(i >> 2) * 6 + 1];
- dest[i * 4 + 5] = srcline[(i >> 2) * 6 + 2];
- dest[i * 4 + 2] = dest[i * 4 + 6] = srcline[(i >> 2) * 6 + 0];
- dest[i * 4 + 3] = dest[i * 4 + 7] = srcline[(i >> 2) * 6 + 3];
- } else if (i == convert->width - 1) {
- dest[i * 4 + 0] = 0xff;
- dest[i * 4 + 1] = srcline[(i >> 2) * 6 + 1];
- dest[i * 4 + 2] = srcline[(i >> 2) * 6 + 0];
- dest[i * 4 + 3] = srcline[(i >> 2) * 6 + 3];
- }
-}
-
-static void
-putline_IYU1 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
-
- for (i = 0; i < convert->width - 3; i += 4) {
- destline[(i >> 2) * 6 + 1] = src[i * 4 + 1];
- destline[(i >> 2) * 6 + 2] = src[i * 4 + 5];
- destline[(i >> 2) * 6 + 4] = src[i * 4 + 9];
- destline[(i >> 2) * 6 + 5] = src[i * 4 + 13];
- destline[(i >> 2) * 6 + 0] =
- (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10] + src[i * 4 +
- 14]) >> 2;
- destline[(i >> 2) * 6 + 3] =
- (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11] + src[i * 4 +
- 15]) >> 2;
- }
-
- if (i == convert->width - 3) {
- destline[(i >> 2) * 6 + 1] = src[i * 4 + 1];
- destline[(i >> 2) * 6 + 2] = src[i * 4 + 5];
- destline[(i >> 2) * 6 + 4] = src[i * 4 + 9];
- destline[(i >> 2) * 6 + 0] =
- (src[i * 4 + 2] + src[i * 4 + 6] + src[i * 4 + 10]) / 3;
- destline[(i >> 2) * 6 + 3] =
- (src[i * 4 + 3] + src[i * 4 + 7] + src[i * 4 + 11]) / 3;
- } else if (i == convert->width - 2) {
- destline[(i >> 2) * 6 + 1] = src[i * 4 + 1];
- destline[(i >> 2) * 6 + 2] = src[i * 4 + 5];
- destline[(i >> 2) * 6 + 0] = (src[i * 4 + 2] + src[i * 4 + 6]) >> 1;
- destline[(i >> 2) * 6 + 3] = (src[i * 4 + 3] + src[i * 4 + 7]) >> 1;
- } else if (i == convert->width - 1) {
- destline[(i >> 2) * 6 + 1] = src[i * 4 + 1];
- destline[(i >> 2) * 6 + 0] = src[i * 4 + 2];
- destline[(i >> 2) * 6 + 3] = src[i * 4 + 3];
- }
-}
-
-static void
-getline_AY64 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint16 *srcline = (const guint16 *) FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width * 4; i++) {
- dest[i] = srcline[i] >> 8;
- }
-}
-
-static void
-putline_AY64 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint16 *destline = (guint16 *) FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width * 4; i++) {
- destline[i] = src[i] << 8;
- }
-}
-
-static void
-getline16_AY64 (ColorspaceConvert * convert, guint16 * dest, const guint8 * src,
- int j)
-{
- memcpy (dest, FRAME_GET_LINE (src, 0, j), convert->width * 8);
-}
-
-static void
-putline16_AY64 (ColorspaceConvert * convert, guint8 * dest, const guint16 * src,
- int j)
-{
- memcpy (FRAME_GET_LINE (dest, 0, j), src, convert->width * 8);
-}
-
-static void
-getline_r210 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- guint8 x;
- dest[i * 4 + 0] = 0xff;
- x = GST_READ_UINT32_BE (srcline + i * 4);
- dest[i * 4 + 1] = (x >> 22) & 0xff;
- dest[i * 4 + 2] = (x >> 12) & 0xff;
- dest[i * 4 + 3] = (x >> 2) & 0xff;
- }
-}
-
-static void
-putline_r210 (ColorspaceConvert * convert, guint8 * dest, const guint8 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width / 2; i++) {
- guint32 x = 0;
- x |= src[i * 4 + 1] << 22;
- x |= (src[i * 4 + 1] & 0xc0) << 14;
- x |= src[i * 4 + 2] << 12;
- x |= (src[i * 4 + 2] & 0xc0) << 10;
- x |= src[i * 4 + 3] << 2;
- x |= (src[i * 4 + 3] & 0xc0) >> 6;
- GST_WRITE_UINT32_BE (destline + i * 4, x);
- }
-}
-
-static void
-getline16_r210 (ColorspaceConvert * convert, guint16 * dest, const guint8 * src,
- int j)
-{
- int i;
- const guint8 *srcline = FRAME_GET_LINE (src, 0, j);
- for (i = 0; i < convert->width; i++) {
- guint32 x;
- dest[i * 4 + 0] = 0xffff;
- x = GST_READ_UINT32_BE (srcline + i * 4);
- dest[i * 4 + 1] = ((x >> 14) & 0xffc0) | (x >> 24);
- dest[i * 4 + 2] = ((x >> 4) & 0xffc0) | ((x >> 14) & 0x3f);
- dest[i * 4 + 3] = ((x << 6) & 0xffc0) | ((x >> 4) & 0x3f);
- }
-}
-
-static void
-putline16_r210 (ColorspaceConvert * convert, guint8 * dest, const guint16 * src,
- int j)
-{
- int i;
- guint8 *destline = FRAME_GET_LINE (dest, 0, j);
- for (i = 0; i < convert->width / 2; i++) {
- guint32 x = 0;
- x |= (src[i * 4 + 1] & 0xffc0) << 14;
- x |= (src[i * 4 + 2] & 0xffc0) << 4;
- x |= (src[i * 4 + 3] & 0xffc0) >> 6;
- GST_WRITE_UINT32_BE (destline + i * 4, x);
- }
-}
-
-static void
-getline16_convert (ColorspaceConvert * convert, guint16 * dest,
- const guint8 * src, int j)
-{
- int i;
- convert->getline (convert, convert->tmpline, src, j);
- for (i = 0; i < convert->width * 4; i++) {
- dest[i] = convert->tmpline[i] << 8;
- }
-}
-
-static void
-putline16_convert (ColorspaceConvert * convert, guint8 * dest,
- const guint16 * src, int j)
-{
- int i;
- for (i = 0; i < convert->width * 4; i++) {
- convert->tmpline[i] = src[i] >> 8;
- }
- convert->putline (convert, dest, convert->tmpline, j);
-}
-
-typedef struct
-{
- GstVideoFormat format;
- void (*getline) (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src, int j);
- void (*putline) (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src, int j);
- void (*getline16) (ColorspaceConvert * convert, guint16 * dest,
- const guint8 * src, int j);
- void (*putline16) (ColorspaceConvert * convert, guint8 * dest,
- const guint16 * src, int j);
-} ColorspaceLine;
-static const ColorspaceLine lines[] = {
- {GST_VIDEO_FORMAT_I420, getline_I420, putline_I420},
- {GST_VIDEO_FORMAT_YV12, getline_YV12, putline_YV12},
- {GST_VIDEO_FORMAT_YUY2, getline_YUY2, putline_YUY2},
- {GST_VIDEO_FORMAT_UYVY, getline_UYVY, putline_UYVY},
- {GST_VIDEO_FORMAT_AYUV, getline_AYUV, putline_AYUV},
- {GST_VIDEO_FORMAT_RGBx, getline_RGBA, putline_RGBA},
- {GST_VIDEO_FORMAT_BGRx, getline_BGRA, putline_BGRA},
- {GST_VIDEO_FORMAT_xRGB, getline_AYUV, putline_AYUV},
- {GST_VIDEO_FORMAT_xBGR, getline_ABGR, putline_ABGR},
- {GST_VIDEO_FORMAT_RGBA, getline_RGBA, putline_RGBA},
- {GST_VIDEO_FORMAT_BGRA, getline_BGRA, putline_BGRA},
- {GST_VIDEO_FORMAT_ARGB, getline_AYUV, putline_AYUV},
- {GST_VIDEO_FORMAT_ABGR, getline_ABGR, putline_ABGR},
- {GST_VIDEO_FORMAT_RGB, getline_RGB, putline_RGB},
- {GST_VIDEO_FORMAT_BGR, getline_BGR, putline_BGR},
- {GST_VIDEO_FORMAT_Y41B, getline_Y41B, putline_Y41B},
- {GST_VIDEO_FORMAT_Y42B, getline_Y42B, putline_Y42B},
- {GST_VIDEO_FORMAT_YVYU, getline_YVYU, putline_YVYU},
- {GST_VIDEO_FORMAT_Y444, getline_Y444, putline_Y444},
- {GST_VIDEO_FORMAT_v210, getline_v210, putline_v210,
- getline16_v210, putline16_v210},
- {GST_VIDEO_FORMAT_v216, getline_v216, putline_v216,
- getline16_v216, putline16_v216},
- {GST_VIDEO_FORMAT_NV12, getline_NV12, putline_NV12},
- {GST_VIDEO_FORMAT_NV21, getline_NV21, putline_NV21},
- //{GST_VIDEO_FORMAT_GRAY8, getline_GRAY8, putline_GRAY8},
- //{GST_VIDEO_FORMAT_GRAY16_BE, getline_GRAY16_BE, putline_GRAY16_BE},
- //{GST_VIDEO_FORMAT_GRAY16_LE, getline_GRAY16_LE, putline_GRAY16_LE},
- {GST_VIDEO_FORMAT_v308, getline_v308, putline_v308},
- {GST_VIDEO_FORMAT_Y800, getline_Y800, putline_Y800},
- {GST_VIDEO_FORMAT_Y16, getline_Y16, putline_Y16},
- {GST_VIDEO_FORMAT_RGB16, getline_RGB16, putline_RGB16},
- {GST_VIDEO_FORMAT_BGR16, getline_BGR16, putline_BGR16},
- {GST_VIDEO_FORMAT_RGB15, getline_RGB15, putline_RGB15},
- {GST_VIDEO_FORMAT_BGR15, getline_BGR15, putline_BGR15},
- {GST_VIDEO_FORMAT_UYVP, getline_UYVP, putline_UYVP},
- {GST_VIDEO_FORMAT_A420, getline_A420, putline_A420}
- , {GST_VIDEO_FORMAT_RGB8_PALETTED, getline_RGB8P, putline_RGB8P},
- {GST_VIDEO_FORMAT_YUV9, getline_YUV9, putline_YUV9},
- {GST_VIDEO_FORMAT_YVU9, getline_YUV9, putline_YUV9}, /* alias */
- {GST_VIDEO_FORMAT_IYU1, getline_IYU1, putline_IYU1},
- {GST_VIDEO_FORMAT_ARGB64, getline_AY64, putline_AY64, getline16_AY64,
- putline16_AY64},
- {GST_VIDEO_FORMAT_AYUV64, getline_AY64, putline_AY64, getline16_AY64,
- putline16_AY64},
- {GST_VIDEO_FORMAT_r210, getline_r210, putline_r210, getline16_r210,
- putline16_r210}
-};
-
-static void
-matrix_rgb_to_yuv_bt470_6 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- r = tmpline[i * 4 + 1];
- g = tmpline[i * 4 + 2];
- b = tmpline[i * 4 + 3];
-
- y = (66 * r + 129 * g + 25 * b + 4096) >> 8;
- u = (-38 * r - 74 * g + 112 * b + 32768) >> 8;
- v = (112 * r - 94 * g - 18 * b + 32768) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (y, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (u, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (v, 0, 255);
- }
-}
-
-static void
-matrix_rgb_to_yuv_bt709 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- r = tmpline[i * 4 + 1];
- g = tmpline[i * 4 + 2];
- b = tmpline[i * 4 + 3];
-
- y = (47 * r + 157 * g + 16 * b + 4096) >> 8;
- u = (-26 * r - 87 * g + 112 * b + 32768) >> 8;
- v = (112 * r - 102 * g - 10 * b + 32768) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (y, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (u, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (v, 0, 255);
- }
-}
-
-static void
-matrix_yuv_bt470_6_to_rgb (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (298 * y + 409 * v - 57068) >> 8;
- g = (298 * y - 100 * u - 208 * v + 34707) >> 8;
- b = (298 * y + 516 * u - 70870) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 255);
- }
-}
-
-static void
-matrix_yuv_bt709_to_rgb (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (298 * y + 459 * v - 63514) >> 8;
- g = (298 * y - 55 * u - 136 * v + 19681) >> 8;
- b = (298 * y + 541 * u - 73988) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 255);
- }
-}
-
-static void
-matrix_yuv_bt709_to_yuv_bt470_6 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (256 * y + 25 * u + 49 * v - 9536) >> 8;
- g = (253 * u - 28 * v + 3958) >> 8;
- b = (-19 * u + 252 * v + 2918) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 255);
- }
-}
-
-static void
-matrix_yuv_bt470_6_to_yuv_bt709 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint8 *tmpline = convert->tmpline;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (256 * y - 30 * u - 53 * v + 10600) >> 8;
- g = (261 * u + 29 * v - 4367) >> 8;
- b = (19 * u + 262 * v - 3289) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 255);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 255);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 255);
- }
-}
-
-static void
-matrix_identity (ColorspaceConvert * convert)
-{
- /* do nothing */
-}
-
-static void
-matrix16_rgb_to_yuv_bt470_6 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- r = tmpline[i * 4 + 1];
- g = tmpline[i * 4 + 2];
- b = tmpline[i * 4 + 3];
-
- y = (66 * r + 129 * g + 25 * b + 4096 * 256) >> 8;
- u = (-38 * r - 74 * g + 112 * b + 32768 * 256) >> 8;
- v = (112 * r - 94 * g - 18 * b + 32768 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (y, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (u, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (v, 0, 65535);
- }
-}
-
-static void
-matrix16_rgb_to_yuv_bt709 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- r = tmpline[i * 4 + 1];
- g = tmpline[i * 4 + 2];
- b = tmpline[i * 4 + 3];
-
- y = (47 * r + 157 * g + 16 * b + 4096 * 256) >> 8;
- u = (-26 * r - 87 * g + 112 * b + 32768 * 256) >> 8;
- v = (112 * r - 102 * g - 10 * b + 32768 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (y, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (u, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (v, 0, 65535);
- }
-}
-
-static void
-matrix16_yuv_bt470_6_to_rgb (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (298 * y + 409 * v - 57068 * 256) >> 8;
- g = (298 * y - 100 * u - 208 * v + 34707 * 256) >> 8;
- b = (298 * y + 516 * u - 70870 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 65535);
- }
-}
-
-static void
-matrix16_yuv_bt709_to_rgb (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (298 * y + 459 * v - 63514 * 256) >> 8;
- g = (298 * y - 55 * u - 136 * v + 19681 * 256) >> 8;
- b = (298 * y + 541 * u - 73988 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 65535);
- }
-}
-
-static void
-matrix16_yuv_bt709_to_yuv_bt470_6 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (256 * y + 25 * u + 49 * v - 9536 * 256) >> 8;
- g = (253 * u - 28 * v + 3958 * 256) >> 8;
- b = (-19 * u + 252 * v + 2918 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 65535);
- }
-}
-
-static void
-matrix16_yuv_bt470_6_to_yuv_bt709 (ColorspaceConvert * convert)
-{
- int i;
- int r, g, b;
- int y, u, v;
- guint16 *tmpline = convert->tmpline16;
-
- for (i = 0; i < convert->width; i++) {
- y = tmpline[i * 4 + 1];
- u = tmpline[i * 4 + 2];
- v = tmpline[i * 4 + 3];
-
- r = (256 * y - 30 * u - 53 * v + 10600 * 256) >> 8;
- g = (261 * u + 29 * v - 4367 * 256) >> 8;
- b = (19 * u + 262 * v - 3289 * 256) >> 8;
-
- tmpline[i * 4 + 1] = CLAMP (r, 0, 65535);
- tmpline[i * 4 + 2] = CLAMP (g, 0, 65535);
- tmpline[i * 4 + 3] = CLAMP (b, 0, 65535);
- }
-}
-
-static void
-matrix16_identity (ColorspaceConvert * convert)
-{
- /* do nothing */
-}
-
-
-
-static void
-colorspace_convert_lookup_getput (ColorspaceConvert * convert)
-{
- int i;
-
- convert->getline = NULL;
- convert->getline16 = NULL;
- for (i = 0; i < sizeof (lines) / sizeof (lines[0]); i++) {
- if (lines[i].format == convert->from_format) {
- convert->getline = lines[i].getline;
- convert->getline16 = lines[i].getline16;
- break;
- }
- }
- convert->putline = NULL;
- convert->putline16 = NULL;
- for (i = 0; i < sizeof (lines) / sizeof (lines[0]); i++) {
- if (lines[i].format == convert->to_format) {
- convert->putline = lines[i].putline;
- convert->putline16 = lines[i].putline16;
- break;
- }
- }
- GST_DEBUG ("get %p put %p", convert->getline, convert->putline);
-
- if (convert->getline16 == NULL) {
- convert->getline16 = getline16_convert;
- }
- if (convert->putline16 == NULL) {
- convert->putline16 = putline16_convert;
- }
-
- if (convert->from_spec == convert->to_spec) {
- convert->matrix = matrix_identity;
- convert->matrix16 = matrix16_identity;
- } else if (convert->from_spec == COLOR_SPEC_RGB
- && convert->to_spec == COLOR_SPEC_YUV_BT470_6) {
- convert->matrix = matrix_rgb_to_yuv_bt470_6;
- convert->matrix16 = matrix16_rgb_to_yuv_bt470_6;
- } else if (convert->from_spec == COLOR_SPEC_RGB
- && convert->to_spec == COLOR_SPEC_YUV_BT709) {
- convert->matrix = matrix_rgb_to_yuv_bt709;
- convert->matrix16 = matrix16_rgb_to_yuv_bt709;
- } else if (convert->from_spec == COLOR_SPEC_YUV_BT470_6
- && convert->to_spec == COLOR_SPEC_RGB) {
- convert->matrix = matrix_yuv_bt470_6_to_rgb;
- convert->matrix16 = matrix16_yuv_bt470_6_to_rgb;
- } else if (convert->from_spec == COLOR_SPEC_YUV_BT709
- && convert->to_spec == COLOR_SPEC_RGB) {
- convert->matrix = matrix_yuv_bt709_to_rgb;
- convert->matrix16 = matrix16_yuv_bt709_to_rgb;
- } else if (convert->from_spec == COLOR_SPEC_YUV_BT709
- && convert->to_spec == COLOR_SPEC_YUV_BT470_6) {
- convert->matrix = matrix_yuv_bt709_to_yuv_bt470_6;
- convert->matrix16 = matrix16_yuv_bt709_to_yuv_bt470_6;
- } else if (convert->from_spec == COLOR_SPEC_YUV_BT470_6
- && convert->to_spec == COLOR_SPEC_YUV_BT709) {
- convert->matrix = matrix_yuv_bt470_6_to_yuv_bt709;
- convert->matrix16 = matrix16_yuv_bt470_6_to_yuv_bt709;
- }
-}
-
-static void
-colorspace_convert_generic (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int j;
-
- if (convert->getline == NULL) {
- GST_ERROR ("no getline");
- return;
- }
-
- if (convert->putline == NULL) {
- GST_ERROR ("no putline");
- return;
- }
-
- if (convert->use_16bit) {
- for (j = 0; j < convert->height; j++) {
- convert->getline16 (convert, convert->tmpline16, src, j);
- convert->matrix16 (convert);
- convert->dither16 (convert, j);
- convert->putline16 (convert, dest, convert->tmpline16, j);
- }
- } else {
- for (j = 0; j < convert->height; j++) {
- convert->getline (convert, convert->tmpline, src, j);
- convert->matrix (convert);
- convert->putline (convert, dest, convert->tmpline, j);
- }
- }
-}
-
-static void
-colorspace_dither_none (ColorspaceConvert * convert, int j)
-{
-}
-
-static void
-colorspace_dither_verterr (ColorspaceConvert * convert, int j)
-{
- int i;
- guint16 *tmpline = convert->tmpline16;
- guint16 *errline = convert->errline;
-
- for (i = 0; i < 4 * convert->width; i++) {
- tmpline[i] += errline[i];
- errline[i] = tmpline[i] & 0xff;
- }
-}
-
-static void
-colorspace_dither_halftone (ColorspaceConvert * convert, int j)
-{
- int i;
- guint16 *tmpline = convert->tmpline16;
- 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++) {
- tmpline[i] += halftone[(i >> 2) & 7][j & 7];
- }
-}
-
-/* Fast paths */
-
-static void
-convert_I420_YUY2 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i;
-
- for (i = 0; i < GST_ROUND_DOWN_2 (convert->height); i += 2) {
- cogorc_convert_I420_YUY2 (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (dest, 0, i + 1),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 0, i + 1),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 2, i >> 1), (convert->width + 1) / 2);
- }
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_I420 (convert, convert->tmpline, src, convert->height - 1);
- putline_YUY2 (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_I420_UYVY (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i;
-
- for (i = 0; i < GST_ROUND_DOWN_2 (convert->height); i += 2) {
- cogorc_convert_I420_UYVY (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (dest, 0, i + 1),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 0, i + 1),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 2, i >> 1), (convert->width + 1) / 2);
- }
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_I420 (convert, convert->tmpline, src, convert->height - 1);
- putline_UYVY (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_I420_AYUV (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i;
-
- for (i = 0; i < GST_ROUND_DOWN_2 (convert->height); i += 2) {
- cogorc_convert_I420_AYUV (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (dest, 0, i + 1),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 0, i + 1),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 2, i >> 1), convert->width);
- }
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_I420 (convert, convert->tmpline, src, convert->height - 1);
- putline_AYUV (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_I420_Y42B (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_420_422 (FRAME_GET_LINE (dest, 1, 0),
- 2 * convert->dest_stride[1], FRAME_GET_LINE (dest, 1, 1),
- 2 * convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], (convert->width + 1) / 2, convert->height / 2);
-
- cogorc_planar_chroma_420_422 (FRAME_GET_LINE (dest, 2, 0),
- 2 * convert->dest_stride[2], FRAME_GET_LINE (dest, 2, 1),
- 2 * convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height / 2);
-}
-
-static void
-convert_I420_Y444 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_420_444 (FRAME_GET_LINE (dest, 1, 0),
- 2 * convert->dest_stride[1], FRAME_GET_LINE (dest, 1, 1),
- 2 * convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], (convert->width + 1) / 2, convert->height / 2);
-
- cogorc_planar_chroma_420_444 (FRAME_GET_LINE (dest, 2, 0),
- 2 * convert->dest_stride[2], FRAME_GET_LINE (dest, 2, 1),
- 2 * convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height / 2);
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_I420 (convert, convert->tmpline, src, convert->height - 1);
- putline_Y444 (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_YUY2_I420 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i, h;
-
- h = convert->height;
- if (convert->width & 1)
- h--;
-
- for (i = 0; i < h; i += 2) {
- cogorc_convert_YUY2_I420 (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (dest, 0, i + 1),
- FRAME_GET_LINE (dest, 1, i >> 1),
- FRAME_GET_LINE (dest, 2, i >> 1),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 0, i + 1), (convert->width + 1) / 2);
- }
-
- /* now handle last line */
- if (convert->width & 1) {
- getline_YUY2 (convert, convert->tmpline, src, convert->height - 1);
- putline_I420 (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_YUY2_AYUV (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_YUY2_AYUV (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2,
- convert->width & 1 ? convert->height - 1 : convert->height);
-
- /* now handle last line */
- if (convert->width & 1) {
- getline_YUY2 (convert, convert->tmpline, src, convert->height - 1);
- putline_AYUV (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_YUY2_Y42B (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_YUY2_Y42B (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_YUY2_Y444 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_YUY2_Y444 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2, convert->height);
-}
-
-
-static void
-convert_UYVY_I420 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i;
-
- for (i = 0; i < GST_ROUND_DOWN_2 (convert->height); i += 2) {
- cogorc_convert_UYVY_I420 (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (dest, 0, i + 1),
- FRAME_GET_LINE (dest, 1, i >> 1),
- FRAME_GET_LINE (dest, 2, i >> 1),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 0, i + 1), (convert->width + 1) / 2);
- }
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_UYVY (convert, convert->tmpline, src, convert->height - 1);
- putline_I420 (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_UYVY_AYUV (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_UYVY_AYUV (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2,
- convert->width & 1 ? convert->height - 1 : convert->height);
-
- /* now handle last line */
- if (convert->width & 1) {
- getline_UYVY (convert, convert->tmpline, src, convert->height - 1);
- putline_AYUV (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_UYVY_YUY2 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_UYVY_YUY2 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_UYVY_Y42B (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_UYVY_Y42B (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_UYVY_Y444 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_UYVY_Y444 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_AYUV_I420 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_I420 (FRAME_GET_LINE (dest, 0, 0),
- 2 * convert->dest_stride[0], FRAME_GET_LINE (dest, 0, 1),
- 2 * convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- 2 * convert->src_stride[0], FRAME_GET_LINE (src, 0, 1),
- 2 * convert->src_stride[0], convert->width / 2, convert->height / 2);
-}
-
-static void
-convert_AYUV_YUY2 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_YUY2 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width / 2, convert->height);
-}
-
-static void
-convert_AYUV_UYVY (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_UYVY (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width / 2, convert->height);
-}
-
-static void
-convert_AYUV_Y42B (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_Y42B (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], (convert->width + 1) / 2,
- convert->width & 1 ? convert->height - 1 : convert->height);
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_AYUV (convert, convert->tmpline, src, convert->height - 1);
- putline_Y42B (convert, dest, convert->tmpline, convert->height - 1);
- }
-
-}
-
-static void
-convert_AYUV_Y444 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_Y444 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width, convert->height);
-}
-
-static void
-convert_Y42B_I420 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_422_420 (FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- 2 * convert->src_stride[1], FRAME_GET_LINE (src, 1, 1),
- 2 * convert->src_stride[1], (convert->width + 1) / 2,
- convert->height / 2);
-
- cogorc_planar_chroma_422_420 (FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- 2 * convert->src_stride[2], FRAME_GET_LINE (src, 2, 1),
- 2 * convert->src_stride[2], (convert->width + 1) / 2,
- convert->height / 2);
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_Y42B (convert, convert->tmpline, src, convert->height - 1);
- putline_I420 (convert, dest, convert->tmpline, convert->height - 1);
- }
-
-}
-
-static void
-convert_Y42B_Y444 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_422_444 (FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], (convert->width + 1) / 2, convert->height);
-
- cogorc_planar_chroma_422_444 (FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y42B_YUY2 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y42B_YUY2 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y42B_UYVY (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y42B_UYVY (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y42B_AYUV (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y42B_AYUV (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width) / 2, convert->height);
-}
-
-static void
-convert_Y444_I420 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_444_420 (FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- 2 * convert->src_stride[1], FRAME_GET_LINE (src, 1, 1),
- 2 * convert->src_stride[1], (convert->width + 1) / 2,
- convert->height / 2);
-
- cogorc_planar_chroma_444_420 (FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- 2 * convert->src_stride[2], FRAME_GET_LINE (src, 2, 1),
- 2 * convert->src_stride[2], (convert->width + 1) / 2,
- convert->height / 2);
-
- /* now handle last line */
- if (convert->height & 1) {
- getline_Y444 (convert, convert->tmpline, src, convert->height - 1);
- putline_I420 (convert, dest, convert->tmpline, convert->height - 1);
- }
-}
-
-static void
-convert_Y444_Y42B (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_memcpy_2d (FRAME_GET_LINE (dest, 0, 0), convert->dest_stride[0],
- FRAME_GET_LINE (src, 0, 0), convert->src_stride[0],
- convert->width, convert->height);
-
- cogorc_planar_chroma_444_422 (FRAME_GET_LINE (dest, 1, 0),
- convert->dest_stride[1], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], (convert->width + 1) / 2, convert->height);
-
- cogorc_planar_chroma_444_422 (FRAME_GET_LINE (dest, 2, 0),
- convert->dest_stride[2], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y444_YUY2 (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y444_YUY2 (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y444_UYVY (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y444_UYVY (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], (convert->width + 1) / 2, convert->height);
-}
-
-static void
-convert_Y444_AYUV (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_Y444_AYUV (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], FRAME_GET_LINE (src, 1, 0),
- convert->src_stride[1], FRAME_GET_LINE (src, 2, 0),
- convert->src_stride[2], convert->width, convert->height);
-}
-
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-static void
-convert_AYUV_ARGB (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width, convert->height);
-}
-
-static void
-convert_AYUV_BGRA (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width, convert->height);
-}
-
-static void
-convert_AYUV_ABGR (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width, convert->height);
-}
-
-static void
-convert_AYUV_RGBA (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- cogorc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0, 0),
- convert->dest_stride[0], FRAME_GET_LINE (src, 0, 0),
- convert->src_stride[0], convert->width, convert->height);
-}
-
-static void
-convert_I420_BGRA (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src)
-{
- int i;
- int quality = 0;
-
- if (quality > 3) {
- for (i = 0; i < convert->height; i++) {
- if (i & 1) {
- cogorc_convert_I420_BGRA_avg (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 1, (i >> 1) + 1),
- FRAME_GET_LINE (src, 2, i >> 1),
- FRAME_GET_LINE (src, 2, (i >> 1) + 1), convert->width);
- } else {
- cogorc_convert_I420_BGRA (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 2, i >> 1), convert->width);
- }
- }
- } else {
- for (i = 0; i < convert->height; i++) {
- cogorc_convert_I420_BGRA (FRAME_GET_LINE (dest, 0, i),
- FRAME_GET_LINE (src, 0, i),
- FRAME_GET_LINE (src, 1, i >> 1),
- FRAME_GET_LINE (src, 2, i >> 1), convert->width);
- }
- }
-}
-#endif
-
-
-
-/* Fast paths */
-
-typedef struct
-{
- GstVideoFormat from_format;
- ColorSpaceColorSpec from_spec;
- GstVideoFormat to_format;
- ColorSpaceColorSpec to_spec;
- gboolean keeps_color_spec;
- void (*convert) (ColorspaceConvert * convert, guint8 * dest,
- const guint8 * src);
-} ColorspaceTransform;
-static const ColorspaceTransform transforms[] = {
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_YUY2,
- COLOR_SPEC_NONE, TRUE, convert_I420_YUY2},
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_UYVY,
- COLOR_SPEC_NONE, TRUE, convert_I420_UYVY},
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_AYUV,
- COLOR_SPEC_NONE, TRUE, convert_I420_AYUV},
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y42B,
- COLOR_SPEC_NONE, TRUE, convert_I420_Y42B},
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y444,
- COLOR_SPEC_NONE, TRUE, convert_I420_Y444},
-
- {GST_VIDEO_FORMAT_YUY2, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_I420,
- COLOR_SPEC_NONE, TRUE, convert_YUY2_I420},
- {GST_VIDEO_FORMAT_YUY2, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, TRUE, convert_UYVY_YUY2}, /* alias */
- {GST_VIDEO_FORMAT_YUY2, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_AYUV,
- COLOR_SPEC_NONE, TRUE, convert_YUY2_AYUV},
- {GST_VIDEO_FORMAT_YUY2, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y42B,
- COLOR_SPEC_NONE, TRUE, convert_YUY2_Y42B},
- {GST_VIDEO_FORMAT_YUY2, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y444,
- COLOR_SPEC_NONE, TRUE, convert_YUY2_Y444},
-
- {GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_I420,
- COLOR_SPEC_NONE, TRUE, convert_UYVY_I420},
- {GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_YUY2,
- COLOR_SPEC_NONE, TRUE, convert_UYVY_YUY2},
- {GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_AYUV,
- COLOR_SPEC_NONE, TRUE, convert_UYVY_AYUV},
- {GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y42B,
- COLOR_SPEC_NONE, TRUE, convert_UYVY_Y42B},
- {GST_VIDEO_FORMAT_UYVY, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y444,
- COLOR_SPEC_NONE, TRUE, convert_UYVY_Y444},
-
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_I420,
- COLOR_SPEC_NONE, TRUE, convert_AYUV_I420},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_YUY2,
- COLOR_SPEC_NONE, TRUE, convert_AYUV_YUY2},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_UYVY,
- COLOR_SPEC_NONE, TRUE, convert_AYUV_UYVY},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y42B,
- COLOR_SPEC_NONE, TRUE, convert_AYUV_Y42B},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y444,
- COLOR_SPEC_NONE, TRUE, convert_AYUV_Y444},
-
- {GST_VIDEO_FORMAT_Y42B, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_I420,
- COLOR_SPEC_NONE, TRUE, convert_Y42B_I420},
- {GST_VIDEO_FORMAT_Y42B, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_YUY2,
- COLOR_SPEC_NONE, TRUE, convert_Y42B_YUY2},
- {GST_VIDEO_FORMAT_Y42B, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_UYVY,
- COLOR_SPEC_NONE, TRUE, convert_Y42B_UYVY},
- {GST_VIDEO_FORMAT_Y42B, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_AYUV,
- COLOR_SPEC_NONE, TRUE, convert_Y42B_AYUV},
- {GST_VIDEO_FORMAT_Y42B, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y444,
- COLOR_SPEC_NONE, TRUE, convert_Y42B_Y444},
-
- {GST_VIDEO_FORMAT_Y444, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_I420,
- COLOR_SPEC_NONE, TRUE, convert_Y444_I420},
- {GST_VIDEO_FORMAT_Y444, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_YUY2,
- COLOR_SPEC_NONE, TRUE, convert_Y444_YUY2},
- {GST_VIDEO_FORMAT_Y444, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_UYVY,
- COLOR_SPEC_NONE, TRUE, convert_Y444_UYVY},
- {GST_VIDEO_FORMAT_Y444, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_AYUV,
- COLOR_SPEC_NONE, TRUE, convert_Y444_AYUV},
- {GST_VIDEO_FORMAT_Y444, COLOR_SPEC_NONE, GST_VIDEO_FORMAT_Y42B,
- COLOR_SPEC_NONE, TRUE, convert_Y444_Y42B},
-
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_ARGB,
- COLOR_SPEC_RGB, FALSE, convert_AYUV_ARGB},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_BGRA,
- COLOR_SPEC_RGB, FALSE, convert_AYUV_BGRA},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_xRGB, COLOR_SPEC_RGB, FALSE, convert_AYUV_ARGB}, /* alias */
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_BGRx, COLOR_SPEC_RGB, FALSE, convert_AYUV_BGRA}, /* alias */
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_ABGR,
- COLOR_SPEC_RGB, FALSE, convert_AYUV_ABGR},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_RGBA,
- COLOR_SPEC_RGB, FALSE, convert_AYUV_RGBA},
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_xBGR, COLOR_SPEC_RGB, FALSE, convert_AYUV_ABGR}, /* alias */
- {GST_VIDEO_FORMAT_AYUV, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_RGBx, COLOR_SPEC_RGB, FALSE, convert_AYUV_RGBA}, /* alias */
-
- {GST_VIDEO_FORMAT_I420, COLOR_SPEC_YUV_BT470_6, GST_VIDEO_FORMAT_BGRA,
- COLOR_SPEC_RGB, FALSE, convert_I420_BGRA},
-#endif
-};
-
-static void
-colorspace_convert_lookup_fastpath (ColorspaceConvert * convert)
-{
- int i;
-
- for (i = 0; i < sizeof (transforms) / sizeof (transforms[0]); i++) {
- if (transforms[i].to_format == convert->to_format &&
- transforms[i].from_format == convert->from_format &&
- (transforms[i].keeps_color_spec ||
- (transforms[i].from_spec == convert->from_spec &&
- transforms[i].to_spec == convert->to_spec))) {
- convert->convert = transforms[i].convert;
- return;
- }
- }
-}
diff --git a/gst/colorspace/colorspace.h b/gst/colorspace/colorspace.h
deleted file mode 100644
index 7ae8892..0000000
--- a/gst/colorspace/colorspace.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Colorspace conversion functions
- * Copyright (C) 2010 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __COLORSPACE_H__
-#define __COLORSPACE_H__
-
-#include <gst/video/video.h>
-
-G_BEGIN_DECLS
-
-typedef struct _ColorspaceConvert ColorspaceConvert;
-typedef struct _ColorspaceFrame ColorspaceComponent;
-
-typedef enum {
- COLOR_SPEC_NONE = 0,
- COLOR_SPEC_RGB,
- COLOR_SPEC_GRAY,
- COLOR_SPEC_YUV_BT470_6,
- COLOR_SPEC_YUV_BT709,
- COLOR_SPEC_YUV_JPEG
-} ColorSpaceColorSpec;
-
-typedef enum {
- DITHER_NONE,
- DITHER_VERTERR,
- DITHER_HALFTONE
-} ColorSpaceDitherMethod;
-
-struct _ColorspaceComponent {
- int offset;
- int stride;
-};
-
-struct _ColorspaceConvert {
- gint width, height;
- gboolean interlaced;
- gboolean use_16bit;
- gboolean dither;
-
- GstVideoFormat from_format;
- ColorSpaceColorSpec from_spec;
- GstVideoFormat to_format;
- ColorSpaceColorSpec to_spec;
- guint32 *palette;
-
- guint8 *tmpline;
- guint16 *tmpline16;
- guint16 *errline;
-
- int dest_offset[4];
- int dest_stride[4];
- int src_offset[4];
- int src_stride[4];
-
- void (*convert) (ColorspaceConvert *convert, guint8 *dest, const guint8 *src);
- void (*getline) (ColorspaceConvert *convert, guint8 *dest, const guint8 *src, int j);
- void (*putline) (ColorspaceConvert *convert, guint8 *dest, const guint8 *src, int j);
- void (*matrix) (ColorspaceConvert *convert);
-
- void (*getline16) (ColorspaceConvert *convert, guint16 *dest, const guint8 *src, int j);
- void (*putline16) (ColorspaceConvert *convert, guint8 *dest, const guint16 *src, int j);
- void (*matrix16) (ColorspaceConvert *convert);
- void (*dither16) (ColorspaceConvert *convert, int j);
-};
-
-ColorspaceConvert * colorspace_convert_new (GstVideoFormat to_format,
- ColorSpaceColorSpec from_spec, GstVideoFormat from_format,
- ColorSpaceColorSpec to_spec, int width, int height);
-void colorspace_convert_set_dither (ColorspaceConvert * convert, int type);
-void colorspace_convert_set_interlaced (ColorspaceConvert *convert,
- gboolean interlaced);
-void colorspace_convert_set_palette (ColorspaceConvert *convert,
- const guint32 *palette);
-const guint32 * colorspace_convert_get_palette (ColorspaceConvert *convert);
-void colorspace_convert_free (ColorspaceConvert * convert);
-void colorspace_convert_convert (ColorspaceConvert * convert,
- guint8 *dest, const guint8 *src);
-
-
-G_END_DECLS
-
-#endif /* __GST_COLORSPACE_H__ */
diff --git a/gst/colorspace/colorspace.vcproj b/gst/colorspace/colorspace.vcproj
deleted file mode 100644
index f6ca6ce..0000000
--- a/gst/colorspace/colorspace.vcproj
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="colorspace"
- ProjectGUID="{979C216F-0ACF-4956-AE00-055A42D678AB}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../win32/Debug"
- IntermediateDirectory="../../win32/Debug"
- ConfigurationType="2"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../gstreamer/win32;../../../gstreamer;../../../gstreamer/libs;../../../glib;../../../glib/glib;../../../glib/gmodule;"../../gst-libs";../../../popt/include;../../../libxml2/include/libxml2"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;colorspace_EXPORTS;HAVE_CONFIG_H;_USE_MATH_DEFINES"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="glib-2.0.lib gmodule-2.0.lib gthread-2.0.lib gobject-2.0.lib libgstreamer.lib gstbytestream.lib iconv.lib intl.lib"
- OutputFile="$(OutDir)/gstcolorspace.dll"
- LinkIncremental="2"
- AdditionalLibraryDirectories="../../../gstreamer/win32/Debug;../../../glib/glib;../../../glib/gmodule;../../../glib/gthread;../../../glib/gobject;../../../gettext/lib;../../../libiconv/lib"
- ModuleDefinitionFile=""
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/colorspace.pdb"
- SubSystem="2"
- OptimizeReferences="2"
- ImportLibrary="$(OutDir)/gstcolorspace.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy /Y $(TargetPath) c:\gstreamer\plugins"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../win32/Release"
- IntermediateDirectory="../../win32/Release"
- ConfigurationType="2"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../gstreamer/win32;../../../gstreamer;../../../gstreamer/libs;../../../glib;../../../glib/glib;../../../glib/gmodule;"../../gst-libs";../../../popt/include;../../../libxml2/include/libxml2"
- PreprocessorDefinitions="WIN32;NDEBUG;GST_DISABLE_GST_DEBUG;_WINDOWS;_USRDLL;colorspace_EXPORTS;HAVE_CONFIG_H;_USE_MATH_DEFINES"
- RuntimeLibrary="2"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="glib-2.0.lib gmodule-2.0.lib gthread-2.0.lib gobject-2.0.lib libgstreamer.lib gstbytestream.lib iconv.lib intl.lib"
- OutputFile="$(OutDir)/gstcolorspace.dll"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../gstreamer/win32/Release;../../../glib/glib;../../../glib/gmodule;../../../glib/gthread;../../../glib/gobject;../../../gettext/lib;../../../libiconv/lib"
- ModuleDefinitionFile=""
- GenerateDebugInformation="TRUE"
- SubSystem="2"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- ImportLibrary="$(OutDir)/gstcolorspace.lib"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="copy /Y $(TargetPath) c:\gstreamer\plugins"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath=".\gstcolorspace.c">
- </File>
- <File
- RelativePath=".\yuv2rgb.c">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath=".\gstcolorspace.h">
- </File>
- <File
- RelativePath=".\yuv2rgb.h">
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/gst/colorspace/gstcolorspace.c b/gst/colorspace/gstcolorspace.c
deleted file mode 100644
index 1f396c7..0000000
--- a/gst/colorspace/gstcolorspace.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * This file:
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2010 David Schleef <ds@schleef.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-colorspace
- *
- * Convert video frames between a great variety of colorspace formats.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch -v videotestsrc ! video/x-raw-yuv,format=\(fourcc\)YUY2 ! colorspace ! ximagesink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include "gstcolorspace.h"
-#include <gst/video/video.h>
-
-#include <string.h>
-
-GST_DEBUG_CATEGORY (colorspace_debug);
-#define GST_CAT_DEFAULT colorspace_debug
-GST_DEBUG_CATEGORY (colorspace_performance);
-
-enum
-{
- PROP_0,
- PROP_DITHER
-};
-
-#define CSP_VIDEO_CAPS \
- "video/x-raw-yuv, width = "GST_VIDEO_SIZE_RANGE" , " \
- "height="GST_VIDEO_SIZE_RANGE",framerate="GST_VIDEO_FPS_RANGE"," \
- "format= (fourcc) { I420 , NV12 , NV21 , YV12 , YUY2 , Y42B , Y444 , YUV9 , YVU9 , Y41B , Y800 , Y8 , GREY , Y16 , UYVY , YVYU , IYU1 , v308 , AYUV, v210, v216, A420, AY64 } ;" \
- GST_VIDEO_CAPS_RGB";" \
- GST_VIDEO_CAPS_BGR";" \
- GST_VIDEO_CAPS_RGBx";" \
- GST_VIDEO_CAPS_xRGB";" \
- GST_VIDEO_CAPS_BGRx";" \
- GST_VIDEO_CAPS_xBGR";" \
- GST_VIDEO_CAPS_RGBA";" \
- GST_VIDEO_CAPS_ARGB";" \
- GST_VIDEO_CAPS_BGRA";" \
- GST_VIDEO_CAPS_ABGR";" \
- GST_VIDEO_CAPS_RGB_16";" \
- GST_VIDEO_CAPS_BGR_16";" \
- GST_VIDEO_CAPS_RGB_15";" \
- GST_VIDEO_CAPS_BGR_15";" \
- GST_VIDEO_CAPS_RGB8_PALETTED "; " \
- GST_VIDEO_CAPS_GRAY8";" \
- GST_VIDEO_CAPS_GRAY16("BIG_ENDIAN")";" \
- GST_VIDEO_CAPS_GRAY16("LITTLE_ENDIAN")";" \
- GST_VIDEO_CAPS_r210";" \
- GST_VIDEO_CAPS_ARGB_64
-
-static GstStaticPadTemplate gst_csp_src_template =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (CSP_VIDEO_CAPS)
- );
-
-static GstStaticPadTemplate gst_csp_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (CSP_VIDEO_CAPS)
- );
-
-GType gst_csp_get_type (void);
-
-static void gst_csp_set_property (GObject * object,
- guint property_id, const GValue * value, GParamSpec * pspec);
-static void gst_csp_get_property (GObject * object,
- guint property_id, GValue * value, GParamSpec * pspec);
-static void gst_csp_dispose (GObject * object);
-
-static gboolean gst_csp_set_caps (GstBaseTransform * btrans,
- GstCaps * incaps, GstCaps * outcaps);
-static gboolean gst_csp_get_unit_size (GstBaseTransform * btrans,
- GstCaps * caps, guint * size);
-static GstFlowReturn gst_csp_transform (GstBaseTransform * btrans,
- GstBuffer * inbuf, GstBuffer * outbuf);
-
-static GQuark _QRAWRGB; /* "video/x-raw-rgb" */
-static GQuark _QRAWYUV; /* "video/x-raw-yuv" */
-static GQuark _QALPHAMASK; /* "alpha_mask" */
-
-
-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 ("GstColorspaceDitherMethod", values);
- }
- return gtype;
-}
-
-/* copies the given caps */
-static GstCaps *
-gst_csp_caps_remove_format_info (GstCaps * caps)
-{
- GstStructure *yuvst, *rgbst, *grayst;
-
- /* We know there's only one structure since we're given simple caps */
- caps = gst_caps_copy (caps);
-
- yuvst = gst_caps_get_structure (caps, 0);
-
- gst_structure_set_name (yuvst, "video/x-raw-yuv");
- gst_structure_remove_fields (yuvst, "format", "endianness", "depth",
- "bpp", "red_mask", "green_mask", "blue_mask", "alpha_mask",
- "palette_data", "color-matrix", NULL);
-
- rgbst = gst_structure_copy (yuvst);
- gst_structure_set_name (rgbst, "video/x-raw-rgb");
- gst_structure_remove_fields (rgbst, "color-matrix", "chroma-site", NULL);
-
- grayst = gst_structure_copy (rgbst);
- gst_structure_set_name (grayst, "video/x-raw-gray");
-
- gst_caps_append_structure (caps, rgbst);
- gst_caps_append_structure (caps, grayst);
-
- return caps;
-}
-
-
-static gboolean
-gst_csp_structure_is_alpha (GstStructure * s)
-{
- GQuark name;
-
- name = gst_structure_get_name_id (s);
-
- if (name == _QRAWRGB) {
- return gst_structure_id_has_field (s, _QALPHAMASK);
- } else if (name == _QRAWYUV) {
- guint32 fourcc;
-
- if (!gst_structure_get_fourcc (s, "format", &fourcc))
- return FALSE;
-
- return (fourcc == GST_MAKE_FOURCC ('A', 'Y', 'U', 'V'));
- }
-
- return FALSE;
-}
-
-/* The caps can be transformed into any other caps with format info removed.
- * However, we should prefer passthrough, so if passthrough is possible,
- * put it first in the list. */
-static GstCaps *
-gst_csp_transform_caps (GstBaseTransform * btrans,
- GstPadDirection direction, GstCaps * caps)
-{
- GstCaps *template;
- GstCaps *tmp, *tmp2;
- GstCaps *result;
- GstStructure *s;
- GstCaps *alpha, *non_alpha;
-
- template = gst_static_pad_template_get_caps (&gst_csp_src_template);
- result = gst_caps_copy (caps);
-
- /* Get all possible caps that we can transform to */
- tmp = gst_csp_caps_remove_format_info (caps);
- tmp2 = gst_caps_intersect (tmp, template);
- gst_caps_unref (tmp);
- tmp = tmp2;
-
- /* Now move alpha formats to the beginning if caps is an alpha format
- * or at the end if caps is no alpha format */
- alpha = gst_caps_new_empty ();
- non_alpha = gst_caps_new_empty ();
-
- while ((s = gst_caps_steal_structure (tmp, 0))) {
- if (gst_csp_structure_is_alpha (s))
- gst_caps_append_structure (alpha, s);
- else
- gst_caps_append_structure (non_alpha, s);
- }
-
- s = gst_caps_get_structure (caps, 0);
- gst_caps_unref (tmp);
-
- if (gst_csp_structure_is_alpha (s)) {
- gst_caps_append (alpha, non_alpha);
- tmp = alpha;
- } else {
- gst_caps_append (non_alpha, alpha);
- tmp = non_alpha;
- }
-
- gst_caps_append (result, tmp);
-
- GST_DEBUG_OBJECT (btrans, "transformed %" GST_PTR_FORMAT " into %"
- GST_PTR_FORMAT, caps, result);
-
- return result;
-}
-
-static gboolean
-gst_csp_set_caps (GstBaseTransform * btrans, GstCaps * incaps,
- GstCaps * outcaps)
-{
- GstCsp *space;
- GstVideoFormat in_format;
- GstVideoFormat out_format;
- gint in_height, in_width;
- gint out_height, out_width;
- gint in_fps_n, in_fps_d, in_par_n, in_par_d;
- gint out_fps_n, out_fps_d, out_par_n, out_par_d;
- gboolean have_in_par, have_out_par;
- gboolean have_in_interlaced, have_out_interlaced;
- gboolean in_interlaced, out_interlaced;
- gboolean ret;
- ColorSpaceColorSpec in_spec, out_spec;
-
- space = GST_CSP (btrans);
-
- if (space->convert) {
- colorspace_convert_free (space->convert);
- }
-
- /* input caps */
-
- ret = gst_video_format_parse_caps (incaps, &in_format, &in_width, &in_height);
- if (!ret)
- goto no_width_height;
-
- ret = gst_video_parse_caps_framerate (incaps, &in_fps_n, &in_fps_d);
- if (!ret)
- goto no_framerate;
-
- have_in_par = gst_video_parse_caps_pixel_aspect_ratio (incaps,
- &in_par_n, &in_par_d);
- have_in_interlaced = gst_video_format_parse_caps_interlaced (incaps,
- &in_interlaced);
-
- if (gst_video_format_is_rgb (in_format)) {
- in_spec = COLOR_SPEC_RGB;
- } else if (gst_video_format_is_yuv (in_format)) {
- const gchar *matrix = gst_video_parse_caps_color_matrix (incaps);
-
- if (matrix && g_str_equal (matrix, "hdtv"))
- in_spec = COLOR_SPEC_YUV_BT709;
- else if (matrix && g_str_equal (matrix, "jpeg"))
- in_spec = COLOR_SPEC_YUV_JPEG;
- else
- in_spec = COLOR_SPEC_YUV_BT470_6;
- } else {
- in_spec = COLOR_SPEC_GRAY;
- }
-
- /* output caps */
-
- ret =
- gst_video_format_parse_caps (outcaps, &out_format, &out_width,
- &out_height);
- if (!ret)
- goto no_width_height;
-
- ret = gst_video_parse_caps_framerate (outcaps, &out_fps_n, &out_fps_d);
- if (!ret)
- goto no_framerate;
-
- have_out_par = gst_video_parse_caps_pixel_aspect_ratio (outcaps,
- &out_par_n, &out_par_d);
- have_out_interlaced = gst_video_format_parse_caps_interlaced (incaps,
- &out_interlaced);
-
- if (gst_video_format_is_rgb (out_format)) {
- out_spec = COLOR_SPEC_RGB;
- } else if (gst_video_format_is_yuv (out_format)) {
- const gchar *matrix = gst_video_parse_caps_color_matrix (outcaps);
-
- if (matrix && g_str_equal (matrix, "hdtv"))
- out_spec = COLOR_SPEC_YUV_BT709;
- else if (matrix && g_str_equal (matrix, "jpeg"))
- out_spec = COLOR_SPEC_YUV_JPEG;
- else
- out_spec = COLOR_SPEC_YUV_BT470_6;
- } else {
- out_spec = COLOR_SPEC_GRAY;
- }
-
- /* these must match */
- if (in_width != out_width || in_height != out_height ||
- in_fps_n != out_fps_n || in_fps_d != out_fps_d)
- goto format_mismatch;
-
- /* if present, these must match too */
- if (have_in_par && have_out_par &&
- (in_par_n != out_par_n || in_par_d != out_par_d))
- goto format_mismatch;
-
- /* if present, these must match too */
- if (have_in_interlaced && have_out_interlaced &&
- in_interlaced != out_interlaced)
- goto format_mismatch;
-
- space->from_format = in_format;
- space->from_spec = in_spec;
- space->to_format = out_format;
- space->to_spec = out_spec;
- space->width = in_width;
- space->height = in_height;
- space->interlaced = in_interlaced;
-
- space->convert = colorspace_convert_new (out_format, out_spec, in_format,
- in_spec, in_width, in_height);
- if (space->convert) {
- colorspace_convert_set_interlaced (space->convert, in_interlaced);
- }
- /* palette, only for from data */
- if (space->from_format == GST_VIDEO_FORMAT_RGB8_PALETTED &&
- space->to_format == GST_VIDEO_FORMAT_RGB8_PALETTED) {
- goto format_mismatch;
- } else if (space->from_format == GST_VIDEO_FORMAT_RGB8_PALETTED) {
- GstBuffer *palette;
-
- palette = gst_video_parse_caps_palette (incaps);
-
- if (!palette || GST_BUFFER_SIZE (palette) < 256 * 4) {
- if (palette)
- gst_buffer_unref (palette);
- goto invalid_palette;
- }
- colorspace_convert_set_palette (space->convert,
- (const guint32 *) GST_BUFFER_DATA (palette));
- gst_buffer_unref (palette);
- } else if (space->to_format == GST_VIDEO_FORMAT_RGB8_PALETTED) {
- const guint32 *palette;
- GstBuffer *p_buf;
-
- palette = colorspace_convert_get_palette (space->convert);
- p_buf = gst_buffer_new_and_alloc (256 * 4);
- memcpy (GST_BUFFER_DATA (p_buf), palette, 256 * 4);
- gst_caps_set_simple (outcaps, "palette_data", GST_TYPE_BUFFER, p_buf, NULL);
- gst_buffer_unref (p_buf);
- }
-
- GST_DEBUG ("reconfigured %d %d", space->from_format, space->to_format);
-
- return TRUE;
-
- /* ERRORS */
-no_width_height:
- {
- GST_ERROR_OBJECT (space, "did not specify width or height");
- space->from_format = GST_VIDEO_FORMAT_UNKNOWN;
- space->to_format = GST_VIDEO_FORMAT_UNKNOWN;
- return FALSE;
- }
-no_framerate:
- {
- GST_ERROR_OBJECT (space, "did not specify framerate");
- space->from_format = GST_VIDEO_FORMAT_UNKNOWN;
- space->to_format = GST_VIDEO_FORMAT_UNKNOWN;
- return FALSE;
- }
-format_mismatch:
- {
- GST_ERROR_OBJECT (space, "input and output formats do not match");
- space->from_format = GST_VIDEO_FORMAT_UNKNOWN;
- space->to_format = GST_VIDEO_FORMAT_UNKNOWN;
- return FALSE;
- }
-invalid_palette:
- {
- GST_ERROR_OBJECT (space, "invalid palette");
- space->from_format = GST_VIDEO_FORMAT_UNKNOWN;
- space->to_format = GST_VIDEO_FORMAT_UNKNOWN;
- return FALSE;
- }
-}
-
-GST_BOILERPLATE (GstCsp, gst_csp, GstVideoFilter, GST_TYPE_VIDEO_FILTER);
-
-static void
-gst_csp_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_csp_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_csp_sink_template));
-
- gst_element_class_set_details_simple (element_class,
- " Colorspace converter", "Filter/Converter/Video",
- "Converts video from one colorspace to another",
- "GStreamer maintainers <gstreamer-devel@lists.sourceforge.net>");
-
- _QRAWRGB = g_quark_from_string ("video/x-raw-rgb");
- _QRAWYUV = g_quark_from_string ("video/x-raw-yuv");
- _QALPHAMASK = g_quark_from_string ("alpha_mask");
-}
-
-void
-gst_csp_dispose (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_csp_finalize (GObject * obj)
-{
- GstCsp *space = GST_CSP (obj);
-
- if (space->convert) {
- colorspace_convert_free (space->convert);
- }
-
- G_OBJECT_CLASS (parent_class)->finalize (obj);
-
-}
-
-static void
-gst_csp_class_init (GstCspClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstBaseTransformClass *gstbasetransform_class =
- (GstBaseTransformClass *) klass;
-
- gobject_class->set_property = gst_csp_set_property;
- gobject_class->get_property = gst_csp_get_property;
- gobject_class->dispose = gst_csp_dispose;
- gobject_class->finalize = gst_csp_finalize;
-
- gstbasetransform_class->transform_caps =
- GST_DEBUG_FUNCPTR (gst_csp_transform_caps);
- gstbasetransform_class->set_caps = GST_DEBUG_FUNCPTR (gst_csp_set_caps);
- gstbasetransform_class->get_unit_size =
- GST_DEBUG_FUNCPTR (gst_csp_get_unit_size);
- gstbasetransform_class->transform = GST_DEBUG_FUNCPTR (gst_csp_transform);
-
- gstbasetransform_class->passthrough_on_same_caps = TRUE;
-
- 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,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-}
-
-static void
-gst_csp_init (GstCsp * space, GstCspClass * klass)
-{
- space->from_format = GST_VIDEO_FORMAT_UNKNOWN;
- space->to_format = GST_VIDEO_FORMAT_UNKNOWN;
-}
-
-void
-gst_csp_set_property (GObject * object, guint property_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstCsp *csp;
-
- g_return_if_fail (GST_IS_CSP (object));
- csp = GST_CSP (object);
-
- switch (property_id) {
- case PROP_DITHER:
- csp->dither = g_value_get_enum (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-void
-gst_csp_get_property (GObject * object, guint property_id,
- GValue * value, GParamSpec * pspec)
-{
- GstCsp *csp;
-
- g_return_if_fail (GST_IS_CSP (object));
- csp = GST_CSP (object);
-
- switch (property_id) {
- case PROP_DITHER:
- g_value_set_enum (value, csp->dither);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_csp_get_unit_size (GstBaseTransform * btrans, GstCaps * caps, guint * size)
-{
- gboolean ret = TRUE;
- GstVideoFormat format;
- gint width, height;
-
- g_assert (size);
-
- ret = gst_video_format_parse_caps (caps, &format, &width, &height);
- if (ret) {
- *size = gst_video_format_get_size (format, width, height);
- }
-
- return ret;
-}
-
-static GstFlowReturn
-gst_csp_transform (GstBaseTransform * btrans, GstBuffer * inbuf,
- GstBuffer * outbuf)
-{
- GstCsp *space;
-
- space = GST_CSP (btrans);
-
- GST_DEBUG ("from %d -> to %d", space->from_format, space->to_format);
-
- if (G_UNLIKELY (space->from_format == GST_VIDEO_FORMAT_UNKNOWN ||
- space->to_format == GST_VIDEO_FORMAT_UNKNOWN))
- goto unknown_format;
-
- colorspace_convert_set_dither (space->convert, space->dither);
-
- colorspace_convert_convert (space->convert, GST_BUFFER_DATA (outbuf),
- GST_BUFFER_DATA (inbuf));
-
- /* baseclass copies timestamps */
- GST_DEBUG ("from %d -> to %d done", space->from_format, space->to_format);
-
- return GST_FLOW_OK;
-
- /* ERRORS */
-unknown_format:
- {
- GST_ELEMENT_ERROR (space, CORE, NOT_IMPLEMENTED, (NULL),
- ("attempting to convert colorspaces between unknown formats"));
- return GST_FLOW_NOT_NEGOTIATED;
- }
-#if 0
-not_supported:
- {
- GST_ELEMENT_ERROR (space, CORE, NOT_IMPLEMENTED, (NULL),
- ("cannot convert between formats"));
- return GST_FLOW_NOT_SUPPORTED;
- }
-#endif
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (colorspace_debug, "colorspace", 0,
- "Colorspace Converter");
- GST_DEBUG_CATEGORY_GET (colorspace_performance, "GST_PERFORMANCE");
-
- return gst_element_register (plugin, "colorspace",
- GST_RANK_NONE, GST_TYPE_CSP);
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "colorspace", "Colorspace conversion", plugin_init, VERSION, "LGPL", "", "")
diff --git a/gst/colorspace/gstcolorspace.h b/gst/colorspace/gstcolorspace.h
deleted file mode 100644
index 71245b8..0000000
--- a/gst/colorspace/gstcolorspace.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- * This file:
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- *
- * 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_COLORSPACE_H__
-#define __GST_COLORSPACE_H__
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gst/video/gstvideofilter.h>
-#include "colorspace.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_CSP (gst_csp_get_type())
-#define GST_CSP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_CSP,GstCsp))
-#define GST_CSP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_CSP,GstCspClass))
-#define GST_IS_CSP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CSP))
-#define GST_IS_CSP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CSP))
-
-typedef struct _GstCsp GstCsp;
-typedef struct _GstCspClass GstCspClass;
-
-/**
- * GstCsp:
- *
- * Opaque object data structure.
- */
-struct _GstCsp {
- GstVideoFilter element;
-
- gint width, height;
- gboolean interlaced;
- gfloat fps;
-
- GstVideoFormat from_format;
- ColorSpaceColorSpec from_spec;
- GstVideoFormat to_format;
- ColorSpaceColorSpec to_spec;
-
- ColorspaceConvert *convert;
- gboolean dither;
-};
-
-struct _GstCspClass
-{
- GstVideoFilterClass parent_class;
-};
-
-G_END_DECLS
-
-#endif /* __GST_COLORSPACE_H__ */
diff --git a/gst/colorspace/gstcolorspaceorc-dist.c b/gst/colorspace/gstcolorspaceorc-dist.c
deleted file mode 100644
index 06d75b2..0000000
--- a/gst/colorspace/gstcolorspaceorc-dist.c
+++ /dev/null
@@ -1,19395 +0,0 @@
-
-/* autogenerated from gstcolorspaceorc.orc */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <glib.h>
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-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 <limits.h>
-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 DISABLE_ORC
-#include <orc/orc.h>
-#endif
-void cogorc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
-void orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
- int p2, int n);
-void orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
- int p2, int n);
-void orc_matrix3_u8 (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 n);
-void orc_matrix3_100_u8 (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 n);
-void orc_matrix3_100_offset_u8 (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);
-void orc_matrix3_000_u8 (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);
-void orc_pack_123x (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
- int n);
-void orc_pack_x123 (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
- int n);
-void cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
- int p2, int n);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
- const guint8 * ORC_RESTRICT s5, int n);
-void cogorc_getline_I420 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_getline_A420 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
- const guint8 * ORC_RESTRICT s1, 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_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 */
-
-
-
-/* cogorc_memcpy_2d */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_memcpy_2d");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_horiz_cosite_1tap */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union16 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select0wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[0];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_downsample_horiz_cosite_1tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select0wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[0];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-void
-cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_horiz_cosite_1tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_downsample_horiz_cosite_1tap);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 2, "s1");
-
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_horiz_cosite_3tap */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_union16 *) s2;
-
- /* 9: loadpw */
- var40.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
- /* 13: loadpw */
- var41.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var38 = ptr4[i];
- /* 1: copyw */
- var43.i = var38.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var44 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var45 = _src.x2[1];
- }
- /* 4: loadw */
- var39 = ptr5[i];
- /* 5: select0wb */
- {
- orc_union16 _src;
- _src.i = var39.i;
- var46 = _src.x2[0];
- }
- /* 6: convubw */
- var47.i = (orc_uint8) var44;
- /* 7: convubw */
- var48.i = (orc_uint8) var45;
- /* 8: convubw */
- var49.i = (orc_uint8) var46;
- /* 10: mullw */
- var50.i = (var48.i * var40.i) & 0xffff;
- /* 11: addw */
- var51.i = var47.i + var49.i;
- /* 12: addw */
- var52.i = var51.i + var50.i;
- /* 14: addw */
- var53.i = var52.i + var41.i;
- /* 15: shrsw */
- var54.i = var53.i >> 2;
- /* 16: convsuswb */
- var42 = ORC_CLAMP_UB (var54.i);
- /* 17: storeb */
- ptr0[i] = var42;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_downsample_horiz_cosite_3tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_union16 *) ex->arrays[5];
-
- /* 9: loadpw */
- var40.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
- /* 13: loadpw */
- var41.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var38 = ptr4[i];
- /* 1: copyw */
- var43.i = var38.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var44 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var45 = _src.x2[1];
- }
- /* 4: loadw */
- var39 = ptr5[i];
- /* 5: select0wb */
- {
- orc_union16 _src;
- _src.i = var39.i;
- var46 = _src.x2[0];
- }
- /* 6: convubw */
- var47.i = (orc_uint8) var44;
- /* 7: convubw */
- var48.i = (orc_uint8) var45;
- /* 8: convubw */
- var49.i = (orc_uint8) var46;
- /* 10: mullw */
- var50.i = (var48.i * var40.i) & 0xffff;
- /* 11: addw */
- var51.i = var47.i + var49.i;
- /* 12: addw */
- var52.i = var51.i + var50.i;
- /* 14: addw */
- var53.i = var52.i + var41.i;
- /* 15: shrsw */
- var54.i = var53.i >> 2;
- /* 16: convsuswb */
- var42 = ORC_CLAMP_UB (var54.i);
- /* 17: storeb */
- ptr0[i] = var42;
- }
-
-}
-
-void
-cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_horiz_cosite_3tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_downsample_horiz_cosite_3tap);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 2, "s1");
- orc_program_add_source (p, 2, "s2");
- orc_program_add_constant (p, 4, 0x00000002, "c1");
- 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, 2, "t4");
- orc_program_add_temporary (p, 2, "t5");
- orc_program_add_temporary (p, 2, "t6");
-
- orc_program_append_2 (p, "copyw", 0, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T4,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T4,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T4,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_420_jpeg */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_union16 *) s2;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var40.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var40.i;
- var41 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var40.i;
- var42 = _src.x2[1];
- }
- /* 4: avgub */
- var43 = ((orc_uint8) var41 + (orc_uint8) var42 + 1) >> 1;
- /* 5: loadw */
- var38 = ptr5[i];
- /* 6: copyw */
- var44.i = var38.i;
- /* 7: select0wb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var45 = _src.x2[0];
- }
- /* 8: select1wb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var46 = _src.x2[1];
- }
- /* 9: avgub */
- var47 = ((orc_uint8) var45 + (orc_uint8) var46 + 1) >> 1;
- /* 10: avgub */
- var39 = ((orc_uint8) var43 + (orc_uint8) var47 + 1) >> 1;
- /* 11: storeb */
- ptr0[i] = var39;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_downsample_420_jpeg (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_union16 *) ex->arrays[5];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var40.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var40.i;
- var41 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var40.i;
- var42 = _src.x2[1];
- }
- /* 4: avgub */
- var43 = ((orc_uint8) var41 + (orc_uint8) var42 + 1) >> 1;
- /* 5: loadw */
- var38 = ptr5[i];
- /* 6: copyw */
- var44.i = var38.i;
- /* 7: select0wb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var45 = _src.x2[0];
- }
- /* 8: select1wb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var46 = _src.x2[1];
- }
- /* 9: avgub */
- var47 = ((orc_uint8) var45 + (orc_uint8) var46 + 1) >> 1;
- /* 10: avgub */
- var39 = ((orc_uint8) var43 + (orc_uint8) var47 + 1) >> 1;
- /* 11: storeb */
- ptr0[i] = var39;
- }
-
-}
-
-void
-cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_420_jpeg");
- orc_program_set_backup_function (p, _backup_cogorc_downsample_420_jpeg);
- 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_add_temporary (p, 1, "t4");
- orc_program_add_temporary (p, 1, "t5");
-
- orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T2, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T4, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T4,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_vert_halfsite_2tap */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
-
- 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_cogorc_downsample_vert_halfsite_2tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
-
- 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
-cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_vert_halfsite_2tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_downsample_vert_halfsite_2tap);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_vert_cosite_3tap */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union16 var38;
- orc_union16 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 6: loadpw */
- var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
- /* 10: loadpw */
- var39.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var41.i = (orc_uint8) var35;
- /* 2: loadb */
- var36 = ptr5[i];
- /* 3: convubw */
- var42.i = (orc_uint8) var36;
- /* 4: loadb */
- var37 = ptr6[i];
- /* 5: convubw */
- var43.i = (orc_uint8) var37;
- /* 7: mullw */
- var44.i = (var42.i * var38.i) & 0xffff;
- /* 8: addw */
- var45.i = var41.i + var43.i;
- /* 9: addw */
- var46.i = var45.i + var44.i;
- /* 11: addw */
- var47.i = var46.i + var39.i;
- /* 12: shrsw */
- var48.i = var47.i >> 2;
- /* 13: convsuswb */
- var40 = ORC_CLAMP_UB (var48.i);
- /* 14: storeb */
- ptr0[i] = var40;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_downsample_vert_cosite_3tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union16 var38;
- orc_union16 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 6: loadpw */
- var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
- /* 10: loadpw */
- var39.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var41.i = (orc_uint8) var35;
- /* 2: loadb */
- var36 = ptr5[i];
- /* 3: convubw */
- var42.i = (orc_uint8) var36;
- /* 4: loadb */
- var37 = ptr6[i];
- /* 5: convubw */
- var43.i = (orc_uint8) var37;
- /* 7: mullw */
- var44.i = (var42.i * var38.i) & 0xffff;
- /* 8: addw */
- var45.i = var41.i + var43.i;
- /* 9: addw */
- var46.i = var45.i + var44.i;
- /* 11: addw */
- var47.i = var46.i + var39.i;
- /* 12: shrsw */
- var48.i = var47.i >> 2;
- /* 13: convsuswb */
- var40 = ORC_CLAMP_UB (var48.i);
- /* 14: storeb */
- ptr0[i] = var40;
- }
-
-}
-
-void
-cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_vert_cosite_3tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_downsample_vert_cosite_3tap);
- orc_program_add_destination (p, 1, "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, 4, 0x00000002, "c1");
- 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, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_downsample_vert_halfsite_4tap */
-#ifdef DISABLE_ORC
-void
-cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
- 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_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- const orc_int8 *ORC_RESTRICT ptr7;
- orc_int8 var36;
- orc_int8 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
- ptr7 = (orc_int8 *) s4;
-
- /* 9: loadpw */
- var40.i = (int) 0x0000001a; /* 26 or 1.28457e-322f */
- /* 12: loadpw */
- var41.i = (int) 0x00000006; /* 6 or 2.96439e-323f */
- /* 15: loadpw */
- var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 2: loadb */
- var37 = ptr5[i];
- /* 3: convubw */
- var45.i = (orc_uint8) var37;
- /* 4: loadb */
- var38 = ptr6[i];
- /* 5: convubw */
- var46.i = (orc_uint8) var38;
- /* 6: loadb */
- var39 = ptr7[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 8: addw */
- var48.i = var45.i + var46.i;
- /* 10: mullw */
- var49.i = (var48.i * var40.i) & 0xffff;
- /* 11: addw */
- var50.i = var44.i + var47.i;
- /* 13: mullw */
- var51.i = (var50.i * var41.i) & 0xffff;
- /* 14: addw */
- var52.i = var49.i + var51.i;
- /* 16: addw */
- var53.i = var52.i + var42.i;
- /* 17: shrsw */
- var54.i = var53.i >> 6;
- /* 18: convsuswb */
- var43 = ORC_CLAMP_UB (var54.i);
- /* 19: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_downsample_vert_halfsite_4tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- const orc_int8 *ORC_RESTRICT ptr7;
- orc_int8 var36;
- orc_int8 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
- ptr7 = (orc_int8 *) ex->arrays[7];
-
- /* 9: loadpw */
- var40.i = (int) 0x0000001a; /* 26 or 1.28457e-322f */
- /* 12: loadpw */
- var41.i = (int) 0x00000006; /* 6 or 2.96439e-323f */
- /* 15: loadpw */
- var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 2: loadb */
- var37 = ptr5[i];
- /* 3: convubw */
- var45.i = (orc_uint8) var37;
- /* 4: loadb */
- var38 = ptr6[i];
- /* 5: convubw */
- var46.i = (orc_uint8) var38;
- /* 6: loadb */
- var39 = ptr7[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 8: addw */
- var48.i = var45.i + var46.i;
- /* 10: mullw */
- var49.i = (var48.i * var40.i) & 0xffff;
- /* 11: addw */
- var50.i = var44.i + var47.i;
- /* 13: mullw */
- var51.i = (var50.i * var41.i) & 0xffff;
- /* 14: addw */
- var52.i = var49.i + var51.i;
- /* 16: addw */
- var53.i = var52.i + var42.i;
- /* 17: shrsw */
- var54.i = var53.i >> 6;
- /* 18: convsuswb */
- var43 = ORC_CLAMP_UB (var54.i);
- /* 19: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-void
-cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
- 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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_downsample_vert_halfsite_4tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_downsample_vert_halfsite_4tap);
- orc_program_add_destination (p, 1, "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_source (p, 1, "s4");
- orc_program_add_constant (p, 4, 0x0000001a, "c1");
- orc_program_add_constant (p, 4, 0x00000006, "c2");
- orc_program_add_constant (p, 4, 0x00000020, "c3");
- 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_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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->arrays[ORC_VAR_S4] = (void *) s4;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_upsample_horiz_cosite_1tap */
-#ifdef DISABLE_ORC
-void
-cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- orc_int8 var33;
- orc_union16 var34;
- orc_int8 var35;
-
- ptr0 = (orc_union16 *) d1;
- ptr4 = (orc_int8 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var33 = ptr4[i];
- /* 1: copyb */
- var35 = var33;
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var35;
- _dest.x2[1] = var35;
- var34.i = _dest.i;
- }
- /* 3: storew */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_upsample_horiz_cosite_1tap (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- orc_int8 var33;
- orc_union16 var34;
- orc_int8 var35;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var33 = ptr4[i];
- /* 1: copyb */
- var35 = var33;
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var35;
- _dest.x2[1] = var35;
- var34.i = _dest.i;
- }
- /* 3: storew */
- ptr0[i] = var34;
- }
-
-}
-
-void
-cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_upsample_horiz_cosite_1tap");
- orc_program_set_backup_function (p,
- _backup_cogorc_upsample_horiz_cosite_1tap);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_temporary (p, 1, "t1");
-
- orc_program_append_2 (p, "copyb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_upsample_horiz_cosite */
-#ifdef DISABLE_ORC
-void
-cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_int8 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_int8 var38;
-
- ptr0 = (orc_union16 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: copyb */
- var37 = var34;
- /* 2: loadb */
- var35 = ptr5[i];
- /* 3: avgub */
- var38 = ((orc_uint8) var37 + (orc_uint8) var35 + 1) >> 1;
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37;
- _dest.x2[1] = var38;
- var36.i = _dest.i;
- }
- /* 5: storew */
- ptr0[i] = var36;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_upsample_horiz_cosite (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_int8 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_int8 var38;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: copyb */
- var37 = var34;
- /* 2: loadb */
- var35 = ptr5[i];
- /* 3: avgub */
- var38 = ((orc_uint8) var37 + (orc_uint8) var35 + 1) >> 1;
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37;
- _dest.x2[1] = var38;
- var36.i = _dest.i;
- }
- /* 5: storew */
- ptr0[i] = var36;
- }
-
-}
-
-void
-cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_upsample_horiz_cosite");
- orc_program_set_backup_function (p, _backup_cogorc_upsample_horiz_cosite);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_source (p, 1, "s2");
- orc_program_add_temporary (p, 1, "t1");
- orc_program_add_temporary (p, 1, "t2");
-
- orc_program_append_2 (p, "copyb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_upsample_vert_avgub */
-#ifdef DISABLE_ORC
-void
-cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
-
- 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_cogorc_upsample_vert_avgub (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
-
- 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
-cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_upsample_vert_avgub");
- orc_program_set_backup_function (p, _backup_cogorc_upsample_vert_avgub);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_yuyv_y */
-#ifdef DISABLE_ORC
-void
-orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union16 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select0wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[0];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_yuyv_y (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select0wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[0];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-void
-orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_yuyv_y");
- orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_y);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 2, "s1");
-
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_yuyv_u */
-#ifdef DISABLE_ORC
-void
-orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_yuyv_u (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-void
-orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_yuyv_u");
- orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_u);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_yuyv_v */
-#ifdef DISABLE_ORC
-void
-orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select1lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[1];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_yuyv_v (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select1lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[1];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-void
-orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_yuyv_v");
- orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_v);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_pack_yuyv */
-#ifdef DISABLE_ORC
-void
-orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var41.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var42 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var43 = _src.x2[1];
- }
- /* 4: loadb */
- var38 = ptr5[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var42;
- _dest.x2[1] = var38;
- var44.i = _dest.i;
- }
- /* 6: loadb */
- var39 = ptr6[i];
- /* 7: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var43;
- _dest.x2[1] = var39;
- var45.i = _dest.i;
- }
- /* 8: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.i;
- _dest.x2[1] = var45.i;
- var40.i = _dest.i;
- }
- /* 9: storel */
- ptr0[i] = var40;
- }
-
-}
-
-#else
-static void
-_backup_orc_pack_yuyv (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var41.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var42 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var43 = _src.x2[1];
- }
- /* 4: loadb */
- var38 = ptr5[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var42;
- _dest.x2[1] = var38;
- var44.i = _dest.i;
- }
- /* 6: loadb */
- var39 = ptr6[i];
- /* 7: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var43;
- _dest.x2[1] = var39;
- var45.i = _dest.i;
- }
- /* 8: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.i;
- _dest.x2[1] = var45.i;
- var40.i = _dest.i;
- }
- /* 9: storel */
- ptr0[i] = var40;
- }
-
-}
-
-void
-orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_pack_yuyv");
- orc_program_set_backup_function (p, _backup_orc_pack_yuyv);
- 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, 1, "t1");
- orc_program_add_temporary (p, 1, "t2");
- orc_program_add_temporary (p, 2, "t3");
- orc_program_add_temporary (p, 2, "t4");
- orc_program_add_temporary (p, 2, "t5");
-
- orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_uyvy_y */
-#ifdef DISABLE_ORC
-void
-orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union16 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select1wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[1];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_uyvy_y (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var32;
- orc_int8 var33;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var32 = ptr4[i];
- /* 1: select1wb */
- {
- orc_union16 _src;
- _src.i = var32.i;
- var33 = _src.x2[1];
- }
- /* 2: storeb */
- ptr0[i] = var33;
- }
-
-}
-
-void
-orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_uyvy_y");
- orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_y);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 2, "s1");
-
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_uyvy_u */
-#ifdef DISABLE_ORC
-void
-orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[0];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_uyvy_u (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[0];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-void
-orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_uyvy_u");
- orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_u);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_unpack_uyvy_v */
-#ifdef DISABLE_ORC
-void
-orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select1lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[1];
- }
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[0];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_orc_unpack_uyvy_v (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select1lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[1];
- }
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[0];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-void
-orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_unpack_uyvy_v");
- orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_v);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_pack_uyvy */
-#ifdef DISABLE_ORC
-void
-orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var41.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var42 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var43 = _src.x2[1];
- }
- /* 4: loadb */
- var38 = ptr5[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var38;
- _dest.x2[1] = var42;
- var44.i = _dest.i;
- }
- /* 6: loadb */
- var39 = ptr6[i];
- /* 7: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var43;
- var45.i = _dest.i;
- }
- /* 8: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.i;
- _dest.x2[1] = var45.i;
- var40.i = _dest.i;
- }
- /* 9: storel */
- ptr0[i] = var40;
- }
-
-}
-
-#else
-static void
-_backup_orc_pack_uyvy (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_int8 var38;
- orc_int8 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var37 = ptr4[i];
- /* 1: copyw */
- var41.i = var37.i;
- /* 2: select0wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var42 = _src.x2[0];
- }
- /* 3: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.i;
- var43 = _src.x2[1];
- }
- /* 4: loadb */
- var38 = ptr5[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var38;
- _dest.x2[1] = var42;
- var44.i = _dest.i;
- }
- /* 6: loadb */
- var39 = ptr6[i];
- /* 7: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var43;
- var45.i = _dest.i;
- }
- /* 8: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.i;
- _dest.x2[1] = var45.i;
- var40.i = _dest.i;
- }
- /* 9: storel */
- ptr0[i] = var40;
- }
-
-}
-
-void
-orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_pack_uyvy");
- orc_program_set_backup_function (p, _backup_orc_pack_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, 1, "t1");
- orc_program_add_temporary (p, 1, "t2");
- orc_program_add_temporary (p, 2, "t3");
- orc_program_add_temporary (p, 2, "t4");
- orc_program_add_temporary (p, 2, "t5");
-
- orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_S3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix2_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
- /* 2: loadpw */
- var35.i = p1;
- /* 6: loadpw */
- var37.i = p2;
- /* 9: loadpw */
- var38.i = p3;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var40.i = (orc_uint8) var34;
- /* 3: mullw */
- var41.i = (var40.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var42.i = (orc_uint8) var36;
- /* 7: mullw */
- var43.i = (var42.i * var37.i) & 0xffff;
- /* 8: addw */
- var44.i = var41.i + var43.i;
- /* 10: addw */
- var45.i = var44.i + var38.i;
- /* 11: shrsw */
- var46.i = var45.i >> 6;
- /* 12: convsuswb */
- var39 = ORC_CLAMP_UB (var46.i);
- /* 13: storeb */
- ptr0[i] = var39;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix2_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
- /* 2: loadpw */
- var35.i = ex->params[24];
- /* 6: loadpw */
- var37.i = ex->params[25];
- /* 9: loadpw */
- var38.i = ex->params[26];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var40.i = (orc_uint8) var34;
- /* 3: mullw */
- var41.i = (var40.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var42.i = (orc_uint8) var36;
- /* 7: mullw */
- var43.i = (var42.i * var37.i) & 0xffff;
- /* 8: addw */
- var44.i = var41.i + var43.i;
- /* 10: addw */
- var45.i = var44.i + var38.i;
- /* 11: shrsw */
- var46.i = var45.i >> 6;
- /* 12: convsuswb */
- var39 = ORC_CLAMP_UB (var46.i);
- /* 13: storeb */
- ptr0[i] = var39;
- }
-
-}
-
-void
-orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix2_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix2_u8);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_source (p, 1, "s2");
- orc_program_add_constant (p, 4, 0x00000006, "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_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 2, "t2");
-
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
- ex->params[ORC_VAR_P1] = p1;
- ex->params[ORC_VAR_P2] = p2;
- ex->params[ORC_VAR_P3] = p3;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix2_11_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
- /* 2: loadpw */
- var37.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var38.i = p1;
- /* 8: loadpw */
- var40.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var41.i = p2;
- /* 13: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 3: subw */
- var45.i = var44.i - var37.i;
- /* 5: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 6: loadb */
- var39 = ptr5[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 9: subw */
- var48.i = var47.i - var40.i;
- /* 11: mullw */
- var49.i = (var48.i * var41.i) & 0xffff;
- /* 12: addw */
- var50.i = var46.i + var49.i;
- /* 14: addw */
- var51.i = var50.i + var42.i;
- /* 15: shrsw */
- var52.i = var51.i >> 8;
- /* 16: addw */
- var53.i = var52.i + var45.i;
- /* 17: addw */
- var54.i = var53.i + var48.i;
- /* 18: convsuswb */
- var43 = ORC_CLAMP_UB (var54.i);
- /* 19: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix2_11_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
- /* 2: loadpw */
- var37.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var38.i = ex->params[24];
- /* 8: loadpw */
- var40.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var41.i = ex->params[25];
- /* 13: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 3: subw */
- var45.i = var44.i - var37.i;
- /* 5: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 6: loadb */
- var39 = ptr5[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 9: subw */
- var48.i = var47.i - var40.i;
- /* 11: mullw */
- var49.i = (var48.i * var41.i) & 0xffff;
- /* 12: addw */
- var50.i = var46.i + var49.i;
- /* 14: addw */
- var51.i = var50.i + var42.i;
- /* 15: shrsw */
- var52.i = var51.i >> 8;
- /* 16: addw */
- var53.i = var52.i + var45.i;
- /* 17: addw */
- var54.i = var53.i + var48.i;
- /* 18: convsuswb */
- var43 = ORC_CLAMP_UB (var54.i);
- /* 19: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-void
-orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix2_11_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix2_11_u8);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_source (p, 1, "s2");
- orc_program_add_constant (p, 4, 0x00000010, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x00000008, "c3");
- orc_program_add_parameter (p, 2, "p1");
- orc_program_add_parameter (p, 2, "p2");
- 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_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
- ex->params[ORC_VAR_P1] = p1;
- ex->params[ORC_VAR_P2] = p2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix2_12_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union16 var55;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
- /* 2: loadpw */
- var37.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var38.i = p1;
- /* 8: loadpw */
- var40.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var41.i = p2;
- /* 13: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 3: subw */
- var45.i = var44.i - var37.i;
- /* 5: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 6: loadb */
- var39 = ptr5[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 9: subw */
- var48.i = var47.i - var40.i;
- /* 11: mullw */
- var49.i = (var48.i * var41.i) & 0xffff;
- /* 12: addw */
- var50.i = var46.i + var49.i;
- /* 14: addw */
- var51.i = var50.i + var42.i;
- /* 15: shrsw */
- var52.i = var51.i >> 8;
- /* 16: addw */
- var53.i = var52.i + var45.i;
- /* 17: addw */
- var54.i = var53.i + var48.i;
- /* 18: addw */
- var55.i = var54.i + var48.i;
- /* 19: convsuswb */
- var43 = ORC_CLAMP_UB (var55.i);
- /* 20: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix2_12_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_int8 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union16 var55;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
- /* 2: loadpw */
- var37.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var38.i = ex->params[24];
- /* 8: loadpw */
- var40.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var41.i = ex->params[25];
- /* 13: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var36 = ptr4[i];
- /* 1: convubw */
- var44.i = (orc_uint8) var36;
- /* 3: subw */
- var45.i = var44.i - var37.i;
- /* 5: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 6: loadb */
- var39 = ptr5[i];
- /* 7: convubw */
- var47.i = (orc_uint8) var39;
- /* 9: subw */
- var48.i = var47.i - var40.i;
- /* 11: mullw */
- var49.i = (var48.i * var41.i) & 0xffff;
- /* 12: addw */
- var50.i = var46.i + var49.i;
- /* 14: addw */
- var51.i = var50.i + var42.i;
- /* 15: shrsw */
- var52.i = var51.i >> 8;
- /* 16: addw */
- var53.i = var52.i + var45.i;
- /* 17: addw */
- var54.i = var53.i + var48.i;
- /* 18: addw */
- var55.i = var54.i + var48.i;
- /* 19: convsuswb */
- var43 = ORC_CLAMP_UB (var55.i);
- /* 20: storeb */
- ptr0[i] = var43;
- }
-
-}
-
-void
-orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix2_12_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix2_12_u8);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_source (p, 1, "s2");
- orc_program_add_constant (p, 4, 0x00000010, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x00000008, "c3");
- orc_program_add_parameter (p, 2, "p1");
- orc_program_add_parameter (p, 2, "p2");
- 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_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
- ex->params[ORC_VAR_P1] = p1;
- ex->params[ORC_VAR_P2] = p2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix3_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix3_u8 (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 n)
-{
- int i;
- orc_int8 *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_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 2: loadpw */
- var35.i = p1;
- /* 6: loadpw */
- var37.i = p2;
- /* 11: loadpw */
- var39.i = p3;
- /* 14: loadpw */
- var40.i = p4;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var42.i = (orc_uint8) var34;
- /* 3: mullw */
- var43.i = (var42.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var44.i = (orc_uint8) var36;
- /* 7: mullw */
- var45.i = (var44.i * var37.i) & 0xffff;
- /* 8: addw */
- var46.i = var43.i + var45.i;
- /* 9: loadb */
- var38 = ptr6[i];
- /* 10: convubw */
- var47.i = (orc_uint8) var38;
- /* 12: mullw */
- var48.i = (var47.i * var39.i) & 0xffff;
- /* 13: addw */
- var49.i = var46.i + var48.i;
- /* 15: addw */
- var50.i = var49.i + var40.i;
- /* 16: shrsw */
- var51.i = var50.i >> 6;
- /* 17: convsuswb */
- var41 = ORC_CLAMP_UB (var51.i);
- /* 18: storeb */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix3_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *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_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 2: loadpw */
- var35.i = ex->params[24];
- /* 6: loadpw */
- var37.i = ex->params[25];
- /* 11: loadpw */
- var39.i = ex->params[26];
- /* 14: loadpw */
- var40.i = ex->params[27];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var42.i = (orc_uint8) var34;
- /* 3: mullw */
- var43.i = (var42.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var44.i = (orc_uint8) var36;
- /* 7: mullw */
- var45.i = (var44.i * var37.i) & 0xffff;
- /* 8: addw */
- var46.i = var43.i + var45.i;
- /* 9: loadb */
- var38 = ptr6[i];
- /* 10: convubw */
- var47.i = (orc_uint8) var38;
- /* 12: mullw */
- var48.i = (var47.i * var39.i) & 0xffff;
- /* 13: addw */
- var49.i = var46.i + var48.i;
- /* 15: addw */
- var50.i = var49.i + var40.i;
- /* 16: shrsw */
- var51.i = var50.i >> 6;
- /* 17: convsuswb */
- var41 = ORC_CLAMP_UB (var51.i);
- /* 18: storeb */
- ptr0[i] = var41;
- }
-
-}
-
-void
-orc_matrix3_u8 (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 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix3_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix3_u8);
- orc_program_add_destination (p, 1, "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, 4, 0x00000006, "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_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 2, "t2");
-
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix3_100_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix3_100_u8 (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 n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_int8 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union16 var55;
- orc_union16 var56;
- orc_union16 var57;
- orc_union16 var58;
- orc_union16 var59;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 2: loadpw */
- var36.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var37.i = p1;
- /* 8: loadpw */
- var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var40.i = p2;
- /* 15: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 17: loadpw */
- var43.i = p3;
- /* 20: loadpw */
- var44.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var46.i = (orc_uint8) var35;
- /* 3: subw */
- var47.i = var46.i - var36.i;
- /* 5: mullw */
- var48.i = (var47.i * var37.i) & 0xffff;
- /* 6: loadb */
- var38 = ptr5[i];
- /* 7: convubw */
- var49.i = (orc_uint8) var38;
- /* 9: subw */
- var50.i = var49.i - var39.i;
- /* 11: mullw */
- var51.i = (var50.i * var40.i) & 0xffff;
- /* 12: addw */
- var52.i = var48.i + var51.i;
- /* 13: loadb */
- var41 = ptr6[i];
- /* 14: convubw */
- var53.i = (orc_uint8) var41;
- /* 16: subw */
- var54.i = var53.i - var42.i;
- /* 18: mullw */
- var55.i = (var54.i * var43.i) & 0xffff;
- /* 19: addw */
- var56.i = var52.i + var55.i;
- /* 21: addw */
- var57.i = var56.i + var44.i;
- /* 22: shrsw */
- var58.i = var57.i >> 8;
- /* 23: addw */
- var59.i = var58.i + var47.i;
- /* 24: convsuswb */
- var45 = ORC_CLAMP_UB (var59.i);
- /* 25: storeb */
- ptr0[i] = var45;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix3_100_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_int8 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union16 var55;
- orc_union16 var56;
- orc_union16 var57;
- orc_union16 var58;
- orc_union16 var59;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 2: loadpw */
- var36.i = (int) 0x00000010; /* 16 or 7.90505e-323f */
- /* 4: loadpw */
- var37.i = ex->params[24];
- /* 8: loadpw */
- var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 10: loadpw */
- var40.i = ex->params[25];
- /* 15: loadpw */
- var42.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 17: loadpw */
- var43.i = ex->params[26];
- /* 20: loadpw */
- var44.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var46.i = (orc_uint8) var35;
- /* 3: subw */
- var47.i = var46.i - var36.i;
- /* 5: mullw */
- var48.i = (var47.i * var37.i) & 0xffff;
- /* 6: loadb */
- var38 = ptr5[i];
- /* 7: convubw */
- var49.i = (orc_uint8) var38;
- /* 9: subw */
- var50.i = var49.i - var39.i;
- /* 11: mullw */
- var51.i = (var50.i * var40.i) & 0xffff;
- /* 12: addw */
- var52.i = var48.i + var51.i;
- /* 13: loadb */
- var41 = ptr6[i];
- /* 14: convubw */
- var53.i = (orc_uint8) var41;
- /* 16: subw */
- var54.i = var53.i - var42.i;
- /* 18: mullw */
- var55.i = (var54.i * var43.i) & 0xffff;
- /* 19: addw */
- var56.i = var52.i + var55.i;
- /* 21: addw */
- var57.i = var56.i + var44.i;
- /* 22: shrsw */
- var58.i = var57.i >> 8;
- /* 23: addw */
- var59.i = var58.i + var47.i;
- /* 24: convsuswb */
- var45 = ORC_CLAMP_UB (var59.i);
- /* 25: storeb */
- ptr0[i] = var45;
- }
-
-}
-
-void
-orc_matrix3_100_u8 (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 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix3_100_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix3_100_u8);
- orc_program_add_destination (p, 1, "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, 4, 0x00000010, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x00000008, "c3");
- orc_program_add_parameter (p, 2, "p1");
- orc_program_add_parameter (p, 2, "p2");
- orc_program_add_parameter (p, 2, "p3");
- 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, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix3_100_offset_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix3_100_offset_u8 (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_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 2: loadpw */
- var36.i = p1;
- /* 6: loadpw */
- var38.i = p2;
- /* 11: loadpw */
- var40.i = p3;
- /* 14: loadpw */
- var41.i = p4;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var43.i = (orc_uint8) var35;
- /* 3: mullw */
- var44.i = (var43.i * var36.i) & 0xffff;
- /* 4: loadb */
- var37 = ptr5[i];
- /* 5: convubw */
- var45.i = (orc_uint8) var37;
- /* 7: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 8: addw */
- var47.i = var44.i + var46.i;
- /* 9: loadb */
- var39 = ptr6[i];
- /* 10: convubw */
- var48.i = (orc_uint8) var39;
- /* 12: mullw */
- var49.i = (var48.i * var40.i) & 0xffff;
- /* 13: addw */
- var50.i = var47.i + var49.i;
- /* 15: addw */
- var51.i = var50.i + var41.i;
- /* 16: shrsw */
- var52.i = var51.i >> p5;
- /* 17: addw */
- var53.i = var52.i + var43.i;
- /* 18: convsuswb */
- var42 = ORC_CLAMP_UB (var53.i);
- /* 19: storeb */
- ptr0[i] = var42;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix3_100_offset_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_int8 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_union16 var38;
- orc_int8 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_int8 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 2: loadpw */
- var36.i = ex->params[24];
- /* 6: loadpw */
- var38.i = ex->params[25];
- /* 11: loadpw */
- var40.i = ex->params[26];
- /* 14: loadpw */
- var41.i = ex->params[27];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var35 = ptr4[i];
- /* 1: convubw */
- var43.i = (orc_uint8) var35;
- /* 3: mullw */
- var44.i = (var43.i * var36.i) & 0xffff;
- /* 4: loadb */
- var37 = ptr5[i];
- /* 5: convubw */
- var45.i = (orc_uint8) var37;
- /* 7: mullw */
- var46.i = (var45.i * var38.i) & 0xffff;
- /* 8: addw */
- var47.i = var44.i + var46.i;
- /* 9: loadb */
- var39 = ptr6[i];
- /* 10: convubw */
- var48.i = (orc_uint8) var39;
- /* 12: mullw */
- var49.i = (var48.i * var40.i) & 0xffff;
- /* 13: addw */
- var50.i = var47.i + var49.i;
- /* 15: addw */
- var51.i = var50.i + var41.i;
- /* 16: shrsw */
- var52.i = var51.i >> ex->params[28];
- /* 17: addw */
- var53.i = var52.i + var43.i;
- /* 18: convsuswb */
- var42 = ORC_CLAMP_UB (var53.i);
- /* 19: storeb */
- ptr0[i] = var42;
- }
-
-}
-
-void
-orc_matrix3_100_offset_u8 (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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix3_100_offset_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix3_100_offset_u8);
- orc_program_add_destination (p, 1, "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_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_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_matrix3_000_u8 */
-#ifdef DISABLE_ORC
-void
-orc_matrix3_000_u8 (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_int8 *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_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 2: loadpw */
- var35.i = p1;
- /* 6: loadpw */
- var37.i = p2;
- /* 11: loadpw */
- var39.i = p3;
- /* 14: loadpw */
- var40.i = p4;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var42.i = (orc_uint8) var34;
- /* 3: mullw */
- var43.i = (var42.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var44.i = (orc_uint8) var36;
- /* 7: mullw */
- var45.i = (var44.i * var37.i) & 0xffff;
- /* 8: addw */
- var46.i = var43.i + var45.i;
- /* 9: loadb */
- var38 = ptr6[i];
- /* 10: convubw */
- var47.i = (orc_uint8) var38;
- /* 12: mullw */
- var48.i = (var47.i * var39.i) & 0xffff;
- /* 13: addw */
- var49.i = var46.i + var48.i;
- /* 15: addw */
- var50.i = var49.i + var40.i;
- /* 16: shrsw */
- var51.i = var50.i >> p5;
- /* 17: convwb */
- var41 = var51.i;
- /* 18: storeb */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_orc_matrix3_000_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *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_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_union16 var47;
- orc_union16 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 2: loadpw */
- var35.i = ex->params[24];
- /* 6: loadpw */
- var37.i = ex->params[25];
- /* 11: loadpw */
- var39.i = ex->params[26];
- /* 14: loadpw */
- var40.i = ex->params[27];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var42.i = (orc_uint8) var34;
- /* 3: mullw */
- var43.i = (var42.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var44.i = (orc_uint8) var36;
- /* 7: mullw */
- var45.i = (var44.i * var37.i) & 0xffff;
- /* 8: addw */
- var46.i = var43.i + var45.i;
- /* 9: loadb */
- var38 = ptr6[i];
- /* 10: convubw */
- var47.i = (orc_uint8) var38;
- /* 12: mullw */
- var48.i = (var47.i * var39.i) & 0xffff;
- /* 13: addw */
- var49.i = var46.i + var48.i;
- /* 15: addw */
- var50.i = var49.i + var40.i;
- /* 16: shrsw */
- var51.i = var50.i >> ex->params[28];
- /* 17: convwb */
- var41 = var51.i;
- /* 18: storeb */
- ptr0[i] = var41;
- }
-
-}
-
-void
-orc_matrix3_000_u8 (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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_matrix3_000_u8");
- orc_program_set_backup_function (p, _backup_orc_matrix3_000_u8);
- orc_program_add_destination (p, 1, "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_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_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_pack_123x */
-#ifdef DISABLE_ORC
-void
-orc_pack_123x (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
- 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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 4: loadpb */
- var37 = p1;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: loadb */
- var35 = ptr5[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var34;
- _dest.x2[1] = var35;
- var39.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr6[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] = var39.i;
- _dest.x2[1] = var40.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_orc_pack_123x (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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 4: loadpb */
- var37 = ex->params[24];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: loadb */
- var35 = ptr5[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var34;
- _dest.x2[1] = var35;
- var39.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr6[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] = var39.i;
- _dest.x2[1] = var40.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-void
-orc_pack_123x (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_pack_123x");
- orc_program_set_backup_function (p, _backup_orc_pack_123x);
- 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_parameter (p, 1, "p1");
- 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_S1, ORC_VAR_S2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* orc_pack_x123 */
-#ifdef DISABLE_ORC
-void
-orc_pack_x123 (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
- 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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 0: loadpb */
- var34 = p1;
-
- for (i = 0; i < n; i++) {
- /* 1: loadb */
- var35 = ptr4[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var34;
- _dest.x2[1] = var35;
- var39.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr5[i];
- /* 4: loadb */
- var37 = ptr6[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] = var39.i;
- _dest.x2[1] = var40.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_orc_pack_x123 (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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 0: loadpb */
- var34 = ex->params[24];
-
- for (i = 0; i < n; i++) {
- /* 1: loadb */
- var35 = ptr4[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var34;
- _dest.x2[1] = var35;
- var39.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr5[i];
- /* 4: loadb */
- var37 = ptr6[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] = var39.i;
- _dest.x2[1] = var40.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-void
-orc_pack_x123 (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "orc_pack_x123");
- orc_program_set_backup_function (p, _backup_orc_pack_x123);
- 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_parameter (p, 1, "p1");
- 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_P1, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_combine2_u8 */
-#ifdef DISABLE_ORC
-void
-cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
-
- /* 2: loadpw */
- var35.i = p1;
- /* 6: loadpw */
- var37.i = p2;
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var39.i = (orc_uint8) var34;
- /* 3: mullw */
- var40.i = (var39.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var41.i = (orc_uint8) var36;
- /* 7: mullw */
- var42.i = (var41.i * var37.i) & 0xffff;
- /* 8: addw */
- var43.i = var40.i + var42.i;
- /* 9: shruw */
- var44.i = ((orc_uint16) var43.i) >> 8;
- /* 10: convsuswb */
- var38 = ORC_CLAMP_UB (var44.i);
- /* 11: storeb */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_combine2_u8 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- orc_int8 var34;
- orc_union16 var35;
- orc_int8 var36;
- orc_union16 var37;
- orc_int8 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
-
- /* 2: loadpw */
- var35.i = ex->params[24];
- /* 6: loadpw */
- var37.i = ex->params[25];
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var34 = ptr4[i];
- /* 1: convubw */
- var39.i = (orc_uint8) var34;
- /* 3: mullw */
- var40.i = (var39.i * var35.i) & 0xffff;
- /* 4: loadb */
- var36 = ptr5[i];
- /* 5: convubw */
- var41.i = (orc_uint8) var36;
- /* 7: mullw */
- var42.i = (var41.i * var37.i) & 0xffff;
- /* 8: addw */
- var43.i = var40.i + var42.i;
- /* 9: shruw */
- var44.i = ((orc_uint16) var43.i) >> 8;
- /* 10: convsuswb */
- var38 = ORC_CLAMP_UB (var44.i);
- /* 11: storeb */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int p1, int p2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_combine2_u8");
- orc_program_set_backup_function (p, _backup_cogorc_combine2_u8);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_source (p, 1, "s2");
- orc_program_add_constant (p, 4, 0x00000008, "c1");
- orc_program_add_parameter (p, 2, "p1");
- orc_program_add_parameter (p, 2, "p2");
- orc_program_add_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 2, "t2");
-
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
- ex->params[ORC_VAR_P1] = p1;
- ex->params[ORC_VAR_P2] = p2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_I420_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_I420_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_I420_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_I420_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_I420_AYUV */
-#ifdef DISABLE_ORC
-void
-cogorc_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;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- 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_cogorc_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;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- 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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_I420_AYUV");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_YUY2_I420 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_YUY2_I420");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_UYVY_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_UYVY_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_420_422 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_420_422");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_420_444 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_420_444");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_422_444 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_422_444");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_444_422 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_444_422");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_444_420 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_444_420");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_planar_chroma_422_420 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_planar_chroma_422_420");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_YUY2_AYUV */
-#ifdef DISABLE_ORC
-void
-cogorc_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;
- orc_union16 var37;
- 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_cogorc_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;
- orc_union16 var37;
- 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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_YUY2_AYUV");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_UYVY_AYUV */
-#ifdef DISABLE_ORC
-void
-cogorc_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;
- orc_union16 var37;
- 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_cogorc_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;
- orc_union16 var37;
- 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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_UYVY_AYUV");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_YUY2_Y42B */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_YUY2_Y42B");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_UYVY_Y42B */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_UYVY_Y42B");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_YUY2_Y444 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_YUY2_Y444");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_UYVY_Y444 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_UYVY_Y444");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_UYVY_I420 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_UYVY_I420");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_I420 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_I420");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_Y42B */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_Y42B");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_Y444 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_Y444");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y42B_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y42B_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y42B_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y42B_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y42B_AYUV */
-#ifdef DISABLE_ORC
-void
-cogorc_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;
- orc_union16 var38;
- 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_cogorc_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;
- orc_union16 var38;
- 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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y42B_AYUV");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y444_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y444_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y444_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_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_cogorc_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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y444_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_Y444_AYUV */
-#ifdef DISABLE_ORC
-void
-cogorc_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;
- orc_int8 var36;
- 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_cogorc_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;
- orc_int8 var36;
- 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
-cogorc_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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_Y444_AYUV");
- orc_program_set_backup_function (p, _backup_cogorc_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_ARGB */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_AYUV_ARGB (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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- for (j = 0; j < m; j++) {
- ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
- ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
-
- /* 1: loadpb */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var61;
- _dest.x2[1] = var87;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var88;
- _dest.x2[1] = var89;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-#else
-static void
-_backup_cogorc_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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- 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 */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var61;
- _dest.x2[1] = var87;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var88;
- _dest.x2[1] = var89;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-void
-cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
-{
- 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) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_ARGB");
- orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_ARGB);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 1, 0x00000008, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "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, 2, "t11");
- orc_program_add_temporary (p, 2, "t12");
- orc_program_add_temporary (p, 1, "t13");
- orc_program_add_temporary (p, 1, "t14");
- orc_program_add_temporary (p, 1, "t15");
- orc_program_add_temporary (p, 4, "t16");
-
- orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T9, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T8, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, 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, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
- ORC_VAR_T13, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
- ORC_VAR_T15, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_BGRA */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_AYUV_BGRA (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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- for (j = 0; j < m; j++) {
- ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
- ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
-
- /* 1: loadpb */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var89;
- _dest.x2[1] = var88;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var61;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-#else
-static void
-_backup_cogorc_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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- 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 */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var89;
- _dest.x2[1] = var88;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var61;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-void
-cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
-{
- 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) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_BGRA");
- orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_BGRA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 1, 0x00000008, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "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, 2, "t11");
- orc_program_add_temporary (p, 2, "t12");
- orc_program_add_temporary (p, 1, "t13");
- orc_program_add_temporary (p, 1, "t14");
- orc_program_add_temporary (p, 1, "t15");
- orc_program_add_temporary (p, 4, "t16");
-
- orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T9, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T8, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, 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, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T15,
- ORC_VAR_T14, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T13,
- ORC_VAR_T3, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_ABGR */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_AYUV_ABGR (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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- for (j = 0; j < m; j++) {
- ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
- ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
-
- /* 1: loadpb */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var61;
- _dest.x2[1] = var89;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var88;
- _dest.x2[1] = var87;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-#else
-static void
-_backup_cogorc_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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- 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 */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var61;
- _dest.x2[1] = var89;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var88;
- _dest.x2[1] = var87;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-void
-cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
-{
- 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) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_ABGR");
- orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_ABGR);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 1, 0x00000008, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "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, 2, "t11");
- orc_program_add_temporary (p, 2, "t12");
- orc_program_add_temporary (p, 1, "t13");
- orc_program_add_temporary (p, 1, "t14");
- orc_program_add_temporary (p, 1, "t15");
- orc_program_add_temporary (p, 4, "t16");
-
- orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T9, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T8, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, 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, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
- ORC_VAR_T15, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
- ORC_VAR_T13, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_AYUV_RGBA */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_AYUV_RGBA (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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- for (j = 0; j < m; j++) {
- ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
- ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
-
- /* 1: loadpb */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var88;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var89;
- _dest.x2[1] = var61;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-#else
-static void
-_backup_cogorc_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 var48;
- orc_union32 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_union16 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_int8 var87;
- orc_int8 var88;
- orc_int8 var89;
- orc_union16 var90;
- orc_union16 var91;
- orc_union32 var92;
-
- 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 */
- var49.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var49.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 14: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 21: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 25: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 29: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 40: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var48 = ptr4[i];
- /* 2: subb */
- var57.x4[0] = var48.x4[0] - var49.x4[0];
- var57.x4[1] = var48.x4[1] - var49.x4[1];
- var57.x4[2] = var48.x4[2] - var49.x4[2];
- var57.x4[3] = var48.x4[3] - var49.x4[3];
- /* 3: splitlw */
- {
- orc_union32 _src;
- _src.i = var57.i;
- var58.i = _src.x2[1];
- var59.i = _src.x2[0];
- }
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var59.i;
- var60 = _src.x2[1];
- var61 = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var58.i;
- var62 = _src.x2[1];
- var63 = _src.x2[0];
- }
- /* 6: convsbw */
- var64.i = var60;
- /* 7: convsbw */
- var65.i = var63;
- /* 8: convsbw */
- var66.i = var62;
- /* 10: mullw */
- var67.i = (var64.i * var50.i) & 0xffff;
- /* 11: shrsw */
- var68.i = var67.i >> 8;
- /* 12: addssw */
- var69.i = ORC_CLAMP_SW (var64.i + var68.i);
- /* 13: addssw */
- var70.i = ORC_CLAMP_SW (var69.i + var66.i);
- /* 15: mullw */
- var71.i = (var66.i * var51.i) & 0xffff;
- /* 16: shrsw */
- var72.i = var71.i >> 8;
- /* 17: subssw */
- var73.i = ORC_CLAMP_SW (var70.i - var72.i);
- /* 18: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var66.i);
- /* 19: addssw */
- var75.i = ORC_CLAMP_SW (var69.i + var65.i);
- /* 20: addssw */
- var76.i = ORC_CLAMP_SW (var75.i + var65.i);
- /* 22: mullw */
- var77.i = (var65.i * var52.i) & 0xffff;
- /* 23: shrsw */
- var78.i = var77.i >> 8;
- /* 24: addssw */
- var79.i = ORC_CLAMP_SW (var76.i + var78.i);
- /* 26: mullw */
- var80.i = (var65.i * var53.i) & 0xffff;
- /* 27: shrsw */
- var81.i = var80.i >> 8;
- /* 28: subssw */
- var82.i = ORC_CLAMP_SW (var69.i - var81.i);
- /* 30: mullw */
- var83.i = (var66.i * var54.i) & 0xffff;
- /* 31: shrsw */
- var84.i = var83.i >> 8;
- /* 32: subssw */
- var85.i = ORC_CLAMP_SW (var82.i - var84.i);
- /* 33: subssw */
- var86.i = ORC_CLAMP_SW (var85.i - var84.i);
- /* 34: convssswb */
- var87 = ORC_CLAMP_SB (var74.i);
- /* 35: convssswb */
- var88 = ORC_CLAMP_SB (var86.i);
- /* 36: convssswb */
- var89 = ORC_CLAMP_SB (var79.i);
- /* 37: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var88;
- var90.i = _dest.i;
- }
- /* 38: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var89;
- _dest.x2[1] = var61;
- var91.i = _dest.i;
- }
- /* 39: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var90.i;
- _dest.x2[1] = var91.i;
- var92.i = _dest.i;
- }
- /* 41: addb */
- var56.x4[0] = var92.x4[0] + var55.x4[0];
- var56.x4[1] = var92.x4[1] + var55.x4[1];
- var56.x4[2] = var92.x4[2] + var55.x4[2];
- var56.x4[3] = var92.x4[3] + var55.x4[3];
- /* 42: storel */
- ptr0[i] = var56;
- }
- }
-
-}
-
-void
-cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
- const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
-{
- 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) {
-
- p = orc_program_new ();
- orc_program_set_2d (p);
- orc_program_set_name (p, "cogorc_convert_AYUV_RGBA");
- orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_RGBA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 1, 0x00000008, "c1");
- orc_program_add_constant (p, 4, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "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, 2, "t11");
- orc_program_add_temporary (p, 2, "t12");
- orc_program_add_temporary (p, 1, "t13");
- orc_program_add_temporary (p, 1, "t14");
- orc_program_add_temporary (p, 1, "t15");
- orc_program_add_temporary (p, 4, "t16");
-
- orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T9, ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T8, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
- ORC_VAR_T1, 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, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
- ORC_VAR_T14, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T15,
- ORC_VAR_T3, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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 = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_I420_BGRA */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, 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 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_int8 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_int8 var57;
- orc_union16 var58;
- orc_int8 var59;
- orc_int8 var60;
- orc_union16 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_int8 var85;
- orc_int8 var86;
- orc_int8 var87;
- orc_union16 var88;
- orc_union16 var89;
- orc_union32 var90;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 1: loadpb */
- var46 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 5: loadpb */
- var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpb */
- var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 12: loadpw */
- var49.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 17: loadpw */
- var50.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 24: loadpw */
- var51.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 28: loadpw */
- var52.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 32: loadpw */
- var53.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 41: loadpb */
- var54 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 44: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var45 = ptr4[i];
- /* 2: subb */
- var57 = var45 - var46;
- /* 3: convsbw */
- var58.i = var57;
- /* 4: loadupib */
- var59 =
- (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
- 1) >> 1 : ptr5[i >> 1];
- /* 6: subb */
- var60 = var59 - var47;
- /* 7: convsbw */
- var61.i = var60;
- /* 8: loadupib */
- var62 =
- (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
- 1) >> 1 : ptr6[i >> 1];
- /* 10: subb */
- var63 = var62 - var48;
- /* 11: convsbw */
- var64.i = var63;
- /* 13: mullw */
- var65.i = (var58.i * var49.i) & 0xffff;
- /* 14: shrsw */
- var66.i = var65.i >> 8;
- /* 15: addssw */
- var67.i = ORC_CLAMP_SW (var58.i + var66.i);
- /* 16: addssw */
- var68.i = ORC_CLAMP_SW (var67.i + var64.i);
- /* 18: mullw */
- var69.i = (var64.i * var50.i) & 0xffff;
- /* 19: shrsw */
- var70.i = var69.i >> 8;
- /* 20: subssw */
- var71.i = ORC_CLAMP_SW (var68.i - var70.i);
- /* 21: addssw */
- var72.i = ORC_CLAMP_SW (var71.i + var64.i);
- /* 22: addssw */
- var73.i = ORC_CLAMP_SW (var67.i + var61.i);
- /* 23: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var61.i);
- /* 25: mullw */
- var75.i = (var61.i * var51.i) & 0xffff;
- /* 26: shrsw */
- var76.i = var75.i >> 8;
- /* 27: addssw */
- var77.i = ORC_CLAMP_SW (var74.i + var76.i);
- /* 29: mullw */
- var78.i = (var61.i * var52.i) & 0xffff;
- /* 30: shrsw */
- var79.i = var78.i >> 8;
- /* 31: subssw */
- var80.i = ORC_CLAMP_SW (var67.i - var79.i);
- /* 33: mullw */
- var81.i = (var64.i * var53.i) & 0xffff;
- /* 34: shrsw */
- var82.i = var81.i >> 8;
- /* 35: subssw */
- var83.i = ORC_CLAMP_SW (var80.i - var82.i);
- /* 36: subssw */
- var84.i = ORC_CLAMP_SW (var83.i - var82.i);
- /* 37: convssswb */
- var85 = ORC_CLAMP_SB (var72.i);
- /* 38: convssswb */
- var86 = ORC_CLAMP_SB (var84.i);
- /* 39: convssswb */
- var87 = ORC_CLAMP_SB (var77.i);
- /* 40: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var86;
- var88.i = _dest.i;
- }
- /* 42: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var85;
- _dest.x2[1] = var54;
- var89.i = _dest.i;
- }
- /* 43: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var88.i;
- _dest.x2[1] = var89.i;
- var90.i = _dest.i;
- }
- /* 45: addb */
- var56.x4[0] = var90.x4[0] + var55.x4[0];
- var56.x4[1] = var90.x4[1] + var55.x4[1];
- var56.x4[2] = var90.x4[2] + var55.x4[2];
- var56.x4[3] = var90.x4[3] + var55.x4[3];
- /* 46: storel */
- ptr0[i] = var56;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_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 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_union16 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_int8 var54;
- orc_union32 var55;
- orc_union32 var56;
- orc_int8 var57;
- orc_union16 var58;
- orc_int8 var59;
- orc_int8 var60;
- orc_union16 var61;
- orc_int8 var62;
- orc_int8 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_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_int8 var85;
- orc_int8 var86;
- orc_int8 var87;
- orc_union16 var88;
- orc_union16 var89;
- orc_union32 var90;
-
- 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 */
- var46 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 5: loadpb */
- var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 9: loadpb */
- var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 12: loadpw */
- var49.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 17: loadpw */
- var50.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 24: loadpw */
- var51.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 28: loadpw */
- var52.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 32: loadpw */
- var53.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 41: loadpb */
- var54 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 44: loadpb */
- var55.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var55.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var45 = ptr4[i];
- /* 2: subb */
- var57 = var45 - var46;
- /* 3: convsbw */
- var58.i = var57;
- /* 4: loadupib */
- var59 =
- (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
- 1) >> 1 : ptr5[i >> 1];
- /* 6: subb */
- var60 = var59 - var47;
- /* 7: convsbw */
- var61.i = var60;
- /* 8: loadupib */
- var62 =
- (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
- 1) >> 1 : ptr6[i >> 1];
- /* 10: subb */
- var63 = var62 - var48;
- /* 11: convsbw */
- var64.i = var63;
- /* 13: mullw */
- var65.i = (var58.i * var49.i) & 0xffff;
- /* 14: shrsw */
- var66.i = var65.i >> 8;
- /* 15: addssw */
- var67.i = ORC_CLAMP_SW (var58.i + var66.i);
- /* 16: addssw */
- var68.i = ORC_CLAMP_SW (var67.i + var64.i);
- /* 18: mullw */
- var69.i = (var64.i * var50.i) & 0xffff;
- /* 19: shrsw */
- var70.i = var69.i >> 8;
- /* 20: subssw */
- var71.i = ORC_CLAMP_SW (var68.i - var70.i);
- /* 21: addssw */
- var72.i = ORC_CLAMP_SW (var71.i + var64.i);
- /* 22: addssw */
- var73.i = ORC_CLAMP_SW (var67.i + var61.i);
- /* 23: addssw */
- var74.i = ORC_CLAMP_SW (var73.i + var61.i);
- /* 25: mullw */
- var75.i = (var61.i * var51.i) & 0xffff;
- /* 26: shrsw */
- var76.i = var75.i >> 8;
- /* 27: addssw */
- var77.i = ORC_CLAMP_SW (var74.i + var76.i);
- /* 29: mullw */
- var78.i = (var61.i * var52.i) & 0xffff;
- /* 30: shrsw */
- var79.i = var78.i >> 8;
- /* 31: subssw */
- var80.i = ORC_CLAMP_SW (var67.i - var79.i);
- /* 33: mullw */
- var81.i = (var64.i * var53.i) & 0xffff;
- /* 34: shrsw */
- var82.i = var81.i >> 8;
- /* 35: subssw */
- var83.i = ORC_CLAMP_SW (var80.i - var82.i);
- /* 36: subssw */
- var84.i = ORC_CLAMP_SW (var83.i - var82.i);
- /* 37: convssswb */
- var85 = ORC_CLAMP_SB (var72.i);
- /* 38: convssswb */
- var86 = ORC_CLAMP_SB (var84.i);
- /* 39: convssswb */
- var87 = ORC_CLAMP_SB (var77.i);
- /* 40: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var87;
- _dest.x2[1] = var86;
- var88.i = _dest.i;
- }
- /* 42: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var85;
- _dest.x2[1] = var54;
- var89.i = _dest.i;
- }
- /* 43: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var88.i;
- _dest.x2[1] = var89.i;
- var90.i = _dest.i;
- }
- /* 45: addb */
- var56.x4[0] = var90.x4[0] + var55.x4[0];
- var56.x4[1] = var90.x4[1] + var55.x4[1];
- var56.x4[2] = var90.x4[2] + var55.x4[2];
- var56.x4[3] = var90.x4[3] + var55.x4[3];
- /* 46: storel */
- ptr0[i] = var56;
- }
-
-}
-
-void
-cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_I420_BGRA");
- orc_program_set_backup_function (p, _backup_cogorc_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, 0x00000008, "c1");
- orc_program_add_constant (p, 1, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- orc_program_add_constant (p, 4, 0x000000ff, "c8");
- 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, 2, "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, 1, "t10");
- orc_program_add_temporary (p, 1, "t11");
- orc_program_add_temporary (p, 1, "t12");
- orc_program_add_temporary (p, 4, "t13");
-
- orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S3,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_T5,
- 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, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T10, ORC_VAR_T7,
- ORC_VAR_D1, 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, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T12,
- ORC_VAR_T11, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T10,
- ORC_VAR_C8, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T13, ORC_VAR_T1,
- ORC_VAR_T2, ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T13, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_convert_I420_BGRA_avg */
-#ifdef DISABLE_ORC
-void
-cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
- const guint8 * ORC_RESTRICT s5, 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;
- const orc_int8 *ORC_RESTRICT ptr7;
- const orc_int8 *ORC_RESTRICT ptr8;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_int8 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_int8 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 var63;
- orc_union16 var64;
- orc_int8 var65;
- orc_int8 var66;
- orc_int8 var67;
- orc_int8 var68;
- orc_union16 var69;
- orc_union16 var70;
- orc_union16 var71;
- orc_union16 var72;
- orc_union16 var73;
- orc_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_union16 var87;
- orc_union16 var88;
- orc_union16 var89;
- orc_int8 var90;
- orc_int8 var91;
- orc_int8 var92;
- orc_union16 var93;
- orc_union16 var94;
- orc_union32 var95;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
- ptr7 = (orc_int8 *) s4;
- ptr8 = (orc_int8 *) s5;
-
- /* 1: loadpb */
- var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 7: loadpb */
- var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 13: loadpb */
- var49 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 16: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 21: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 28: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 32: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 36: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 45: loadpb */
- var55 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 48: loadpb */
- var56.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var46 = ptr4[i];
- /* 2: subb */
- var58 = var46 - var47;
- /* 3: convsbw */
- var59.i = var58;
- /* 4: loadupib */
- var60 =
- (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
- 1) >> 1 : ptr5[i >> 1];
- /* 5: loadupib */
- var61 =
- (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
- 1) >> 1 : ptr6[i >> 1];
- /* 6: avgub */
- var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
- /* 8: subb */
- var63 = var62 - var48;
- /* 9: convsbw */
- var64.i = var63;
- /* 10: loadupib */
- var65 =
- (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
- 1) >> 1 : ptr7[i >> 1];
- /* 11: loadupib */
- var66 =
- (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
- 1) >> 1 : ptr8[i >> 1];
- /* 12: avgub */
- var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
- /* 14: subb */
- var68 = var67 - var49;
- /* 15: convsbw */
- var69.i = var68;
- /* 17: mullw */
- var70.i = (var59.i * var50.i) & 0xffff;
- /* 18: shrsw */
- var71.i = var70.i >> 8;
- /* 19: addssw */
- var72.i = ORC_CLAMP_SW (var59.i + var71.i);
- /* 20: addssw */
- var73.i = ORC_CLAMP_SW (var72.i + var69.i);
- /* 22: mullw */
- var74.i = (var69.i * var51.i) & 0xffff;
- /* 23: shrsw */
- var75.i = var74.i >> 8;
- /* 24: subssw */
- var76.i = ORC_CLAMP_SW (var73.i - var75.i);
- /* 25: addssw */
- var77.i = ORC_CLAMP_SW (var76.i + var69.i);
- /* 26: addssw */
- var78.i = ORC_CLAMP_SW (var72.i + var64.i);
- /* 27: addssw */
- var79.i = ORC_CLAMP_SW (var78.i + var64.i);
- /* 29: mullw */
- var80.i = (var64.i * var52.i) & 0xffff;
- /* 30: shrsw */
- var81.i = var80.i >> 8;
- /* 31: addssw */
- var82.i = ORC_CLAMP_SW (var79.i + var81.i);
- /* 33: mullw */
- var83.i = (var64.i * var53.i) & 0xffff;
- /* 34: shrsw */
- var84.i = var83.i >> 8;
- /* 35: subssw */
- var85.i = ORC_CLAMP_SW (var72.i - var84.i);
- /* 37: mullw */
- var86.i = (var69.i * var54.i) & 0xffff;
- /* 38: shrsw */
- var87.i = var86.i >> 8;
- /* 39: subssw */
- var88.i = ORC_CLAMP_SW (var85.i - var87.i);
- /* 40: subssw */
- var89.i = ORC_CLAMP_SW (var88.i - var87.i);
- /* 41: convssswb */
- var90 = ORC_CLAMP_SB (var77.i);
- /* 42: convssswb */
- var91 = ORC_CLAMP_SB (var89.i);
- /* 43: convssswb */
- var92 = ORC_CLAMP_SB (var82.i);
- /* 44: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var92;
- _dest.x2[1] = var91;
- var93.i = _dest.i;
- }
- /* 46: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var90;
- _dest.x2[1] = var55;
- var94.i = _dest.i;
- }
- /* 47: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var93.i;
- _dest.x2[1] = var94.i;
- var95.i = _dest.i;
- }
- /* 49: addb */
- var57.x4[0] = var95.x4[0] + var56.x4[0];
- var57.x4[1] = var95.x4[1] + var56.x4[1];
- var57.x4[2] = var95.x4[2] + var56.x4[2];
- var57.x4[3] = var95.x4[3] + var56.x4[3];
- /* 50: storel */
- ptr0[i] = var57;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_convert_I420_BGRA_avg (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;
- const orc_int8 *ORC_RESTRICT ptr7;
- const orc_int8 *ORC_RESTRICT ptr8;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
- orc_union16 var50;
- orc_union16 var51;
- orc_union16 var52;
- orc_union16 var53;
- orc_union16 var54;
- orc_int8 var55;
- orc_union32 var56;
- orc_union32 var57;
- orc_int8 var58;
- orc_union16 var59;
- orc_int8 var60;
- orc_int8 var61;
- orc_int8 var62;
- orc_int8 var63;
- orc_union16 var64;
- orc_int8 var65;
- orc_int8 var66;
- orc_int8 var67;
- orc_int8 var68;
- orc_union16 var69;
- orc_union16 var70;
- orc_union16 var71;
- orc_union16 var72;
- orc_union16 var73;
- orc_union16 var74;
- orc_union16 var75;
- orc_union16 var76;
- orc_union16 var77;
- orc_union16 var78;
- orc_union16 var79;
- orc_union16 var80;
- orc_union16 var81;
- orc_union16 var82;
- orc_union16 var83;
- orc_union16 var84;
- orc_union16 var85;
- orc_union16 var86;
- orc_union16 var87;
- orc_union16 var88;
- orc_union16 var89;
- orc_int8 var90;
- orc_int8 var91;
- orc_int8 var92;
- orc_union16 var93;
- orc_union16 var94;
- orc_union32 var95;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
- ptr7 = (orc_int8 *) ex->arrays[7];
- ptr8 = (orc_int8 *) ex->arrays[8];
-
- /* 1: loadpb */
- var47 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 7: loadpb */
- var48 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 13: loadpb */
- var49 = (int) 0x00000080; /* 128 or 6.32404e-322f */
- /* 16: loadpw */
- var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
- /* 21: loadpw */
- var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
- /* 28: loadpw */
- var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
- /* 32: loadpw */
- var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
- /* 36: loadpw */
- var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
- /* 45: loadpb */
- var55 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 48: loadpb */
- var56.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
- var56.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadb */
- var46 = ptr4[i];
- /* 2: subb */
- var58 = var46 - var47;
- /* 3: convsbw */
- var59.i = var58;
- /* 4: loadupib */
- var60 =
- (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
- 1) >> 1 : ptr5[i >> 1];
- /* 5: loadupib */
- var61 =
- (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
- 1) >> 1 : ptr6[i >> 1];
- /* 6: avgub */
- var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
- /* 8: subb */
- var63 = var62 - var48;
- /* 9: convsbw */
- var64.i = var63;
- /* 10: loadupib */
- var65 =
- (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
- 1) >> 1 : ptr7[i >> 1];
- /* 11: loadupib */
- var66 =
- (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
- 1) >> 1 : ptr8[i >> 1];
- /* 12: avgub */
- var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
- /* 14: subb */
- var68 = var67 - var49;
- /* 15: convsbw */
- var69.i = var68;
- /* 17: mullw */
- var70.i = (var59.i * var50.i) & 0xffff;
- /* 18: shrsw */
- var71.i = var70.i >> 8;
- /* 19: addssw */
- var72.i = ORC_CLAMP_SW (var59.i + var71.i);
- /* 20: addssw */
- var73.i = ORC_CLAMP_SW (var72.i + var69.i);
- /* 22: mullw */
- var74.i = (var69.i * var51.i) & 0xffff;
- /* 23: shrsw */
- var75.i = var74.i >> 8;
- /* 24: subssw */
- var76.i = ORC_CLAMP_SW (var73.i - var75.i);
- /* 25: addssw */
- var77.i = ORC_CLAMP_SW (var76.i + var69.i);
- /* 26: addssw */
- var78.i = ORC_CLAMP_SW (var72.i + var64.i);
- /* 27: addssw */
- var79.i = ORC_CLAMP_SW (var78.i + var64.i);
- /* 29: mullw */
- var80.i = (var64.i * var52.i) & 0xffff;
- /* 30: shrsw */
- var81.i = var80.i >> 8;
- /* 31: addssw */
- var82.i = ORC_CLAMP_SW (var79.i + var81.i);
- /* 33: mullw */
- var83.i = (var64.i * var53.i) & 0xffff;
- /* 34: shrsw */
- var84.i = var83.i >> 8;
- /* 35: subssw */
- var85.i = ORC_CLAMP_SW (var72.i - var84.i);
- /* 37: mullw */
- var86.i = (var69.i * var54.i) & 0xffff;
- /* 38: shrsw */
- var87.i = var86.i >> 8;
- /* 39: subssw */
- var88.i = ORC_CLAMP_SW (var85.i - var87.i);
- /* 40: subssw */
- var89.i = ORC_CLAMP_SW (var88.i - var87.i);
- /* 41: convssswb */
- var90 = ORC_CLAMP_SB (var77.i);
- /* 42: convssswb */
- var91 = ORC_CLAMP_SB (var89.i);
- /* 43: convssswb */
- var92 = ORC_CLAMP_SB (var82.i);
- /* 44: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var92;
- _dest.x2[1] = var91;
- var93.i = _dest.i;
- }
- /* 46: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var90;
- _dest.x2[1] = var55;
- var94.i = _dest.i;
- }
- /* 47: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var93.i;
- _dest.x2[1] = var94.i;
- var95.i = _dest.i;
- }
- /* 49: addb */
- var57.x4[0] = var95.x4[0] + var56.x4[0];
- var57.x4[1] = var95.x4[1] + var56.x4[1];
- var57.x4[2] = var95.x4[2] + var56.x4[2];
- var57.x4[3] = var95.x4[3] + var56.x4[3];
- /* 50: storel */
- ptr0[i] = var57;
- }
-
-}
-
-void
-cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
- const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
- const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
- const guint8 * ORC_RESTRICT s5, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_convert_I420_BGRA_avg");
- orc_program_set_backup_function (p, _backup_cogorc_convert_I420_BGRA_avg);
- 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_source (p, 1, "s4");
- orc_program_add_source (p, 1, "s5");
- orc_program_add_constant (p, 1, 0x00000008, "c1");
- orc_program_add_constant (p, 1, 0x00000080, "c2");
- orc_program_add_constant (p, 4, 0x0000002a, "c3");
- orc_program_add_constant (p, 4, 0x00000067, "c4");
- orc_program_add_constant (p, 4, 0x00000004, "c5");
- orc_program_add_constant (p, 4, 0x00000064, "c6");
- orc_program_add_constant (p, 4, 0x00000068, "c7");
- orc_program_add_constant (p, 4, 0x000000ff, "c8");
- 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_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", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S3,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S4,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S5,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- 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, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T6, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
- ORC_VAR_T1, ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
- 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_T1, ORC_VAR_T13,
- ORC_VAR_T12, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T11,
- ORC_VAR_C8, ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T1,
- ORC_VAR_T2, ORC_VAR_D1);
- orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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->arrays[ORC_VAR_S4] = (void *) s4;
- ex->arrays[ORC_VAR_S5] = (void *) s5;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_I420 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 3: loadpb */
- var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadupdb */
- var39 = ptr5[i >> 1];
- /* 1: loadupdb */
- var40 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var40;
- var41.i = _dest.i;
- }
- /* 4: loadb */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36;
- _dest.x2[1] = var37;
- var42.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var41.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_I420 (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 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 3: loadpb */
- var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadupdb */
- var39 = ptr5[i >> 1];
- /* 1: loadupdb */
- var40 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var40;
- var41.i = _dest.i;
- }
- /* 4: loadb */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36;
- _dest.x2[1] = var37;
- var42.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var41.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_I420");
- orc_program_set_backup_function (p, _backup_cogorc_getline_I420);
- 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_add_temporary (p, 1, "t3");
- orc_program_add_temporary (p, 1, "t4");
-
- orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
- 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_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_YUV9 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_union16 var38;
- orc_union64 var39;
- orc_int8 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union32 var43;
- orc_union32 var44;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 4: 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: loadupdb */
- var40 = ptr5[i >> 1];
- /* 1: loadupdb */
- var41 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var40;
- _dest.x2[1] = var41;
- var42.i = _dest.i;
- }
- /* 3: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var42.i;
- var43.i = _dest.i;
- }
- /* 5: loadw */
- var38 = ptr4[i];
- /* 6: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[0];
- _dest.x2[1] = var38.x2[0];
- var44.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[1];
- _dest.x2[1] = var38.x2[1];
- var44.x2[1] = _dest.i;
- }
- /* 7: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.x2[0];
- _dest.x2[1] = var43.x2[0];
- var39.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.x2[1];
- _dest.x2[1] = var43.x2[1];
- var39.x2[1] = _dest.i;
- }
- /* 8: storeq */
- ptr0[i] = var39;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_YUV9 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- orc_union16 var37;
- orc_union16 var38;
- orc_union64 var39;
- orc_int8 var40;
- orc_int8 var41;
- orc_union16 var42;
- orc_union32 var43;
- orc_union32 var44;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 4: 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: loadupdb */
- var40 = ptr5[i >> 1];
- /* 1: loadupdb */
- var41 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var40;
- _dest.x2[1] = var41;
- var42.i = _dest.i;
- }
- /* 3: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var42.i;
- var43.i = _dest.i;
- }
- /* 5: loadw */
- var38 = ptr4[i];
- /* 6: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[0];
- _dest.x2[1] = var38.x2[0];
- var44.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[1];
- _dest.x2[1] = var38.x2[1];
- var44.x2[1] = _dest.i;
- }
- /* 7: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.x2[0];
- _dest.x2[1] = var43.x2[0];
- var39.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var44.x2[1];
- _dest.x2[1] = var43.x2[1];
- var39.x2[1] = _dest.i;
- }
- /* 8: storeq */
- ptr0[i] = var39;
- }
-
-}
-
-void
-cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_YUV9");
- orc_program_set_backup_function (p, _backup_cogorc_getline_YUV9);
- 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, 4, "t2");
- orc_program_add_temporary (p, 4, "t3");
- orc_program_add_temporary (p, 1, "t4");
- orc_program_add_temporary (p, 1, "t5");
-
- orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
- 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, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union32 var41;
- orc_union32 var42;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union32 *) s1;
-
- /* 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_cogorc_getline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union32 var41;
- orc_union32 var42;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
- /* 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
-cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_getline_YUY2);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union32 var41;
- orc_union32 var42;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union32 *) s1;
-
- /* 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_cogorc_getline_UYVY (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union32 var41;
- orc_union32 var42;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
- /* 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
-cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_getline_UYVY);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_YVYU */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union32 var42;
- orc_union32 var43;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union32 *) s1;
-
- /* 3: 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];
- }
- /* 2: swapw */
- var41.i = ORC_SWAP_W (var39.i);
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[0];
- _dest.x2[1] = var40.x2[0];
- var42.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[1];
- _dest.x2[1] = var40.x2[1];
- var42.x2[1] = _dest.i;
- }
- /* 5: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.i;
- _dest.x2[1] = var41.i;
- var43.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.x2[0];
- _dest.x2[1] = var43.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.x2[1];
- _dest.x2[1] = var43.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_YVYU (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_union16 var41;
- orc_union32 var42;
- orc_union32 var43;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
- /* 3: 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];
- }
- /* 2: swapw */
- var41.i = ORC_SWAP_W (var39.i);
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[0];
- _dest.x2[1] = var40.x2[0];
- var42.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var37.x2[1];
- _dest.x2[1] = var40.x2[1];
- var42.x2[1] = _dest.i;
- }
- /* 5: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.i;
- _dest.x2[1] = var41.i;
- var43.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.x2[0];
- _dest.x2[1] = var43.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.x2[1];
- _dest.x2[1] = var43.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_YVYU");
- orc_program_set_backup_function (p, _backup_cogorc_getline_YVYU);
- 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, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_Y42B */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
-{
- int i;
- 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;
- orc_union16 var38;
- orc_union16 var39;
- orc_union64 var40;
- orc_union16 var41;
- orc_union32 var42;
- orc_union32 var43;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 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_cogorc_getline_Y42B (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
- orc_union16 var38;
- orc_union16 var39;
- orc_union64 var40;
- orc_union16 var41;
- orc_union32 var42;
- orc_union32 var43;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 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
-cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_Y42B");
- orc_program_set_backup_function (p, _backup_cogorc_getline_Y42B);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_Y444 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
-
- /* 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_cogorc_getline_Y444 (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 var34;
- orc_int8 var35;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_union16 var39;
- orc_union16 var40;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
-
- /* 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
-cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_Y444");
- orc_program_set_backup_function (p, _backup_cogorc_getline_Y444);
- 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_Y800 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- orc_int8 var33;
- orc_int8 var34;
- orc_union16 var35;
- orc_union32 var36;
- orc_union16 var37;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
-
- /* 0: loadpb */
- var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 3: loadpw */
- var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
-
- for (i = 0; i < n; i++) {
- /* 1: loadb */
- var34 = ptr4[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var33;
- _dest.x2[1] = var34;
- var37.i = _dest.i;
- }
- /* 4: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var37.i;
- _dest.x2[1] = var35.i;
- var36.i = _dest.i;
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_Y800 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_int8 *ORC_RESTRICT ptr4;
- orc_int8 var33;
- orc_int8 var34;
- orc_union16 var35;
- orc_union32 var36;
- orc_union16 var37;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
-
- /* 0: loadpb */
- var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 3: loadpw */
- var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
-
- for (i = 0; i < n; i++) {
- /* 1: loadb */
- var34 = ptr4[i];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var33;
- _dest.x2[1] = var34;
- var37.i = _dest.i;
- }
- /* 4: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var37.i;
- _dest.x2[1] = var35.i;
- var36.i = _dest.i;
- }
- /* 5: storel */
- ptr0[i] = var36;
- }
-
-}
-
-void
-cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_Y800");
- orc_program_set_backup_function (p, _backup_cogorc_getline_Y800);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 1, "s1");
- orc_program_add_constant (p, 1, 0x000000ff, "c1");
- orc_program_add_constant (p, 2, 0x00008080, "c2");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_Y16 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var34;
- orc_int8 var35;
- orc_union16 var36;
- orc_union32 var37;
- orc_int8 var38;
- orc_union16 var39;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union16 *) s1;
-
- /* 2: loadpb */
- var35 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 4: loadpw */
- var36.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var34 = ptr4[i];
- /* 1: convhwb */
- var38 = ((orc_uint16) var34.i) >> 8;
- /* 3: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var35;
- _dest.x2[1] = var38;
- var39.i = _dest.i;
- }
- /* 5: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var39.i;
- _dest.x2[1] = var36.i;
- var37.i = _dest.i;
- }
- /* 6: storel */
- ptr0[i] = var37;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- orc_union16 var34;
- orc_int8 var35;
- orc_union16 var36;
- orc_union32 var37;
- orc_int8 var38;
- orc_union16 var39;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
-
- /* 2: loadpb */
- var35 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- /* 4: loadpw */
- var36.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var34 = ptr4[i];
- /* 1: convhwb */
- var38 = ((orc_uint16) var34.i) >> 8;
- /* 3: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var35;
- _dest.x2[1] = var38;
- var39.i = _dest.i;
- }
- /* 5: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var39.i;
- _dest.x2[1] = var36.i;
- var37.i = _dest.i;
- }
- /* 6: storel */
- ptr0[i] = var37;
- }
-
-}
-
-void
-cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_Y16");
- orc_program_set_backup_function (p, _backup_cogorc_getline_Y16);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 2, "s1");
- orc_program_add_constant (p, 1, 0x000000ff, "c1");
- orc_program_add_constant (p, 2, 0x00008080, "c2");
- orc_program_add_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 1, "t2");
-
- orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_BGRA */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var32;
- orc_union32 var33;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var32 = ptr4[i];
- /* 1: swapl */
- var33.i = ORC_SWAP_L (var32.i);
- /* 2: storel */
- ptr0[i] = var33;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_BGRA (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var32;
- orc_union32 var33;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var32 = ptr4[i];
- /* 1: swapl */
- var33.i = ORC_SWAP_L (var32.i);
- /* 2: storel */
- ptr0[i] = var33;
- }
-
-}
-
-void
-cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_BGRA");
- orc_program_set_backup_function (p, _backup_cogorc_getline_BGRA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
-
- orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_ABGR */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var47;
- _dest.x2[1] = var44;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var45;
- _dest.x2[1] = var46;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_ABGR (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var47;
- _dest.x2[1] = var44;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var45;
- _dest.x2[1] = var46;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-void
-cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_ABGR");
- orc_program_set_backup_function (p, _backup_cogorc_getline_ABGR);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- 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_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_RGBA */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var46;
- _dest.x2[1] = var45;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44;
- _dest.x2[1] = var47;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_RGBA (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var46;
- _dest.x2[1] = var45;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44;
- _dest.x2[1] = var47;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-void
-cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_RGBA");
- orc_program_set_backup_function (p, _backup_cogorc_getline_RGBA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- 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_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_NV12 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var34;
- orc_union16 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union32 var39;
- orc_union32 var40;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_union16 *) s2;
-
- /* 3: loadpb */
- var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var34 = ptr5[i];
- /* 1: loadw */
- var35 = ptr5[i];
- /* 2: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var34.i;
- _dest.x2[1] = var35.i;
- var39.i = _dest.i;
- }
- /* 4: loadw */
- var37 = ptr4[i];
- /* 5: 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;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var40.x2[0];
- _dest.x2[1] = var39.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var40.x2[1];
- _dest.x2[1] = var39.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_NV12 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var34;
- orc_union16 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union32 var39;
- orc_union32 var40;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_union16 *) ex->arrays[5];
-
- /* 3: loadpb */
- var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var34 = ptr5[i];
- /* 1: loadw */
- var35 = ptr5[i];
- /* 2: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var34.i;
- _dest.x2[1] = var35.i;
- var39.i = _dest.i;
- }
- /* 4: loadw */
- var37 = ptr4[i];
- /* 5: 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;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var40.x2[0];
- _dest.x2[1] = var39.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var40.x2[1];
- _dest.x2[1] = var39.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_NV12");
- orc_program_set_backup_function (p, _backup_cogorc_getline_NV12);
- orc_program_add_destination (p, 8, "d1");
- orc_program_add_source (p, 2, "s1");
- orc_program_add_source (p, 2, "s2");
- orc_program_add_constant (p, 1, 0x000000ff, "c1");
- orc_program_add_temporary (p, 4, "t1");
- orc_program_add_temporary (p, 4, "t2");
-
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_NV21 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, int n)
-{
- int i;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union32 var40;
- orc_union32 var41;
-
- ptr0 = (orc_union64 *) d1;
- ptr4 = (orc_union16 *) s1;
- ptr5 = (orc_union16 *) s2;
-
- /* 3: loadpb */
- var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var35 = ptr5[i];
- /* 1: swapw */
- var39.i = ORC_SWAP_W (var35.i);
- /* 2: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var39.i;
- _dest.x2[1] = var39.i;
- var40.i = _dest.i;
- }
- /* 4: loadw */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36.x2[0];
- _dest.x2[1] = var37.x2[0];
- var41.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var36.x2[1];
- _dest.x2[1] = var37.x2[1];
- var41.x2[1] = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.x2[0];
- _dest.x2[1] = var40.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.x2[1];
- _dest.x2[1] = var40.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_NV21 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union64 *ORC_RESTRICT ptr0;
- const orc_union16 *ORC_RESTRICT ptr4;
- const orc_union16 *ORC_RESTRICT ptr5;
- orc_union16 var35;
- orc_union16 var36;
- orc_union16 var37;
- orc_union64 var38;
- orc_union16 var39;
- orc_union32 var40;
- orc_union32 var41;
-
- ptr0 = (orc_union64 *) ex->arrays[0];
- ptr4 = (orc_union16 *) ex->arrays[4];
- ptr5 = (orc_union16 *) ex->arrays[5];
-
- /* 3: loadpb */
- var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
- var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
-
- for (i = 0; i < n; i++) {
- /* 0: loadw */
- var35 = ptr5[i];
- /* 1: swapw */
- var39.i = ORC_SWAP_W (var35.i);
- /* 2: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var39.i;
- _dest.x2[1] = var39.i;
- var40.i = _dest.i;
- }
- /* 4: loadw */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36.x2[0];
- _dest.x2[1] = var37.x2[0];
- var41.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var36.x2[1];
- _dest.x2[1] = var37.x2[1];
- var41.x2[1] = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.x2[0];
- _dest.x2[1] = var40.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union32 _dest;
- _dest.x2[0] = var41.x2[1];
- _dest.x2[1] = var40.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storeq */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- const guint8 * ORC_RESTRICT s2, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_NV21");
- orc_program_set_backup_function (p, _backup_cogorc_getline_NV21);
- orc_program_add_destination (p, 8, "d1");
- orc_program_add_source (p, 2, "s1");
- orc_program_add_source (p, 2, "s2");
- orc_program_add_constant (p, 1, 0x000000ff, "c1");
- orc_program_add_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 4, "t2");
- orc_program_add_temporary (p, 4, "t3");
-
- orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
- 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, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
- ex->arrays[ORC_VAR_S2] = (void *) s2;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_getline_A420 */
-#ifdef DISABLE_ORC
-void
-cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, 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;
- const orc_int8 *ORC_RESTRICT ptr4;
- const orc_int8 *ORC_RESTRICT ptr5;
- const orc_int8 *ORC_RESTRICT ptr6;
- const orc_int8 *ORC_RESTRICT ptr7;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_int8 *) s1;
- ptr5 = (orc_int8 *) s2;
- ptr6 = (orc_int8 *) s3;
- ptr7 = (orc_int8 *) s4;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadupdb */
- var39 = ptr5[i >> 1];
- /* 1: loadupdb */
- var40 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var40;
- var41.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr7[i];
- /* 4: loadb */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36;
- _dest.x2[1] = var37;
- var42.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var41.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_getline_A420 (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;
- const orc_int8 *ORC_RESTRICT ptr7;
- orc_int8 var36;
- orc_int8 var37;
- orc_union32 var38;
- orc_int8 var39;
- orc_int8 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_int8 *) ex->arrays[4];
- ptr5 = (orc_int8 *) ex->arrays[5];
- ptr6 = (orc_int8 *) ex->arrays[6];
- ptr7 = (orc_int8 *) ex->arrays[7];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadupdb */
- var39 = ptr5[i >> 1];
- /* 1: loadupdb */
- var40 = ptr6[i >> 1];
- /* 2: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var39;
- _dest.x2[1] = var40;
- var41.i = _dest.i;
- }
- /* 3: loadb */
- var36 = ptr7[i];
- /* 4: loadb */
- var37 = ptr4[i];
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var36;
- _dest.x2[1] = var37;
- var42.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var42.i;
- _dest.x2[1] = var41.i;
- var38.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, 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 int p_inited = 0;
- static OrcProgram *p = 0;
- void (*func) (OrcExecutor *);
-
- if (!p_inited) {
- orc_once_mutex_lock ();
- if (!p_inited) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_getline_A420");
- orc_program_set_backup_function (p, _backup_cogorc_getline_A420);
- 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_source (p, 1, "s4");
- 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_S2,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
- 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_S4, 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_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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->arrays[ORC_VAR_S4] = (void *) s4;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_I420 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_int8 *ORC_RESTRICT ptr1;
- orc_int8 *ORC_RESTRICT ptr2;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var38;
- orc_union16 var39;
- orc_int8 var40;
- orc_int8 var41;
- orc_union32 var42;
- orc_union32 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
-
- ptr0 = (orc_union16 *) d1;
- ptr1 = (orc_int8 *) d2;
- ptr2 = (orc_int8 *) d3;
- ptr4 = (orc_union64 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var38 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var38.x2[0];
- var42.x2[0] = _src.x2[1];
- var43.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var38.x2[1];
- var42.x2[1] = _src.x2[1];
- var43.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var43.x2[0];
- var39.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var43.x2[1];
- var39.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var39;
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.x2[0];
- var44.x2[0] = _src.x2[1];
- var45.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var42.x2[1];
- var44.x2[1] = _src.x2[1];
- var45.x2[1] = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var45.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 6: avgub */
- var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
- /* 7: storeb */
- ptr1[i] = var40;
- /* 8: splitwb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var48 = _src.x2[1];
- var49 = _src.x2[0];
- }
- /* 9: avgub */
- var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
- /* 10: storeb */
- ptr2[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_I420 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_int8 *ORC_RESTRICT ptr1;
- orc_int8 *ORC_RESTRICT ptr2;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var38;
- orc_union16 var39;
- orc_int8 var40;
- orc_int8 var41;
- orc_union32 var42;
- orc_union32 var43;
- orc_union16 var44;
- orc_union16 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr1 = (orc_int8 *) ex->arrays[1];
- ptr2 = (orc_int8 *) ex->arrays[2];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var38 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var38.x2[0];
- var42.x2[0] = _src.x2[1];
- var43.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var38.x2[1];
- var42.x2[1] = _src.x2[1];
- var43.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var43.x2[0];
- var39.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var43.x2[1];
- var39.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var39;
- /* 4: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.x2[0];
- var44.x2[0] = _src.x2[1];
- var45.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var42.x2[1];
- var44.x2[1] = _src.x2[1];
- var45.x2[1] = _src.x2[0];
- }
- /* 5: splitwb */
- {
- orc_union16 _src;
- _src.i = var45.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 6: avgub */
- var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
- /* 7: storeb */
- ptr1[i] = var40;
- /* 8: splitwb */
- {
- orc_union16 _src;
- _src.i = var44.i;
- var48 = _src.x2[1];
- var49 = _src.x2[0];
- }
- /* 9: avgub */
- var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
- /* 10: storeb */
- ptr2[i] = var41;
- }
-
-}
-
-void
-cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_I420");
- orc_program_set_backup_function (p, _backup_cogorc_putline_I420);
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "t6");
-
- 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, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_YUY2 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union64 *) s1;
-
-
- 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_cogorc_putline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- 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
-cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_YUY2");
- orc_program_set_backup_function (p, _backup_cogorc_putline_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_YVYU */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- 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;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union64 *) s1;
-
-
- 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: swapw */
- var45.i = ORC_SWAP_W (var43.i);
- /* 6: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44.x2[0];
- _dest.x2[1] = var45.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var44.x2[1];
- _dest.x2[1] = var45.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_YVYU (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
- orc_union16 var45;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- 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: swapw */
- var45.i = ORC_SWAP_W (var43.i);
- /* 6: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44.x2[0];
- _dest.x2[1] = var45.x2[0];
- var38.x2[0] = _dest.i;
- }
- {
- orc_union16 _dest;
- _dest.x2[0] = var44.x2[1];
- _dest.x2[1] = var45.x2[1];
- var38.x2[1] = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var38;
- }
-
-}
-
-void
-cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_YVYU");
- orc_program_set_backup_function (p, _backup_cogorc_putline_YVYU);
- 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, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, 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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_UYVY */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union64 *) s1;
-
-
- 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_cogorc_putline_UYVY (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- 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
-cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_UYVY");
- orc_program_set_backup_function (p, _backup_cogorc_putline_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_Y42B */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_union16 *) d1;
- ptr1 = (orc_int8 *) d2;
- ptr2 = (orc_int8 *) d3;
- ptr4 = (orc_union64 *) s1;
-
-
- 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_cogorc_putline_Y42B (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr1 = (orc_int8 *) ex->arrays[1];
- ptr2 = (orc_int8 *) ex->arrays[2];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- 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
-cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_Y42B");
- orc_program_set_backup_function (p, _backup_cogorc_putline_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_Y444 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- 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;
-
- ptr0 = (orc_int8 *) d1;
- ptr1 = (orc_int8 *) d2;
- ptr2 = (orc_int8 *) d3;
- ptr4 = (orc_union32 *) s1;
-
-
- 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_cogorc_putline_Y444 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- 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;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr1 = (orc_int8 *) ex->arrays[1];
- ptr2 = (orc_int8 *) ex->arrays[2];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- 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
-cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_Y444");
- orc_program_set_backup_function (p, _backup_cogorc_putline_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);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_Y800 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_Y800 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_int8 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var33;
- orc_int8 var34;
- orc_union16 var35;
-
- ptr0 = (orc_int8 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var33 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var33.i;
- var35.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var35.i;
- var34 = _src.x2[1];
- }
- /* 3: storeb */
- ptr0[i] = var34;
- }
-
-}
-
-void
-cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_Y800");
- orc_program_set_backup_function (p, _backup_cogorc_putline_Y800);
- orc_program_add_destination (p, 1, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_temporary (p, 2, "t1");
-
- orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_Y16 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var34;
- orc_union16 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_union16 var38;
-
- ptr0 = (orc_union16 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var34 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var34.i;
- var36.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var36.i;
- var37 = _src.x2[1];
- }
- /* 3: convubw */
- var38.i = (orc_uint8) var37;
- /* 4: shlw */
- var35.i = var38.i << 8;
- /* 5: storew */
- ptr0[i] = var35;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var34;
- orc_union16 var35;
- orc_union16 var36;
- orc_int8 var37;
- orc_union16 var38;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var34 = ptr4[i];
- /* 1: select0lw */
- {
- orc_union32 _src;
- _src.i = var34.i;
- var36.i = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var36.i;
- var37 = _src.x2[1];
- }
- /* 3: convubw */
- var38.i = (orc_uint8) var37;
- /* 4: shlw */
- var35.i = var38.i << 8;
- /* 5: storew */
- ptr0[i] = var35;
- }
-
-}
-
-void
-cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_Y16");
- orc_program_set_backup_function (p, _backup_cogorc_putline_Y16);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_source (p, 4, "s1");
- orc_program_add_constant (p, 4, 0x00000008, "c1");
- orc_program_add_temporary (p, 2, "t1");
- orc_program_add_temporary (p, 1, "t2");
-
- orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_BGRA */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var32;
- orc_union32 var33;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var32 = ptr4[i];
- /* 1: swapl */
- var33.i = ORC_SWAP_L (var32.i);
- /* 2: storel */
- ptr0[i] = var33;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_BGRA (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var32;
- orc_union32 var33;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var32 = ptr4[i];
- /* 1: swapl */
- var33.i = ORC_SWAP_L (var32.i);
- /* 2: storel */
- ptr0[i] = var33;
- }
-
-}
-
-void
-cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_BGRA");
- orc_program_set_backup_function (p, _backup_cogorc_putline_BGRA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
-
- orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_ABGR */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var47;
- _dest.x2[1] = var44;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var45;
- _dest.x2[1] = var46;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_ABGR (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var47;
- _dest.x2[1] = var44;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var45;
- _dest.x2[1] = var46;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var48.i;
- _dest.x2[1] = var49.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-void
-cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_ABGR");
- orc_program_set_backup_function (p, _backup_cogorc_putline_ABGR);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- 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_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_RGBA */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- int n)
-{
- int i;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) d1;
- ptr4 = (orc_union32 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44;
- _dest.x2[1] = var47;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var46;
- _dest.x2[1] = var45;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var49.i;
- _dest.x2[1] = var48.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_RGBA (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union32 *ORC_RESTRICT ptr0;
- const orc_union32 *ORC_RESTRICT ptr4;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_int8 var44;
- orc_int8 var45;
- orc_int8 var46;
- orc_int8 var47;
- orc_union16 var48;
- orc_union16 var49;
-
- ptr0 = (orc_union32 *) ex->arrays[0];
- ptr4 = (orc_union32 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadl */
- var40 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 2: splitwb */
- {
- orc_union16 _src;
- _src.i = var42.i;
- var44 = _src.x2[1];
- var45 = _src.x2[0];
- }
- /* 3: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.i;
- var46 = _src.x2[1];
- var47 = _src.x2[0];
- }
- /* 4: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var44;
- _dest.x2[1] = var47;
- var48.i = _dest.i;
- }
- /* 5: mergebw */
- {
- orc_union16 _dest;
- _dest.x2[0] = var46;
- _dest.x2[1] = var45;
- var49.i = _dest.i;
- }
- /* 6: mergewl */
- {
- orc_union32 _dest;
- _dest.x2[0] = var49.i;
- _dest.x2[1] = var48.i;
- var41.i = _dest.i;
- }
- /* 7: storel */
- ptr0[i] = var41;
- }
-
-}
-
-void
-cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
- 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_RGBA");
- orc_program_set_backup_function (p, _backup_cogorc_putline_RGBA);
- orc_program_add_destination (p, 4, "d1");
- orc_program_add_source (p, 4, "s1");
- 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_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_NV12 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_union16 *ORC_RESTRICT ptr1;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_union32 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union16 *) d1;
- ptr1 = (orc_union16 *) d2;
- ptr4 = (orc_union64 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var36 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var36.x2[0];
- var39.x2[0] = _src.x2[1];
- var40.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var36.x2[1];
- var39.x2[1] = _src.x2[1];
- var40.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var40.x2[0];
- var37.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var40.x2[1];
- var37.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var37;
- /* 4: splitlw */
- {
- orc_union32 _src;
- _src.i = var39.i;
- var41.i = _src.x2[1];
- var42.i = _src.x2[0];
- }
- /* 5: avgub */
- var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
- var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
- /* 6: storew */
- ptr1[i] = var38;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_NV12 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_union16 *ORC_RESTRICT ptr1;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var36;
- orc_union16 var37;
- orc_union16 var38;
- orc_union32 var39;
- orc_union32 var40;
- orc_union16 var41;
- orc_union16 var42;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr1 = (orc_union16 *) ex->arrays[1];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var36 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var36.x2[0];
- var39.x2[0] = _src.x2[1];
- var40.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var36.x2[1];
- var39.x2[1] = _src.x2[1];
- var40.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var40.x2[0];
- var37.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var40.x2[1];
- var37.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var37;
- /* 4: splitlw */
- {
- orc_union32 _src;
- _src.i = var39.i;
- var41.i = _src.x2[1];
- var42.i = _src.x2[0];
- }
- /* 5: avgub */
- var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
- var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
- /* 6: storew */
- ptr1[i] = var38;
- }
-
-}
-
-void
-cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_NV12");
- orc_program_set_backup_function (p, _backup_cogorc_putline_NV12);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_destination (p, 2, "d2");
- 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, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
- ORC_VAR_D1, 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_D2, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_D2] = d2;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_NV21 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_union16 *ORC_RESTRICT ptr1;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var37;
- orc_union16 var38;
- orc_union16 var39;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
-
- ptr0 = (orc_union16 *) d1;
- ptr1 = (orc_union16 *) d2;
- ptr4 = (orc_union64 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var37 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var37.x2[0];
- var40.x2[0] = _src.x2[1];
- var41.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var37.x2[1];
- var40.x2[1] = _src.x2[1];
- var41.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.x2[0];
- var38.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var41.x2[1];
- var38.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var38;
- /* 4: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 5: 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;
- /* 6: swapw */
- var39.i = ORC_SWAP_W (var44.i);
- /* 7: storew */
- ptr1[i] = var39;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_NV21 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_union16 *ORC_RESTRICT ptr1;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var37;
- orc_union16 var38;
- orc_union16 var39;
- orc_union32 var40;
- orc_union32 var41;
- orc_union16 var42;
- orc_union16 var43;
- orc_union16 var44;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr1 = (orc_union16 *) ex->arrays[1];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var37 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var37.x2[0];
- var40.x2[0] = _src.x2[1];
- var41.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var37.x2[1];
- var40.x2[1] = _src.x2[1];
- var41.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var41.x2[0];
- var38.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var41.x2[1];
- var38.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var38;
- /* 4: splitlw */
- {
- orc_union32 _src;
- _src.i = var40.i;
- var42.i = _src.x2[1];
- var43.i = _src.x2[0];
- }
- /* 5: 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;
- /* 6: swapw */
- var39.i = ORC_SWAP_W (var44.i);
- /* 7: storew */
- ptr1[i] = var39;
- }
-
-}
-
-void
-cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_NV21");
- orc_program_set_backup_function (p, _backup_cogorc_putline_NV21);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_destination (p, 2, "d2");
- 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_add_temporary (p, 2, "t5");
-
- 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", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- ex->n = n;
- ex->arrays[ORC_VAR_D1] = d1;
- ex->arrays[ORC_VAR_D2] = d2;
- ex->arrays[ORC_VAR_S1] = (void *) s1;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
-
-
-/* cogorc_putline_A420 */
-#ifdef DISABLE_ORC
-void
-cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
- const guint8 * ORC_RESTRICT s1, int n)
-{
- int i;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_int8 *ORC_RESTRICT ptr1;
- orc_int8 *ORC_RESTRICT ptr2;
- orc_union16 *ORC_RESTRICT ptr3;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_int8 var42;
- orc_union32 var43;
- orc_union32 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
- orc_int8 var50;
-
- ptr0 = (orc_union16 *) d1;
- ptr1 = (orc_int8 *) d2;
- ptr2 = (orc_int8 *) d3;
- ptr3 = (orc_union16 *) d4;
- ptr4 = (orc_union64 *) s1;
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var38 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var38.x2[0];
- var43.x2[0] = _src.x2[1];
- var44.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var38.x2[1];
- var43.x2[1] = _src.x2[1];
- var44.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var44.x2[0];
- var39.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var44.x2[1];
- var39.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var39;
- /* 4: select0wb */
- {
- orc_union16 _src;
- _src.i = var44.x2[0];
- var40.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var44.x2[1];
- var40.x2[1] = _src.x2[0];
- }
- /* 5: storew */
- ptr3[i] = var40;
- /* 6: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.x2[0];
- var45.x2[0] = _src.x2[1];
- var46.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var43.x2[1];
- var45.x2[1] = _src.x2[1];
- var46.x2[1] = _src.x2[0];
- }
- /* 7: splitwb */
- {
- orc_union16 _src;
- _src.i = var46.i;
- var47 = _src.x2[1];
- var48 = _src.x2[0];
- }
- /* 8: avgub */
- var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
- /* 9: storeb */
- ptr1[i] = var41;
- /* 10: splitwb */
- {
- orc_union16 _src;
- _src.i = var45.i;
- var49 = _src.x2[1];
- var50 = _src.x2[0];
- }
- /* 11: avgub */
- var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
- /* 12: storeb */
- ptr2[i] = var42;
- }
-
-}
-
-#else
-static void
-_backup_cogorc_putline_A420 (OrcExecutor * ORC_RESTRICT ex)
-{
- int i;
- int n = ex->n;
- orc_union16 *ORC_RESTRICT ptr0;
- orc_int8 *ORC_RESTRICT ptr1;
- orc_int8 *ORC_RESTRICT ptr2;
- orc_union16 *ORC_RESTRICT ptr3;
- const orc_union64 *ORC_RESTRICT ptr4;
- orc_union64 var38;
- orc_union16 var39;
- orc_union16 var40;
- orc_int8 var41;
- orc_int8 var42;
- orc_union32 var43;
- orc_union32 var44;
- orc_union16 var45;
- orc_union16 var46;
- orc_int8 var47;
- orc_int8 var48;
- orc_int8 var49;
- orc_int8 var50;
-
- ptr0 = (orc_union16 *) ex->arrays[0];
- ptr1 = (orc_int8 *) ex->arrays[1];
- ptr2 = (orc_int8 *) ex->arrays[2];
- ptr3 = (orc_union16 *) ex->arrays[3];
- ptr4 = (orc_union64 *) ex->arrays[4];
-
-
- for (i = 0; i < n; i++) {
- /* 0: loadq */
- var38 = ptr4[i];
- /* 1: splitlw */
- {
- orc_union32 _src;
- _src.i = var38.x2[0];
- var43.x2[0] = _src.x2[1];
- var44.x2[0] = _src.x2[0];
- }
- {
- orc_union32 _src;
- _src.i = var38.x2[1];
- var43.x2[1] = _src.x2[1];
- var44.x2[1] = _src.x2[0];
- }
- /* 2: select1wb */
- {
- orc_union16 _src;
- _src.i = var44.x2[0];
- var39.x2[0] = _src.x2[1];
- }
- {
- orc_union16 _src;
- _src.i = var44.x2[1];
- var39.x2[1] = _src.x2[1];
- }
- /* 3: storew */
- ptr0[i] = var39;
- /* 4: select0wb */
- {
- orc_union16 _src;
- _src.i = var44.x2[0];
- var40.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var44.x2[1];
- var40.x2[1] = _src.x2[0];
- }
- /* 5: storew */
- ptr3[i] = var40;
- /* 6: splitwb */
- {
- orc_union16 _src;
- _src.i = var43.x2[0];
- var45.x2[0] = _src.x2[1];
- var46.x2[0] = _src.x2[0];
- }
- {
- orc_union16 _src;
- _src.i = var43.x2[1];
- var45.x2[1] = _src.x2[1];
- var46.x2[1] = _src.x2[0];
- }
- /* 7: splitwb */
- {
- orc_union16 _src;
- _src.i = var46.i;
- var47 = _src.x2[1];
- var48 = _src.x2[0];
- }
- /* 8: avgub */
- var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
- /* 9: storeb */
- ptr1[i] = var41;
- /* 10: splitwb */
- {
- orc_union16 _src;
- _src.i = var45.i;
- var49 = _src.x2[1];
- var50 = _src.x2[0];
- }
- /* 11: avgub */
- var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
- /* 12: storeb */
- ptr2[i] = var42;
- }
-
-}
-
-void
-cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
- guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
- const guint8 * ORC_RESTRICT s1, 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) {
-
- p = orc_program_new ();
- orc_program_set_name (p, "cogorc_putline_A420");
- orc_program_set_backup_function (p, _backup_cogorc_putline_A420);
- orc_program_add_destination (p, 2, "d1");
- orc_program_add_destination (p, 1, "d2");
- orc_program_add_destination (p, 1, "d3");
- orc_program_add_destination (p, 2, "d4");
- 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_add_temporary (p, 1, "t5");
- orc_program_add_temporary (p, 1, "t6");
-
- 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, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
- ORC_VAR_D1, ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
- orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
- ORC_VAR_D1);
- orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
- ORC_VAR_D1);
-
- orc_program_compile (p);
- }
- p_inited = TRUE;
- orc_once_mutex_unlock ();
- }
- ex->program = p;
-
- 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;
-
- func = p->code_exec;
- func (ex);
-}
-#endif
diff --git a/gst/colorspace/gstcolorspaceorc-dist.h b/gst/colorspace/gstcolorspaceorc-dist.h
deleted file mode 100644
index 2384b52..0000000
--- a/gst/colorspace/gstcolorspaceorc-dist.h
+++ /dev/null
@@ -1,168 +0,0 @@
-
-/* autogenerated from gstcolorspaceorc.orc */
-
-#ifndef _GSTCOLORSPACEORC_H_
-#define _GSTCOLORSPACEORC_H_
-
-#include <glib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-#ifndef _ORC_INTEGER_TYPEDEFS_
-#define _ORC_INTEGER_TYPEDEFS_
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-#include <stdint.h>
-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 <limits.h>
-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
-void cogorc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
-void orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1, int p2, int n);
-void orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1, int p2, int n);
-void orc_matrix3_u8 (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 n);
-void orc_matrix3_100_u8 (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 n);
-void orc_matrix3_100_offset_u8 (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);
-void orc_matrix3_000_u8 (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);
-void orc_pack_123x (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1, int n);
-void orc_pack_x123 (guint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1, int n);
-void cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1, int p2, int n);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
-void cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n);
-void cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
-void cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
-void cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
-void cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
-void cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/gst/colorspace/gstcolorspaceorc.orc b/gst/colorspace/gstcolorspaceorc.orc
deleted file mode 100644
index 086990e..0000000
--- a/gst/colorspace/gstcolorspaceorc.orc
+++ /dev/null
@@ -1,1757 +0,0 @@
-
-.function cogorc_memcpy_2d
-.flags 2d
-.dest 1 d1 guint8
-.source 1 s1 guint8
-
-copyb d1, s1
-
-
-.function cogorc_downsample_horiz_cosite_1tap
-.dest 1 d1 guint8
-.source 2 s1 guint8
-
-select0wb d1, s1
-
-
-.function cogorc_downsample_horiz_cosite_3tap
-.dest 1 d1 guint8
-.source 2 s1 guint8
-.source 2 s2 guint8
-.temp 1 t1
-.temp 1 t2
-.temp 1 t3
-.temp 2 t4
-.temp 2 t5
-.temp 2 t6
-
-copyw t4, s1
-select0wb t1, t4
-select1wb t2, t4
-select0wb t3, s2
-convubw t4, t1
-convubw t5, t2
-convubw t6, t3
-mullw t5, t5, 2
-addw t4, t4, t6
-addw t4, t4, t5
-addw t4, t4, 2
-shrsw t4, t4, 2
-convsuswb d1, t4
-
-
-.function cogorc_downsample_420_jpeg
-.dest 1 d1 guint8
-.source 2 s1 guint8
-.source 2 s2 guint8
-.temp 2 t1
-.temp 1 t2
-.temp 1 t3
-.temp 1 t4
-.temp 1 t5
-
-copyw t1, s1
-select0wb t2, t1
-select1wb t3, t1
-avgub t2, t2, t3
-copyw t1, s2
-select0wb t4, t1
-select1wb t5, t1
-avgub t4, t4, t5
-avgub d1, t2, t4
-
-
-.function cogorc_downsample_vert_halfsite_2tap
-.dest 1 d1 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-
-avgub d1, s1, s2
-
-
-.function cogorc_downsample_vert_cosite_3tap
-.dest 1 d1 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-
-convubw t1, s1
-convubw t2, s2
-convubw t3, s3
-mullw t2, t2, 2
-addw t1, t1, t3
-addw t1, t1, t2
-addw t1, t1, 2
-shrsw t1, t1, 2
-convsuswb d1, t1
-
-
-
-.function cogorc_downsample_vert_halfsite_4tap
-.dest 1 d1 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.source 1 s4 guint8
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-.temp 2 t4
-
-convubw t1, s1
-convubw t2, s2
-convubw t3, s3
-convubw t4, s4
-addw t2, t2, t3
-mullw t2, t2, 26
-addw t1, t1, t4
-mullw t1, t1, 6
-addw t2, t2, t1
-addw t2, t2, 32
-shrsw t2, t2, 6
-convsuswb d1, t2
-
-
-.function cogorc_upsample_horiz_cosite_1tap
-.dest 2 d1 guint8 guint8
-.source 1 s1 guint8
-.temp 1 t1
-
-copyb t1, s1
-mergebw d1, t1, t1
-
-
-.function cogorc_upsample_horiz_cosite
-.dest 2 d1 guint8 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.temp 1 t1
-.temp 1 t2
-
-copyb t1, s1
-avgub t2, t1, s2
-mergebw d1, t1, t2
-
-
-.function cogorc_upsample_vert_avgub
-.dest 1 d1 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-
-avgub d1, s1, s2
-
-
-
-
-.function orc_unpack_yuyv_y
-.dest 1 d1 guint8
-.source 2 s1 guint8
-
-select0wb d1, s1
-
-
-.function orc_unpack_yuyv_u
-.dest 1 d1 guint8
-.source 4 s1 guint8
-.temp 2 t1
-
-select0lw t1, s1
-select1wb d1, t1
-
-
-.function orc_unpack_yuyv_v
-.dest 1 d1 guint8
-.source 4 s1 guint8
-.temp 2 t1
-
-select1lw t1, s1
-select1wb d1, t1
-
-
-.function orc_pack_yuyv
-.dest 4 d1 guint8
-.source 2 s1 guint8 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.temp 1 t1
-.temp 1 t2
-.temp 2 t3
-.temp 2 t4
-.temp 2 t5
-
-copyw t5, s1
-select0wb t1, t5
-select1wb t2, t5
-mergebw t3, t1, s2
-mergebw t4, t2, s3
-mergewl d1, t3, t4
-
-
-.function orc_unpack_uyvy_y
-.dest 1 d1 guint8
-.source 2 s1 guint8
-
-select1wb d1, s1
-
-
-.function orc_unpack_uyvy_u
-.dest 1 d1 guint8
-.source 4 s1 guint8
-.temp 2 t1
-
-select0lw t1, s1
-select0wb d1, t1
-
-
-.function orc_unpack_uyvy_v
-.dest 1 d1 guint8
-.source 4 s1 guint8
-.temp 2 t1
-
-select1lw t1, s1
-select0wb d1, t1
-
-
-.function orc_pack_uyvy
-.dest 4 d1 guint8
-.source 2 s1 guint8 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.temp 1 t1
-.temp 1 t2
-.temp 2 t3
-.temp 2 t4
-.temp 2 t5
-
-copyw t5, s1
-select0wb t1, t5
-select1wb t2, t5
-mergebw t3, s2, t1
-mergebw t4, s3, t2
-mergewl d1, t3, t4
-
-
-.function orc_matrix2_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.param 2 p1
-.param 2 p2
-.param 2 p3
-.temp 2 t1
-.temp 2 t2
-
-convubw t1, s1
-mullw t1, t1, p1
-convubw t2, s2
-mullw t2, t2, p2
-addw t1, t1, t2
-addw t1, t1, p3
-shrsw t1, t1, 6
-convsuswb d1, t1
-
-
-.function orc_matrix2_11_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.param 2 p1
-.param 2 p2
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-.temp 2 t4
-
-convubw t1, s1
-subw t1, t1, 16
-mullw t3, t1, p1
-convubw t2, s2
-subw t2, t2, 128
-mullw t4, t2, p2
-addw t3, t3, t4
-addw t3, t3, 128
-shrsw t3, t3, 8
-addw t3, t3, t1
-addw t3, t3, t2
-convsuswb d1, t3
-
-
-.function orc_matrix2_12_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.param 2 p1
-.param 2 p2
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-.temp 2 t4
-
-convubw t1, s1
-subw t1, t1, 16
-mullw t3, t1, p1
-convubw t2, s2
-subw t2, t2, 128
-mullw t4, t2, p2
-addw t3, t3, t4
-addw t3, t3, 128
-shrsw t3, t3, 8
-addw t3, t3, t1
-addw t3, t3, t2
-addw t3, t3, t2
-convsuswb d1, t3
-
-
-.function orc_matrix3_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.source 1 s3 guint8 guint8
-.param 2 p1
-.param 2 p2
-.param 2 p3
-.param 2 p4
-.temp 2 t1
-.temp 2 t2
-
-convubw t1, s1
-mullw t1, t1, p1
-convubw t2, s2
-mullw t2, t2, p2
-addw t1, t1, t2
-convubw t2, s3
-mullw t2, t2, p3
-addw t1, t1, t2
-addw t1, t1, p4
-shrsw t1, t1, 6
-convsuswb d1, t1
-
-
-.function orc_matrix3_100_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.source 1 s3 guint8 guint8
-.param 2 p1
-.param 2 p2
-.param 2 p3
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-#.temp 2 t4
-
-convubw t1, s1
-subw t1, t1, 16
-mullw t3, t1, p1
-convubw t2, s2
-subw t2, t2, 128
-mullw t2, t2, p2
-addw t3, t3, t2
-convubw t2, s3
-subw t2, t2, 128
-mullw t2, t2, p3
-addw t3, t3, t2
-addw t3, t3, 128
-shrsw t3, t3, 8
-addw t3, t3, t1
-convsuswb d1, t3
-
-
-.function orc_matrix3_100_offset_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.source 1 s3 guint8 guint8
-.param 2 p1
-.param 2 p2
-.param 2 p3
-.param 2 p4
-.param 2 p5
-#.param 2 p6
-.temp 2 t1
-.temp 2 t2
-.temp 2 t3
-#.temp 2 t3
-#.temp 2 t4
-
-convubw t3, s1
-mullw t1, t3, p1
-convubw t2, s2
-mullw t2, t2, p2
-addw t1, t1, t2
-convubw t2, s3
-mullw t2, t2, p3
-addw t1, t1, t2
-addw t1, t1, p4
-shrsw t1, t1, p5
-#addw t1, t1, p6
-addw t1, t1, t3
-convsuswb d1, t1
-
-
-
-.function orc_matrix3_000_u8
-.dest 1 d1 guint8 guint8
-.source 1 s1 guint8 guint8
-.source 1 s2 guint8 guint8
-.source 1 s3 guint8 guint8
-.param 2 p1
-.param 2 p2
-.param 2 p3
-.param 2 p4
-.param 2 p5
-#.param 2 p6
-.temp 2 t1
-.temp 2 t2
-#.temp 2 t3
-#.temp 2 t4
-
-convubw t1, s1
-mullw t1, t1, p1
-convubw t2, s2
-mullw t2, t2, p2
-addw t1, t1, t2
-convubw t2, s3
-mullw t2, t2, p3
-addw t1, t1, t2
-addw t1, t1, p4
-shrsw t1, t1, p5
-#addw t1, t1, p6
-convwb d1, t1
-
-
-
-.function orc_pack_123x
-.dest 4 d1 guint32 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.param 1 p1
-.temp 2 t1
-.temp 2 t2
-
-mergebw t1, s1, s2
-mergebw t2, s3, p1
-mergewl d1, t1, t2
-
-
-.function orc_pack_x123
-.dest 4 d1 guint32 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.source 1 s3 guint8
-.param 1 p1
-.temp 2 t1
-.temp 2 t2
-
-mergebw t1, p1, s1
-mergebw t2, s2, s3
-mergewl d1, t1, t2
-
-
-.function cogorc_combine2_u8
-.dest 1 d1 guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-.param 2 p1
-.param 2 p2
-.temp 2 t1
-.temp 2 t2
-
-convubw t1, s1
-mullw t1, t1, p1
-convubw t2, s2
-mullw t2, t2, p2
-addw t1, t1, t2
-shruw t1, t1, 8
-convsuswb d1, t1
-
-
-.function cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_UYVY_YUY2
-.flags 2d
-.dest 4 yuy2 guint8
-.source 4 uyvy guint8
-
-x2 swapw yuy2, uyvy
-
-
-.function cogorc_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 cogorc_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 cogorc_planar_chroma_422_444
-.flags 2d
-.dest 2 d1 guint8
-.source 1 s guint8
-.temp 2 t
-
-splatbw t, s
-storew d1, t
-
-
-.function cogorc_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 cogorc_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 cogorc_planar_chroma_422_420
-.flags 2d
-.dest 1 d guint8
-.source 1 s1 guint8
-.source 1 s2 guint8
-
-avgub d, s1, s2
-
-
-.function cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_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 cogorc_convert_AYUV_ARGB
-.flags 2d
-.dest 4 argb guint8
-.source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
-.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 c8 8
-
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, a, r
-mergebw t2, g, b
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
-
-.function cogorc_convert_AYUV_BGRA
-.flags 2d
-.dest 4 argb guint8
-.source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
-.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 c8 8
-
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, b, g
-mergebw t2, r, a
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
-
-
-.function cogorc_convert_AYUV_ABGR
-.flags 2d
-.dest 4 argb guint8
-.source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
-.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 c8 8
-
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, a, b
-mergebw t2, g, r
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
-
-.function cogorc_convert_AYUV_RGBA
-.flags 2d
-.dest 4 argb guint8
-.source 4 ayuv guint8
-.temp 2 t1
-.temp 2 t2
-.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 c8 8
-
-x4 subb x, ayuv, 128
-splitlw t1, t2, x
-splitwb y, a, t2
-splitwb v, u, t1
-convsbw wy, y
-convsbw wu, u
-convsbw wv, v
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, r, g
-mergebw t2, b, a
-mergewl x, t1, t2
-x4 addb argb, x, 128
-
-
-
-.function cogorc_convert_I420_BGRA
-.dest 4 argb guint8
-.source 1 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.temp 2 t1
-.temp 2 t2
-.temp 1 t3
-.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 c8 8
-.const 1 c128 128
-
-subb t3, y, c128
-convsbw wy, t3
-loadupib t3, u
-subb t3, t3, c128
-convsbw wu, t3
-loadupib t3, v
-subb t3, t3, c128
-convsbw wv, t3
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, b, g
-mergebw t2, r, 255
-mergewl x, t1, t2
-x4 addb argb, x, c128
-
-
-
-.function cogorc_convert_I420_BGRA_avg
-.dest 4 argb guint8
-.source 1 y guint8
-.source 1 u1 guint8
-.source 1 u2 guint8
-.source 1 v1 guint8
-.source 1 v2 guint8
-.temp 2 t1
-.temp 2 t2
-.temp 1 t3
-.temp 1 t4
-.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 c8 8
-.const 1 c128 128
-
-subb t3, y, c128
-convsbw wy, t3
-loadupib t3, u1
-loadupib t4, u2
-avgub t3, t3, t4
-subb t3, t3, c128
-convsbw wu, t3
-loadupib t3, v1
-loadupib t4, v2
-avgub t3, t3, t4
-subb t3, t3, c128
-convsbw wv, t3
-
-mullw t1, wy, 42
-shrsw t1, t1, c8
-addssw wy, wy, t1
-
-addssw wr, wy, wv
-mullw t1, wv, 103
-shrsw t1, t1, c8
-subssw wr, wr, t1
-addssw wr, wr, wv
-
-addssw wb, wy, wu
-addssw wb, wb, wu
-mullw t1, wu, 4
-shrsw t1, t1, c8
-addssw wb, wb, t1
-
-mullw t1, wu, 100
-shrsw t1, t1, c8
-subssw wg, wy, t1
-mullw t1, wv, 104
-shrsw t1, t1, c8
-subssw wg, wg, t1
-subssw wg, wg, t1
-
-convssswb r, wr
-convssswb g, wg
-convssswb b, wb
-
-mergebw t1, b, g
-mergebw t2, r, 255
-mergewl x, t1, t2
-x4 addb argb, x, c128
-
-
-
-.function cogorc_getline_I420
-.dest 4 d guint8
-.source 1 y 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, y
-mergewl d, ay, uv
-
-.function cogorc_getline_YUV9
-.dest 8 d guint8
-.source 2 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.const 1 c255 255
-.temp 2 tuv
-.temp 4 ay
-.temp 4 uv
-.temp 1 tu
-.temp 1 tv
-
-loadupdb tu, u
-loadupdb tv, v
-mergebw tuv, tu, tv
-mergewl uv, tuv, tuv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uv
-
-.function cogorc_getline_YUY2
-.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 cogorc_getline_UYVY
-.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 cogorc_getline_YVYU
-.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 uv, yy, uyvy
-swapw uv, uv
-x2 mergebw ayay, c255, yy
-mergewl uvuv, uv, uv
-x2 mergewl ayuv, ayay, uvuv
-
-
-.function cogorc_getline_Y42B
-.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 cogorc_getline_Y444
-.dest 4 ayuv guint8
-.source 1 y 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, y
-mergewl ayuv, ay, uv
-
-
-.function cogorc_getline_Y800
-.dest 4 ayuv guint8
-.source 1 y guint8
-.const 1 c255 255
-.const 2 c0x8080 0x8080
-.temp 2 ay
-
-mergebw ay, c255, y
-mergewl ayuv, ay, c0x8080
-
-.function cogorc_getline_Y16
-.dest 4 ayuv guint8
-.source 2 y guint8
-.const 1 c255 255
-.const 2 c0x8080 0x8080
-.temp 2 ay
-.temp 1 yb
-
-convhwb yb, y
-mergebw ay, c255, yb
-mergewl ayuv, ay, c0x8080
-
-.function cogorc_getline_BGRA
-.dest 4 argb guint8
-.source 4 bgra guint8
-
-swapl argb, bgra
-
-
-.function cogorc_getline_ABGR
-.dest 4 argb guint8
-.source 4 abgr guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 gr
-.temp 2 ab
-.temp 2 ar
-.temp 2 gb
-
-splitlw gr, ab, abgr
-splitwb r, g, gr
-splitwb b, a, ab
-mergebw ar, a, r
-mergebw gb, g, b
-mergewl argb, ar, gb
-
-
-.function cogorc_getline_RGBA
-.dest 4 argb guint8
-.source 4 rgba guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 rg
-.temp 2 ba
-.temp 2 ar
-.temp 2 gb
-
-splitlw ba, rg, rgba
-splitwb g, r, rg
-splitwb a, b, ba
-mergebw ar, a, r
-mergebw gb, g, b
-mergewl argb, ar, gb
-
-
-.function cogorc_getline_NV12
-.dest 8 d guint8
-.source 2 y guint8
-.source 2 uv guint8
-.const 1 c255 255
-.temp 4 ay
-.temp 4 uvuv
-
-mergewl uvuv, uv, uv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uvuv
-
-
-.function cogorc_getline_NV21
-.dest 8 d guint8
-.source 2 y guint8
-.source 2 vu guint8
-.const 1 c255 255
-.temp 2 uv
-.temp 4 ay
-.temp 4 uvuv
-
-swapw uv, vu
-mergewl uvuv, uv, uv
-x2 mergebw ay, c255, y
-x2 mergewl d, ay, uvuv
-
-.function cogorc_getline_A420
-.dest 4 d guint8
-.source 1 y guint8
-.source 1 u guint8
-.source 1 v guint8
-.source 1 a guint8
-.temp 2 uv
-.temp 2 ay
-.temp 1 tu
-.temp 1 tv
-
-loadupdb tu, u
-loadupdb tv, v
-mergebw uv, tu, tv
-mergebw ay, a, y
-mergewl d, ay, uv
-
-.function cogorc_putline_I420
-.dest 2 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uv
-.temp 2 uu
-.temp 2 vv
-.temp 1 t1
-.temp 1 t2
-
-x2 splitlw uv, ay, ayuv
-x2 select1wb y, ay
-x2 splitwb vv, uu, uv
-splitwb t1, t2, uu
-avgub u, t1, t2
-splitwb t1, t2, vv
-avgub v, t1, t2
-
-
-
-.function cogorc_putline_YUY2
-.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 cogorc_putline_YVYU
-.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
-swapw uv1, uv1
-x2 mergebw yuy2, yy, uv1
-
-
-.function cogorc_putline_UYVY
-.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 cogorc_putline_Y42B
-.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 cogorc_putline_Y444
-.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 cogorc_putline_Y800
-.dest 1 y guint8
-.source 4 ayuv guint8
-.temp 2 ay
-
-select0lw ay, ayuv
-select1wb y, ay
-
-.function cogorc_putline_Y16
-.dest 2 y guint8
-.source 4 ayuv guint8
-.temp 2 ay
-.temp 1 yb
-
-select0lw ay, ayuv
-select1wb yb, ay
-convubw ay, yb
-shlw y, ay, 8
-
-.function cogorc_putline_BGRA
-.dest 4 bgra guint8
-.source 4 argb guint8
-
-swapl bgra, argb
-
-
-.function cogorc_putline_ABGR
-.dest 4 abgr guint8
-.source 4 argb guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 gr
-.temp 2 ab
-.temp 2 ar
-.temp 2 gb
-
-splitlw gb, ar, argb
-splitwb b, g, gb
-splitwb r, a, ar
-mergebw ab, a, b
-mergebw gr, g, r
-mergewl abgr, ab, gr
-
-
-.function cogorc_putline_RGBA
-.dest 4 rgba guint8
-.source 4 argb guint8
-.temp 1 a
-.temp 1 r
-.temp 1 g
-.temp 1 b
-.temp 2 rg
-.temp 2 ba
-.temp 2 ar
-.temp 2 gb
-
-splitlw gb, ar, argb
-splitwb b, g, gb
-splitwb r, a, ar
-mergebw ba, b, a
-mergebw rg, r, g
-mergewl rgba, rg, ba
-
-
-.function cogorc_putline_NV12
-.dest 2 y guint8
-.dest 2 uv guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uvuv
-.temp 2 uv1
-.temp 2 uv2
-
-x2 splitlw uvuv, ay, ayuv
-x2 select1wb y, ay
-splitlw uv1, uv2, uvuv
-x2 avgub uv, uv1, uv2
-
-
-.function cogorc_putline_NV21
-.dest 2 y guint8
-.dest 2 vu guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uvuv
-.temp 2 uv1
-.temp 2 uv2
-.temp 2 uv
-
-x2 splitlw uvuv, ay, ayuv
-x2 select1wb y, ay
-splitlw uv1, uv2, uvuv
-x2 avgub uv, uv1, uv2
-swapw vu, uv
-
-.function cogorc_putline_A420
-.dest 2 y guint8
-.dest 1 u guint8
-.dest 1 v guint8
-.dest 2 a guint8
-.source 8 ayuv guint8
-.temp 4 ay
-.temp 4 uv
-.temp 2 uu
-.temp 2 vv
-.temp 1 t1
-.temp 1 t2
-
-x2 splitlw uv, ay, ayuv
-x2 select1wb y, ay
-x2 select0wb a, ay
-x2 splitwb vv, uu, uv
-splitwb t1, t2, uu
-avgub u, t1, t2
-splitwb t1, t2, vv
-avgub v, t1, t2
diff --git a/gst/dataurisrc/gstdataurisrc.c b/gst/dataurisrc/gstdataurisrc.c
index 446ca84..c4be942 100644
--- a/gst/dataurisrc/gstdataurisrc.c
+++ b/gst/dataurisrc/gstdataurisrc.c
@@ -61,56 +61,32 @@
static void gst_data_uri_src_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec);
-static GstCaps *gst_data_uri_src_get_caps (GstBaseSrc * src);
+static GstCaps *gst_data_uri_src_get_caps (GstBaseSrc * src, GstCaps * filter);
static gboolean gst_data_uri_src_get_size (GstBaseSrc * src, guint64 * size);
static gboolean gst_data_uri_src_is_seekable (GstBaseSrc * src);
static GstFlowReturn gst_data_uri_src_create (GstBaseSrc * src, guint64 offset,
guint size, GstBuffer ** buf);
-static gboolean gst_data_uri_src_check_get_range (GstBaseSrc * src);
static gboolean gst_data_uri_src_start (GstBaseSrc * src);
static void gst_data_uri_src_handler_init (gpointer g_iface,
gpointer iface_data);
-static GstURIType gst_data_uri_src_get_uri_type (void);
-static gchar **gst_data_uri_src_get_protocols (void);
+static GstURIType gst_data_uri_src_get_uri_type (GType type);
+static gchar **gst_data_uri_src_get_protocols (GType type);
static const gchar *gst_data_uri_src_get_uri (GstURIHandler * handler);
static gboolean gst_data_uri_src_set_uri (GstURIHandler * handler,
const gchar * uri);
-static void
-_do_init (GType gtype)
-{
- static const GInterfaceInfo urihandler_info = {
- gst_data_uri_src_handler_init,
- 0, 0
- };
- GST_DEBUG_CATEGORY_INIT (data_uri_src_debug, "dataurisrc", 0,
- "data: URI source");
- g_type_add_interface_static (gtype, GST_TYPE_URI_HANDLER, &urihandler_info);
-}
-
-GST_BOILERPLATE_FULL (GstDataURISrc, gst_data_uri_src, GstBaseSrc,
- GST_TYPE_BASE_SRC, _do_init);
-
-static void
-gst_data_uri_src_base_init (gpointer klass)
-{
- GstElementClass *element_class = (GstElementClass *) (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_set_details_simple (element_class,
- "data: URI source element", "Source", "Handles data: uris",
- "Philippe Normand <pnormand@igalia.com>, "
- "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-
-}
+#define gst_data_uri_src_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstDataURISrc, gst_data_uri_src, GST_TYPE_BASE_SRC,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER,
+ gst_data_uri_src_handler_init));
static void
gst_data_uri_src_class_init (GstDataURISrcClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *element_class = (GstElementClass *) klass;
GstBaseSrcClass *basesrc_class = (GstBaseSrcClass *) klass;
gobject_class->finalize = gst_data_uri_src_finalize;
@@ -123,19 +99,26 @@
"URI that should be used",
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template));
+ gst_element_class_set_details_simple (element_class,
+ "data: URI source element", "Source", "Handles data: uris",
+ "Philippe Normand <pnormand@igalia.com>, "
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+
+ GST_DEBUG_CATEGORY_INIT (data_uri_src_debug, "dataurisrc", 0,
+ "data: URI source");
+
basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_data_uri_src_get_caps);
basesrc_class->get_size = GST_DEBUG_FUNCPTR (gst_data_uri_src_get_size);
basesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_data_uri_src_is_seekable);
basesrc_class->create = GST_DEBUG_FUNCPTR (gst_data_uri_src_create);
- basesrc_class->check_get_range =
- GST_DEBUG_FUNCPTR (gst_data_uri_src_check_get_range);
basesrc_class->start = GST_DEBUG_FUNCPTR (gst_data_uri_src_start);
}
static void
-gst_data_uri_src_init (GstDataURISrc * src, GstDataURISrcClass * g_class)
+gst_data_uri_src_init (GstDataURISrc * src)
{
- gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_BYTES);
}
static void
@@ -188,16 +171,16 @@
}
static GstCaps *
-gst_data_uri_src_get_caps (GstBaseSrc * basesrc)
+gst_data_uri_src_get_caps (GstBaseSrc * basesrc, GstCaps * filter)
{
GstDataURISrc *src = GST_DATA_URI_SRC (basesrc);
GstCaps *caps;
GST_OBJECT_LOCK (src);
- if (!src->buffer || !GST_BUFFER_CAPS (src->buffer))
- caps = gst_caps_new_empty ();
+ if (gst_pad_has_current_caps (GST_BASE_SRC_PAD (basesrc)))
+ caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (basesrc));
else
- caps = gst_buffer_get_caps (src->buffer);
+ caps = gst_caps_new_any ();
GST_OBJECT_UNLOCK (src);
return caps;
@@ -215,7 +198,7 @@
*size = -1;
} else {
ret = TRUE;
- *size = GST_BUFFER_SIZE (src->buffer);
+ *size = gst_buffer_get_size (src->buffer);
}
GST_OBJECT_UNLOCK (src);
@@ -242,14 +225,13 @@
/* This is only correct because GstBaseSrc already clips size for us to be no
* larger than the max. available size if a segment at the end is requested */
- if (offset + size > GST_BUFFER_SIZE (src->buffer)) {
+ if (offset + size > gst_buffer_get_size (src->buffer)) {
ret = GST_FLOW_UNEXPECTED;
} else {
ret = GST_FLOW_OK;
- *buf = gst_buffer_create_sub (src->buffer, offset, size);
- gst_buffer_set_caps (*buf, GST_BUFFER_CAPS (src->buffer));
+ *buf =
+ gst_buffer_copy_region (src->buffer, GST_BUFFER_COPY_ALL, offset, size);
}
-
GST_OBJECT_UNLOCK (src);
return ret;
@@ -264,12 +246,6 @@
}
static gboolean
-gst_data_uri_src_check_get_range (GstBaseSrc * basesrc)
-{
- return TRUE;
-}
-
-static gboolean
gst_data_uri_src_start (GstBaseSrc * basesrc)
{
GstDataURISrc *src = GST_DATA_URI_SRC (basesrc);
@@ -294,25 +270,14 @@
}
}
-static void
-gst_data_uri_src_handler_init (gpointer g_iface, gpointer iface_data)
-{
- GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
-
- iface->get_type = gst_data_uri_src_get_uri_type;
- iface->get_protocols = gst_data_uri_src_get_protocols;
- iface->get_uri = gst_data_uri_src_get_uri;
- iface->set_uri = gst_data_uri_src_set_uri;
-}
-
static GstURIType
-gst_data_uri_src_get_uri_type (void)
+gst_data_uri_src_get_uri_type (GType type)
{
return GST_URI_SRC;
}
static gchar **
-gst_data_uri_src_get_protocols (void)
+gst_data_uri_src_get_protocols (GType type)
{
static gchar *protocols[] = { (char *) "data", 0 };
@@ -337,12 +302,16 @@
const gchar *data_start;
const gchar *orig_uri = uri;
GstCaps *caps;
+ GstBuffer *buffer;
gboolean base64 = FALSE;
gchar *charset = NULL;
+ gpointer bdata;
+ gsize bsize;
GST_OBJECT_LOCK (src);
if (GST_STATE (src) >= GST_STATE_PAUSED)
goto wrong_state;
+ GST_OBJECT_UNLOCK (src);
/* uri must be an URI as defined in RFC 2397
* data:[<mediatype>][;base64],<data>
@@ -392,74 +361,63 @@
/* Skip comma */
data_start += 1;
if (base64) {
- gsize bsize;
-
- src->buffer = gst_buffer_new ();
- GST_BUFFER_DATA (src->buffer) =
- (guint8 *) g_base64_decode (data_start, &bsize);
- GST_BUFFER_MALLOCDATA (src->buffer) = GST_BUFFER_DATA (src->buffer);
- GST_BUFFER_SIZE (src->buffer) = bsize;
+ bdata = g_base64_decode (data_start, &bsize);
} else {
- gchar *data;
-
/* URI encoded, i.e. "percent" encoding */
- data = g_uri_unescape_string (data_start, NULL);
- if (data == NULL)
+ bdata = g_uri_unescape_string (data_start, NULL);
+ if (bdata == NULL)
goto invalid_uri_encoded_data;
-
- src->buffer = gst_buffer_new ();
- GST_BUFFER_DATA (src->buffer) = (guint8 *) data;
- GST_BUFFER_MALLOCDATA (src->buffer) = GST_BUFFER_DATA (src->buffer);
- GST_BUFFER_SIZE (src->buffer) = strlen (data) + 1;
+ bsize = strlen (bdata) + 1;
}
-
/* Convert to UTF8 */
if (strcmp ("text/plain", mimetype) == 0 &&
charset && g_ascii_strcasecmp ("US-ASCII", charset) != 0
&& g_ascii_strcasecmp ("UTF-8", charset) != 0) {
gsize read;
gsize written;
- gchar *old_data = (gchar *) GST_BUFFER_DATA (src->buffer);
- gchar *data;
+ gpointer data;
data =
- g_convert_with_fallback (old_data, -1, "UTF-8", charset, (char *) "*",
+ g_convert_with_fallback (bdata, -1, "UTF-8", charset, (char *) "*",
&read, &written, NULL);
- g_free (old_data);
- GST_BUFFER_DATA (src->buffer) = GST_BUFFER_MALLOCDATA (src->buffer) =
- (guint8 *) data;
- GST_BUFFER_SIZE (src->buffer) = written;
- }
+ g_free (bdata);
- caps = gst_type_find_helper_for_buffer (GST_OBJECT (src), src->buffer, NULL);
+ bdata = data;
+ bsize = written;
+ }
+ buffer = gst_buffer_new_wrapped (bdata, bsize);
+
+ caps = gst_type_find_helper_for_buffer (GST_OBJECT (src), buffer, NULL);
if (!caps)
- caps = gst_caps_new_simple (mimetype, NULL);
- gst_buffer_set_caps (src->buffer, caps);
+ caps = gst_caps_new_empty_simple (mimetype);
+ gst_base_src_set_caps (GST_BASE_SRC_CAST (src), caps);
gst_caps_unref (caps);
+ GST_OBJECT_LOCK (src);
+ gst_buffer_replace (&src->buffer, buffer);
g_free (src->uri);
src->uri = g_strdup (orig_uri);
+ GST_OBJECT_UNLOCK (src);
ret = TRUE;
out:
- GST_OBJECT_UNLOCK (src);
-
g_free (mimetype);
g_free (charset);
return ret;
-invalid_uri:
- {
- GST_WARNING_OBJECT (src, "invalid URI '%s'", uri);
- goto out;
- }
wrong_state:
{
GST_WARNING_OBJECT (src, "Can't set URI in %s state",
gst_element_state_get_name (GST_STATE (src)));
+ GST_OBJECT_UNLOCK (src);
+ goto out;
+ }
+invalid_uri:
+ {
+ GST_WARNING_OBJECT (src, "invalid URI '%s'", uri);
goto out;
}
invalid_uri_encoded_data:
@@ -469,6 +427,17 @@
}
}
+static void
+gst_data_uri_src_handler_init (gpointer g_iface, gpointer iface_data)
+{
+ GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
+
+ iface->get_type = gst_data_uri_src_get_uri_type;
+ iface->get_protocols = gst_data_uri_src_get_protocols;
+ iface->get_uri = gst_data_uri_src_get_uri;
+ iface->set_uri = gst_data_uri_src_set_uri;
+}
+
static gboolean
plugin_init (GstPlugin * plugin)
{
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c
index add39c4..7641f38 100644
--- a/gst/dvbsuboverlay/gstdvbsuboverlay.c
+++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c
@@ -27,8 +27,8 @@
* <title>Example launch line</title>
* |[ FIXME
* gst-launch -v filesrc location=/path/to/ts ! mpegtsdemux name=d ! queue ! mp3parse ! mad ! audioconvert ! autoaudiosink \
- * d. ! queue ! mpeg2dec ! ffmpegcolorspace ! r. \
- * d. ! queue ! "subpicture/x-dvb" ! dvbsuboverlay name=r ! ffmpegcolorspace ! autovideosink
+ * d. ! queue ! mpeg2dec ! videoconvert ! r. \
+ * d. ! queue ! "subpicture/x-dvb" ! dvbsuboverlay name=r ! videoconvert ! autovideosink
* ]| This pipeline demuxes a MPEG-TS file with MPEG2 video, MP3 audio and embedded DVB subtitles and renders the subtitles on top of the video.
* </refsect2>
*/
@@ -64,14 +64,14 @@
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("I420"))
);
static GstStaticPadTemplate video_sink_factory =
GST_STATIC_PAD_TEMPLATE ("video_sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("I420"))
);
static GstStaticPadTemplate text_sink_factory =
@@ -91,12 +91,10 @@
static GstStateChangeReturn gst_dvbsub_overlay_change_state (GstElement *
element, GstStateChange transition);
-GST_BOILERPLATE (GstDVBSubOverlay, gst_dvbsub_overlay, GstElement,
- GST_TYPE_ELEMENT);
+#define gst_dvbsub_overlay_parent_class parent_class
+G_DEFINE_TYPE (GstDVBSubOverlay, gst_dvbsub_overlay, GST_TYPE_ELEMENT);
-static GstCaps *gst_dvbsub_overlay_getcaps (GstPad * pad);
-
-static gboolean gst_dvbsub_overlay_setcaps_video (GstPad * pad, GstCaps * caps);
+static GstCaps *gst_dvbsub_overlay_getcaps (GstPad * pad, GstCaps * filter);
static GstFlowReturn gst_dvbsub_overlay_chain_video (GstPad * pad,
GstBuffer * buf);
@@ -110,29 +108,8 @@
static void new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs,
gpointer user_data);
-static GstFlowReturn gst_dvbsub_overlay_bufferalloc_video (GstPad * pad,
- guint64 offset, guint size, GstCaps * caps, GstBuffer ** buffer);
-
static gboolean gst_dvbsub_overlay_query_src (GstPad * pad, GstQuery * query);
-static void
-gst_dvbsub_overlay_base_init (gpointer gclass)
-{
- GstElementClass *element_class = (GstElementClass *) gclass;
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&text_sink_factory));
-
- gst_element_class_set_details_simple (element_class,
- "DVB Subtitles Overlay",
- "Mixer/Video/Overlay/Subtitle",
- "Renders DVB subtitles", "Mart Raudsepp <mart.raudsepp@collabora.co.uk>");
-}
-
/* initialize the plugin's class */
static void
gst_dvbsub_overlay_class_init (GstDVBSubOverlayClass * klass)
@@ -156,6 +133,18 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&video_sink_factory));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&text_sink_factory));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "DVB Subtitles Overlay",
+ "Mixer/Video/Overlay/Subtitle",
+ "Renders DVB subtitles", "Mart Raudsepp <mart.raudsepp@collabora.co.uk>");
}
static void
@@ -186,8 +175,7 @@
}
static void
-gst_dvbsub_overlay_init (GstDVBSubOverlay * render,
- GstDVBSubOverlayClass * gclass)
+gst_dvbsub_overlay_init (GstDVBSubOverlay * render)
{
GST_DEBUG_OBJECT (render, "init");
@@ -197,9 +185,6 @@
render->text_sinkpad =
gst_pad_new_from_static_template (&text_sink_factory, "text_sink");
- gst_pad_set_setcaps_function (render->video_sinkpad,
- GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_setcaps_video));
-
gst_pad_set_getcaps_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_getcaps));
gst_pad_set_getcaps_function (render->video_sinkpad,
@@ -217,9 +202,6 @@
gst_pad_set_event_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_event_src));
- gst_pad_set_bufferalloc_function (render->video_sinkpad,
- GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_bufferalloc_video));
-
gst_pad_set_query_function (render->srcpad,
GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_query_src));
@@ -227,8 +209,7 @@
gst_element_add_pad (GST_ELEMENT (render), render->video_sinkpad);
gst_element_add_pad (GST_ELEMENT (render), render->text_sinkpad);
- render->width = 0;
- render->height = 0;
+ gst_video_info_init (&render->info);
render->current_subtitle = NULL;
render->pending_subtitles = g_queue_new ();
@@ -332,7 +313,7 @@
gst_dvbsub_overlay_flush_subtitles (render);
gst_segment_init (&render->video_segment, GST_FORMAT_TIME);
gst_segment_init (&render->subtitle_segment, GST_FORMAT_TIME);
- render->format = GST_VIDEO_FORMAT_UNKNOWN;
+ gst_video_info_init (&render->info);
break;
case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
case GST_STATE_CHANGE_READY_TO_NULL:
@@ -399,7 +380,7 @@
}
static GstCaps *
-gst_dvbsub_overlay_getcaps (GstPad * pad)
+gst_dvbsub_overlay_getcaps (GstPad * pad, GstCaps * filter)
{
GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad));
GstPad *otherpad;
@@ -411,7 +392,7 @@
otherpad = render->srcpad;
/* we can do what the peer can */
- caps = gst_pad_peer_get_caps (otherpad);
+ caps = gst_pad_peer_get_caps (otherpad, filter);
if (caps) {
GstCaps *temp;
const GstCaps *templ;
@@ -433,7 +414,8 @@
}
static void
-blit_i420 (GstDVBSubOverlay * overlay, DVBSubtitles * subs, GstBuffer * buffer)
+blit_i420 (GstDVBSubOverlay * overlay, DVBSubtitles * subs,
+ GstVideoFrame * frame)
{
guint counter;
DVBSubtitleRect *sub_region;
@@ -446,28 +428,24 @@
guint8 *dst_y, *dst_y2, *dst_u, *dst_v;
gint x, y;
gint w2;
- gint width = overlay->width;
- gint height = overlay->height;
+ gint width;
+ gint height;
gint src_stride;
- gint y_offset, y_stride;
- gint u_offset, u_stride;
- gint v_offset, v_stride;
+ guint8 *y_data, *u_data, *v_data;
+ gint y_stride, u_stride, v_stride;
gint scale = 0;
gint scale_x = 0, scale_y = 0; /* 16.16 fixed point */
- y_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 0, width,
- height);
- u_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 1, width,
- height);
- v_offset =
- gst_video_format_get_component_offset (GST_VIDEO_FORMAT_I420, 2, width,
- height);
+ width = GST_VIDEO_FRAME_WIDTH (frame);
+ height = GST_VIDEO_FRAME_HEIGHT (frame);
- y_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 0, width);
- u_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 1, width);
- v_stride = gst_video_format_get_row_stride (GST_VIDEO_FORMAT_I420, 2, width);
+ y_data = GST_VIDEO_FRAME_COMP_DATA (frame, 0);
+ u_data = GST_VIDEO_FRAME_COMP_DATA (frame, 1);
+ v_data = GST_VIDEO_FRAME_COMP_DATA (frame, 2);
+
+ y_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 0);
+ u_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 1);
+ v_stride = GST_VIDEO_FRAME_COMP_STRIDE (frame, 2);
if (width != subs->display_def.display_width &&
height != subs->display_def.display_height) {
@@ -519,10 +497,10 @@
src_stride = sub_region->pict.rowstride;
src = sub_region->pict.data;
- dst_y = buffer->data + y_offset + dy * y_stride + dx;
- dst_y2 = buffer->data + y_offset + (dy + 1) * y_stride + dx;
- dst_u = buffer->data + u_offset + ((dy + 1) / 2) * u_stride + (dx + 1) / 2;
- dst_v = buffer->data + v_offset + ((dy + 1) / 2) * v_stride + (dx + 1) / 2;
+ dst_y = y_data + dy * y_stride + dx;
+ dst_y2 = y_data + (dy + 1) * y_stride + dx;
+ dst_u = u_data + ((dy + 1) / 2) * u_stride + (dx + 1) / 2;
+ dst_v = v_data + ((dy + 1) / 2) * v_stride + (dx + 1) / 2;
sy = 0;
for (y = 0; y < dh - 1; y += 2) {
@@ -677,20 +655,12 @@
{
GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad));
gboolean ret = FALSE;
+ GstVideoInfo info;
- render->width = 0;
- render->height = 0;
+ if (!gst_video_info_from_caps (&info, caps))
+ goto invalid_caps;
- if (!gst_video_format_parse_caps (caps, &render->format, &render->width,
- &render->height) ||
- !gst_video_parse_caps_framerate (caps, &render->fps_n, &render->fps_d)) {
- GST_ERROR_OBJECT (render, "Can't parse caps: %" GST_PTR_FORMAT, caps);
- ret = FALSE;
- goto out;
- }
-
- gst_video_parse_caps_pixel_aspect_ratio (caps, &render->par_n,
- &render->par_d);
+ render->info = info;
ret = gst_pad_set_caps (render->srcpad, caps);
if (!ret)
@@ -702,23 +672,36 @@
gst_object_unref (render);
return ret;
+
+ /* ERRORS */
+invalid_caps:
+ {
+ GST_ERROR_OBJECT (render, "Can't parse caps: %" GST_PTR_FORMAT, caps);
+ ret = FALSE;
+ goto out;
+ }
}
static void
gst_dvbsub_overlay_process_text (GstDVBSubOverlay * overlay, GstBuffer * buffer,
guint64 pts)
{
- guint8 *data = (guint8 *) GST_BUFFER_DATA (buffer);
- guint size = GST_BUFFER_SIZE (buffer);
+ guint8 *data;
+ gsize size;
GST_DEBUG_OBJECT (overlay,
"Processing subtitles with fake PTS=%" G_GUINT64_FORMAT
" which is a running time of %" GST_TIME_FORMAT,
pts, GST_TIME_ARGS (pts));
GST_DEBUG_OBJECT (overlay, "Feeding %u bytes to libdvbsub", size);
+
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
+
g_mutex_lock (overlay->dvbsub_mutex);
dvb_sub_feed_with_pts (overlay->dvb_sub, pts, data, size);
g_mutex_unlock (overlay->dvbsub_mutex);
+
+ gst_buffer_unmap (buffer, data, size);
gst_buffer_unref (buffer);
}
@@ -742,35 +725,13 @@
}
static GstFlowReturn
-gst_dvbsub_overlay_bufferalloc_video (GstPad * pad, guint64 offset, guint size,
- GstCaps * caps, GstBuffer ** buffer)
-{
- GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad));
- GstFlowReturn ret = GST_FLOW_WRONG_STATE;
- GstPad *allocpad;
-
- GST_OBJECT_LOCK (render);
- allocpad = render->srcpad ? gst_object_ref (render->srcpad) : NULL;
- GST_OBJECT_UNLOCK (render);
-
- if (allocpad) {
- ret = gst_pad_alloc_buffer (allocpad, offset, size, caps, buffer);
- gst_object_unref (allocpad);
- }
-
- gst_object_unref (render);
-
- return ret;
-}
-
-static GstFlowReturn
gst_dvbsub_overlay_chain_text (GstPad * pad, GstBuffer * buffer)
{
GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (GST_PAD_PARENT (pad));
GstClockTime sub_running_time;
GST_INFO_OBJECT (overlay, "subpicture/x-dvb buffer with size %u",
- GST_BUFFER_SIZE (buffer));
+ gst_buffer_get_size (buffer));
GST_LOG_OBJECT (overlay,
"Video segment: %" GST_SEGMENT_FORMAT " --- Subtitle segment: %"
@@ -793,8 +754,7 @@
* FIXME: does our waiting + render code work when there are more than one packets before
* FIXME: rendering callback will get called? */
- gst_segment_set_last_stop (&overlay->subtitle_segment, GST_FORMAT_TIME,
- GST_BUFFER_TIMESTAMP (buffer));
+ overlay->subtitle_segment.position = GST_BUFFER_TIMESTAMP (buffer);
sub_running_time =
gst_segment_to_running_time (&overlay->subtitle_segment, GST_FORMAT_TIME,
@@ -815,11 +775,11 @@
GstDVBSubOverlay *overlay = GST_DVBSUB_OVERLAY (GST_PAD_PARENT (pad));
GstFlowReturn ret = GST_FLOW_OK;
gint64 start, stop;
- gint64 cstart, cstop;
+ guint64 cstart, cstop;
gboolean in_seg;
GstClockTime vid_running_time, vid_running_time_end;
- if (overlay->format == GST_VIDEO_FORMAT_UNKNOWN)
+ if (GST_VIDEO_INFO_FORMAT (&overlay->info) == GST_VIDEO_FORMAT_UNKNOWN)
return GST_FLOW_NOT_NEGOTIATED;
if (!GST_BUFFER_TIMESTAMP_IS_VALID (buffer))
@@ -828,10 +788,10 @@
start = GST_BUFFER_TIMESTAMP (buffer);
GST_LOG_OBJECT (overlay,
- "Video segment: %" GST_SEGMENT_FORMAT " --- Subtitle last_stop: %"
+ "Video segment: %" GST_SEGMENT_FORMAT " --- Subtitle position: %"
GST_TIME_FORMAT " --- BUFFER: ts=%" GST_TIME_FORMAT,
&overlay->video_segment,
- GST_TIME_ARGS (overlay->subtitle_segment.last_stop),
+ GST_TIME_ARGS (overlay->subtitle_segment.position),
GST_TIME_ARGS (start));
/* ignore buffers that are outside of the current segment */
@@ -849,7 +809,7 @@
return GST_FLOW_OK;
}
- buffer = gst_buffer_make_metadata_writable (buffer);
+ buffer = gst_buffer_make_writable (buffer);
GST_BUFFER_TIMESTAMP (buffer) = cstart;
if (GST_BUFFER_DURATION_IS_VALID (buffer))
GST_BUFFER_DURATION (buffer) = cstop - cstart;
@@ -867,8 +827,7 @@
GST_DEBUG_OBJECT (overlay, "Video running time: %" GST_TIME_FORMAT,
GST_TIME_ARGS (vid_running_time));
- gst_segment_set_last_stop (&overlay->video_segment, GST_FORMAT_TIME,
- GST_BUFFER_TIMESTAMP (buffer));
+ overlay->video_segment.position = GST_BUFFER_TIMESTAMP (buffer);
g_mutex_lock (overlay->dvbsub_mutex);
if (!g_queue_is_empty (overlay->pending_subtitles)) {
@@ -892,7 +851,7 @@
dvb_subtitles_free (tmp);
tmp = NULL;
} else if (tmp->pts + tmp->page_time_out * GST_SECOND *
- overlay->subtitle_segment.abs_rate >= vid_running_time) {
+ ABS (overlay->subtitle_segment.rate) >= vid_running_time) {
if (candidate)
dvb_subtitles_free (candidate);
candidate = tmp;
@@ -922,7 +881,7 @@
&& vid_running_time >
(overlay->current_subtitle->pts +
overlay->current_subtitle->page_time_out * GST_SECOND *
- overlay->subtitle_segment.abs_rate)) {
+ ABS (overlay->subtitle_segment.rate))) {
GST_INFO_OBJECT (overlay,
"Subtitle page not redefined before fallback page_time_out of %u seconds (missed data?) - deleting current page",
overlay->current_subtitle->page_time_out);
@@ -932,8 +891,12 @@
/* Now render it */
if (g_atomic_int_get (&overlay->enable) && overlay->current_subtitle) {
+ GstVideoFrame frame;
+
buffer = gst_buffer_make_writable (buffer);
- blit_i420 (overlay, overlay->current_subtitle, buffer);
+ gst_video_frame_map (&frame, &overlay->info, buffer, GST_MAP_WRITE);
+ blit_i420 (overlay, overlay->current_subtitle, &frame);
+ gst_video_frame_unmap (&frame);
}
g_mutex_unlock (overlay->dvbsub_mutex);
@@ -959,24 +922,28 @@
GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_CAPS:
{
- GstFormat format;
- gdouble rate;
- gint64 start, stop, time;
- gboolean update;
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_dvbsub_overlay_setcaps_video (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
+ case GST_EVENT_SEGMENT:
+ {
+ GstSegment seg;
GST_DEBUG_OBJECT (render, "received new segment");
- gst_event_parse_new_segment (event, &update, &rate, &format, &start,
- &stop, &time);
+ gst_event_copy_segment (event, &seg);
- if (format == GST_FORMAT_TIME) {
+ if (seg.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (render, "VIDEO SEGMENT now: %" GST_SEGMENT_FORMAT,
&render->video_segment);
- gst_segment_set_newsegment (&render->video_segment, update, rate,
- format, start, stop, time);
+ render->video_segment = seg;
GST_DEBUG_OBJECT (render, "VIDEO SEGMENT after: %" GST_SEGMENT_FORMAT,
&render->video_segment);
@@ -1010,24 +977,19 @@
GST_DEBUG_OBJECT (pad, "received text event %s", GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- GstFormat format;
- gdouble rate;
- gint64 start, stop, time;
- gboolean update;
+ GstSegment seg;
GST_DEBUG_OBJECT (render, "received new segment");
- gst_event_parse_new_segment (event, &update, &rate, &format, &start,
- &stop, &time);
+ gst_event_copy_segment (event, &seg);
- if (format == GST_FORMAT_TIME) {
+ if (seg.format == GST_FORMAT_TIME) {
GST_DEBUG_OBJECT (render, "SUBTITLE SEGMENT now: %" GST_SEGMENT_FORMAT,
&render->subtitle_segment);
- gst_segment_set_newsegment (&render->subtitle_segment, update, rate,
- format, start, stop, time);
+ render->subtitle_segment = seg;
GST_DEBUG_OBJECT (render,
"SUBTITLE SEGMENT after: %" GST_SEGMENT_FORMAT,
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.h b/gst/dvbsuboverlay/gstdvbsuboverlay.h
index 012c728..e7e227d 100644
--- a/gst/dvbsuboverlay/gstdvbsuboverlay.h
+++ b/gst/dvbsuboverlay/gstdvbsuboverlay.h
@@ -50,10 +50,7 @@
GstSegment video_segment;
GstSegment subtitle_segment;
- GstVideoFormat format;
- gint width, height;
- gint fps_n, fps_d;
- gint par_n, par_d;
+ GstVideoInfo info;
DVBSubtitles *current_subtitle; /* The currently active set of subtitle regions, if any */
GQueue *pending_subtitles; /* A queue of raw subtitle region sets with
diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c
index 89b63d8..8f67d63 100644
--- a/gst/dvdspu/gstdvdspu.c
+++ b/gst/dvdspu/gstdvdspu.c
@@ -55,7 +55,7 @@
GST_STATIC_PAD_TEMPLATE ("video",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-yuv, " "format = (fourcc) { I420 }, "
+ GST_STATIC_CAPS ("video/x-raw, " "format = (string) { I420 }, "
"width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ]")
/* FIXME: Can support YV12 one day too */
);
@@ -63,7 +63,7 @@
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-yuv, " "format = (fourcc) { I420 }, "
+ GST_STATIC_CAPS ("video/x-raw, " "format = (string) { I420 }, "
"width = (int) [ 16, 4096 ], " "height = (int) [ 16, 4096 ]")
/* FIXME: Can support YV12 one day too */
);
@@ -82,7 +82,8 @@
0x808080, 0x808080, 0x808080, 0x808080
};
-GST_BOILERPLATE (GstDVDSpu, gst_dvd_spu, GstElement, GST_TYPE_ELEMENT);
+#define gst_dvd_spu_parent_class parent_class
+G_DEFINE_TYPE (GstDVDSpu, gst_dvd_spu, GST_TYPE_ELEMENT);
static void gst_dvd_spu_dispose (GObject * object);
static void gst_dvd_spu_finalize (GObject * object);
@@ -91,12 +92,11 @@
static gboolean gst_dvd_spu_src_event (GstPad * pad, GstEvent * event);
-static GstCaps *gst_dvd_spu_video_proxy_getcaps (GstPad * pad);
+static GstCaps *gst_dvd_spu_video_proxy_getcaps (GstPad * pad,
+ GstCaps * filter);
static gboolean gst_dvd_spu_video_set_caps (GstPad * pad, GstCaps * caps);
static GstFlowReturn gst_dvd_spu_video_chain (GstPad * pad, GstBuffer * buf);
static gboolean gst_dvd_spu_video_event (GstPad * pad, GstEvent * event);
-static GstFlowReturn gst_dvd_spu_buffer_alloc (GstPad * sinkpad, guint64 offset,
- guint size, GstCaps * caps, GstBuffer ** buf);
static void gst_dvd_spu_redraw_still (GstDVDSpu * dvdspu, gboolean force);
static void gst_dvd_spu_check_still_updates (GstDVDSpu * dvdspu);
@@ -114,49 +114,42 @@
static void gst_dvd_spu_handle_dvd_event (GstDVDSpu * dvdspu, GstEvent * event);
static void
-gst_dvd_spu_base_init (gpointer gclass)
+gst_dvd_spu_class_init (GstDVDSpuClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
+ GObjectClass *gobject_class;
+ GstElementClass *gstelement_class;
- gst_element_class_add_pad_template (element_class,
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
+
+ gobject_class->dispose = (GObjectFinalizeFunc) gst_dvd_spu_dispose;
+ gobject_class->finalize = (GObjectFinalizeFunc) gst_dvd_spu_finalize;
+
+ gstelement_class->change_state = gst_dvd_spu_change_state;
+
+ gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (element_class,
+ gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&subpic_sink_factory));
- gst_element_class_set_details_simple (element_class, "Sub-picture Overlay",
+
+ gst_element_class_set_details_simple (gstelement_class, "Sub-picture Overlay",
"Mixer/Video/Overlay/SubPicture/DVD/Bluray",
"Parses Sub-Picture command streams and renders the SPU overlay "
"onto the video as it passes through",
"Jan Schmidt <thaytan@noraisin.net>");
-
- element_class->change_state = gst_dvd_spu_change_state;
}
static void
-gst_dvd_spu_class_init (GstDVDSpuClass * klass)
-{
- GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass *) klass;
-
- gobject_class->dispose = (GObjectFinalizeFunc) gst_dvd_spu_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_dvd_spu_finalize;
-}
-
-static void
-gst_dvd_spu_init (GstDVDSpu * dvdspu, GstDVDSpuClass * gclass)
+gst_dvd_spu_init (GstDVDSpu * dvdspu)
{
dvdspu->videosinkpad =
gst_pad_new_from_static_template (&video_sink_factory, "video");
- gst_pad_set_setcaps_function (dvdspu->videosinkpad,
- gst_dvd_spu_video_set_caps);
gst_pad_set_getcaps_function (dvdspu->videosinkpad,
gst_dvd_spu_video_proxy_getcaps);
gst_pad_set_chain_function (dvdspu->videosinkpad, gst_dvd_spu_video_chain);
gst_pad_set_event_function (dvdspu->videosinkpad, gst_dvd_spu_video_event);
- gst_pad_set_bufferalloc_function (dvdspu->videosinkpad,
- gst_dvd_spu_buffer_alloc);
dvdspu->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
gst_pad_set_event_function (dvdspu->srcpad, gst_dvd_spu_src_event);
@@ -167,8 +160,6 @@
gst_pad_new_from_static_template (&subpic_sink_factory, "subpicture");
gst_pad_set_chain_function (dvdspu->subpic_sinkpad, gst_dvd_spu_subpic_chain);
gst_pad_set_event_function (dvdspu->subpic_sinkpad, gst_dvd_spu_subpic_event);
- gst_pad_set_setcaps_function (dvdspu->subpic_sinkpad,
- gst_dvd_spu_subpic_set_caps);
gst_element_add_pad (GST_ELEMENT (dvdspu), dvdspu->videosinkpad);
gst_element_add_pad (GST_ELEMENT (dvdspu), dvdspu->subpic_sinkpad);
@@ -191,8 +182,8 @@
gst_buffer_replace (&dvdspu->ref_frame, NULL);
gst_buffer_replace (&dvdspu->pending_frame, NULL);
- dvdspu->spu_state.fps_n = 25;
- dvdspu->spu_state.fps_d = 1;
+ dvdspu->spu_state.info.fps_n = 25;
+ dvdspu->spu_state.info.fps_d = 1;
gst_segment_init (&dvdspu->video_seg, GST_FORMAT_UNDEFINED);
}
@@ -279,21 +270,6 @@
}
}
-/* Proxy buffer allocations on the video sink pad downstream */
-static GstFlowReturn
-gst_dvd_spu_buffer_alloc (GstPad * sinkpad, guint64 offset, guint size,
- GstCaps * caps, GstBuffer ** buf)
-{
- GstDVDSpu *dvdspu = GST_DVD_SPU (gst_pad_get_parent (sinkpad));
- GstFlowReturn ret = GST_FLOW_OK;
-
- ret = gst_pad_alloc_buffer (dvdspu->srcpad, offset, size, caps, buf);
-
- gst_object_unref (dvdspu);
-
- return ret;
-}
-
static gboolean
gst_dvd_spu_src_event (GstPad * pad, GstEvent * event)
{
@@ -316,39 +292,21 @@
{
GstDVDSpu *dvdspu = GST_DVD_SPU (gst_pad_get_parent (pad));
gboolean res = FALSE;
- GstStructure *s;
- gint w, h;
+ GstVideoInfo info;
gint i;
- gint fps_n, fps_d;
SpuState *state;
- s = gst_caps_get_structure (caps, 0);
-
- if (!gst_structure_get_int (s, "width", &w) ||
- !gst_structure_get_int (s, "height", &h) ||
- !gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d)) {
+ if (!gst_video_info_from_caps (&info, caps))
goto done;
- }
DVD_SPU_LOCK (dvdspu);
state = &dvdspu->spu_state;
- state->fps_n = fps_n;
- state->fps_d = fps_d;
-
- state->vid_height = h;
- state->Y_height = GST_ROUND_UP_2 (h);
- state->UV_height = state->Y_height / 2;
-
- if (state->vid_width != w) {
- state->vid_width = w;
- state->Y_stride = GST_ROUND_UP_4 (w);
- state->UV_stride = GST_ROUND_UP_4 (state->Y_stride / 2);
- for (i = 0; i < 3; i++) {
- state->comp_bufs[i] = g_realloc (state->comp_bufs[i],
- sizeof (guint32) * state->UV_stride);
- }
+ state->info = info;
+ for (i = 0; i < 3; i++) {
+ state->comp_bufs[i] = g_realloc (state->comp_bufs[i],
+ sizeof (guint32) * info.width);
}
DVD_SPU_UNLOCK (dvdspu);
@@ -359,7 +317,7 @@
}
static GstCaps *
-gst_dvd_spu_video_proxy_getcaps (GstPad * pad)
+gst_dvd_spu_video_proxy_getcaps (GstPad * pad, GstCaps * filter)
{
GstDVDSpu *dvdspu = GST_DVD_SPU (gst_pad_get_parent (pad));
GstCaps *caps;
@@ -369,7 +327,7 @@
* subpicture sink pad */
otherpad = (pad == dvdspu->srcpad) ? dvdspu->videosinkpad : dvdspu->srcpad;
- caps = gst_pad_peer_get_caps (otherpad);
+ caps = gst_pad_peer_get_caps (otherpad, filter);
if (caps) {
GstCaps *temp;
const GstCaps *templ;
@@ -396,6 +354,15 @@
g_return_val_if_fail (dvdspu != NULL, FALSE);
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ res = gst_dvd_spu_video_set_caps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_CUSTOM_DOWNSTREAM:
case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
{
@@ -435,36 +402,29 @@
}
break;
}
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- gboolean update;
- gdouble rate, arate;
- GstFormat format;
- gint64 start, stop, time;
+ GstSegment seg;
- gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
- &start, &stop, &time);
+ gst_event_copy_segment (event, &seg);
- if (format != GST_FORMAT_TIME)
+ if (seg.format != GST_FORMAT_TIME)
return FALSE;
/* Only print updates if they have an end time (don't print start_time
* updates */
- GST_DEBUG_OBJECT (dvdspu, "video pad NewSegment:"
- " Update %d, rate %g arate %g format %d start %" GST_TIME_FORMAT
- " %" GST_TIME_FORMAT " position %" GST_TIME_FORMAT,
- update, rate, arate, format, GST_TIME_ARGS (start),
- GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
+ GST_DEBUG_OBJECT (dvdspu, "video pad Segment: %" GST_SEGMENT_FORMAT,
+ &seg);
DVD_SPU_LOCK (dvdspu);
- if (update && start > dvdspu->video_seg.last_stop) {
+ if (seg.start > dvdspu->video_seg.position) {
#if 0
g_print ("Segment update for video. Advancing from %" GST_TIME_FORMAT
" to %" GST_TIME_FORMAT "\n",
- GST_TIME_ARGS (dvdspu->video_seg.last_stop), GST_TIME_ARGS (start));
+ GST_TIME_ARGS (dvdspu->video_seg.position), GST_TIME_ARGS (start));
#endif
- while (dvdspu->video_seg.last_stop < start &&
+ while (dvdspu->video_seg.position < seg.start &&
!(state->flags & SPU_STATE_STILL_FRAME)) {
DVD_SPU_UNLOCK (dvdspu);
if (dvdspu_handle_vid_buffer (dvdspu, NULL) != GST_FLOW_OK) {
@@ -475,9 +435,7 @@
}
}
- gst_segment_set_newsegment_full (&dvdspu->video_seg, update, rate, arate,
- format, start, stop, time);
-
+ dvdspu->video_seg = seg;
DVD_SPU_UNLOCK (dvdspu);
res = gst_pad_event_default (pad, event);
@@ -539,15 +497,15 @@
DVD_SPU_LOCK (dvdspu);
if (buf == NULL) {
- GstClockTime next_ts = dvdspu->video_seg.last_stop;
+ GstClockTime next_ts = dvdspu->video_seg.position;
next_ts += gst_util_uint64_scale_int (GST_SECOND,
- dvdspu->spu_state.fps_d, dvdspu->spu_state.fps_n);
+ dvdspu->spu_state.info.fps_d, dvdspu->spu_state.info.fps_n);
/* NULL buffer was passed - use the reference frame and update the timestamp,
* or else there's nothing to draw, and just return GST_FLOW_OK */
if (dvdspu->ref_frame == NULL) {
- gst_segment_set_last_stop (&dvdspu->video_seg, GST_FORMAT_TIME, next_ts);
+ dvdspu->video_seg.position = next_ts;
goto no_ref_frame;
}
@@ -564,16 +522,15 @@
}
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
- gst_segment_set_last_stop (&dvdspu->video_seg, GST_FORMAT_TIME,
- GST_BUFFER_TIMESTAMP (buf));
+ dvdspu->video_seg.position = GST_BUFFER_TIMESTAMP (buf);
}
new_ts = gst_segment_to_running_time (&dvdspu->video_seg, GST_FORMAT_TIME,
- dvdspu->video_seg.last_stop);
+ dvdspu->video_seg.position);
#if 0
g_print ("TS %" GST_TIME_FORMAT " running: %" GST_TIME_FORMAT "\n",
- GST_TIME_ARGS (dvdspu->video_seg.last_stop), GST_TIME_ARGS (new_ts));
+ GST_TIME_ARGS (dvdspu->video_seg.position), GST_TIME_ARGS (new_ts));
#endif
gst_dvd_spu_advance_spu (dvdspu, new_ts);
@@ -630,16 +587,21 @@
static void
gstspu_render (GstDVDSpu * dvdspu, GstBuffer * buf)
{
+ GstVideoFrame frame;
+
+ gst_video_frame_map (&frame, &dvdspu->spu_state.info, buf, GST_MAP_READWRITE);
+
switch (dvdspu->spu_input_type) {
case SPU_INPUT_TYPE_VOBSUB:
- gstspu_vobsub_render (dvdspu, buf);
+ gstspu_vobsub_render (dvdspu, &frame);
break;
case SPU_INPUT_TYPE_PGS:
- gstspu_pgs_render (dvdspu, buf);
+ gstspu_pgs_render (dvdspu, &frame);
break;
default:
break;
}
+ gst_video_frame_unmap (&frame);
}
/* With SPU LOCK */
@@ -671,7 +633,7 @@
} else if (force) {
/* Simply output the reference frame */
GstBuffer *buf = gst_buffer_ref (dvdspu->ref_frame);
- buf = gst_buffer_make_metadata_writable (buf);
+ buf = gst_buffer_make_writable (buf);
GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
GST_BUFFER_TIMESTAMP (buf) = GST_CLOCK_TIME_NONE;
GST_BUFFER_DURATION (buf) = GST_CLOCK_TIME_NONE;
@@ -694,7 +656,7 @@
gboolean hl_change = FALSE;
GST_INFO_OBJECT (dvdspu, "DVD event of type %s on subp pad OOB=%d",
- gst_structure_get_string (event->structure, "event"),
+ gst_structure_get_string (gst_event_get_structure (event), "event"),
(GST_EVENT_TYPE (event) == GST_EVENT_CUSTOM_DOWNSTREAM_OOB));
switch (dvdspu->spu_input_type) {
@@ -755,13 +717,13 @@
vid_run_ts =
gst_segment_to_running_time (&dvdspu->video_seg, GST_FORMAT_TIME,
- dvdspu->video_seg.last_stop);
+ dvdspu->video_seg.position);
GST_LOG_OBJECT (dvdspu,
"Popped new SPU packet with TS %" GST_TIME_FORMAT
- ". Video last_stop=%" GST_TIME_FORMAT " (%" GST_TIME_FORMAT
+ ". Video position=%" GST_TIME_FORMAT " (%" GST_TIME_FORMAT
") type %s",
GST_TIME_ARGS (packet->event_ts), GST_TIME_ARGS (vid_run_ts),
- GST_TIME_ARGS (dvdspu->video_seg.last_stop),
+ GST_TIME_ARGS (dvdspu->video_seg.position),
packet->buf ? "buffer" : "event");
if (packet->buf) {
@@ -796,9 +758,9 @@
if (dvdspu->spu_state.flags & SPU_STATE_STILL_FRAME) {
vid_ts = gst_segment_to_running_time (&dvdspu->video_seg,
- GST_FORMAT_TIME, dvdspu->video_seg.last_stop);
+ GST_FORMAT_TIME, dvdspu->video_seg.position);
sub_ts = gst_segment_to_running_time (&dvdspu->subp_seg,
- GST_FORMAT_TIME, dvdspu->subp_seg.last_stop);
+ GST_FORMAT_TIME, dvdspu->subp_seg.position);
vid_ts = MAX (vid_ts, sub_ts);
@@ -818,7 +780,7 @@
GST_DEBUG_OBJECT (dvdspu,
"Complete subpicture buffer of %u bytes with TS %" GST_TIME_FORMAT,
- GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+ gst_buffer_get_size (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
/* Decide whether to pass this buffer through to the rendering code */
ts = GST_BUFFER_TIMESTAMP (buf);
@@ -869,18 +831,18 @@
{
GstDVDSpu *dvdspu = (GstDVDSpu *) (gst_object_get_parent (GST_OBJECT (pad)));
GstFlowReturn ret = GST_FLOW_OK;
+ gsize size;
g_return_val_if_fail (dvdspu != NULL, GST_FLOW_ERROR);
GST_INFO_OBJECT (dvdspu, "Have subpicture buffer with timestamp %"
GST_TIME_FORMAT " and size %u",
- GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), GST_BUFFER_SIZE (buf));
+ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), gst_buffer_get_size (buf));
DVD_SPU_LOCK (dvdspu);
if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
- gst_segment_set_last_stop (&dvdspu->subp_seg, GST_FORMAT_TIME,
- GST_BUFFER_TIMESTAMP (buf));
+ dvdspu->subp_seg.position = GST_BUFFER_TIMESTAMP (buf);
}
if (GST_BUFFER_IS_DISCONT (buf) && dvdspu->partial_spu) {
@@ -905,30 +867,31 @@
if (dvdspu->partial_spu == NULL)
goto done;
+ size = gst_buffer_get_size (dvdspu->partial_spu);
+
switch (dvdspu->spu_input_type) {
case SPU_INPUT_TYPE_VOBSUB:
- if (GST_BUFFER_SIZE (dvdspu->partial_spu) > 4) {
+ if (size > 4) {
+ guint8 *header[2];
guint16 packet_size;
- guint8 *data;
- data = GST_BUFFER_DATA (dvdspu->partial_spu);
- packet_size = GST_READ_UINT16_BE (data);
-
- if (packet_size == GST_BUFFER_SIZE (dvdspu->partial_spu)) {
+ gst_buffer_extract (dvdspu->partial_spu, 0, header, 2);
+ packet_size = GST_READ_UINT16_BE (header);
+ if (packet_size == size) {
submit_new_spu_packet (dvdspu, dvdspu->partial_spu);
dvdspu->partial_spu = NULL;
- } else if (packet_size < GST_BUFFER_SIZE (dvdspu->partial_spu)) {
+ } else if (packet_size < size) {
/* Somehow we collected too much - something is wrong. Drop the
* packet entirely and wait for a new one */
GST_DEBUG_OBJECT (dvdspu, "Discarding invalid SPU buffer of size %u",
- GST_BUFFER_SIZE (dvdspu->partial_spu));
+ size);
gst_buffer_unref (dvdspu->partial_spu);
dvdspu->partial_spu = NULL;
} else {
GST_LOG_OBJECT (dvdspu,
"SPU buffer claims to be of size %u. Collected %u so far.",
- packet_size, GST_BUFFER_SIZE (dvdspu->partial_spu));
+ packet_size, size);
}
}
break;
@@ -937,34 +900,42 @@
* we've collected */
guint8 packet_type;
guint16 packet_size;
- guint8 *data = GST_BUFFER_DATA (dvdspu->partial_spu);
- guint8 *end = data + GST_BUFFER_SIZE (dvdspu->partial_spu);
+ guint8 *data, *ptr, *end;
+ gsize size;
+ gboolean invalid = FALSE;
+
+ data = gst_buffer_map (dvdspu->partial_spu, &size, NULL, GST_MAP_READ);
+
+ ptr = data;
+ end = ptr + size;
/* FIXME: There's no need to walk the command set each time. We can set a
* marker and resume where we left off next time */
/* FIXME: Move the packet parsing and sanity checking into the format-specific modules */
- while (data != end) {
- if (data + 3 > end)
+ while (ptr != end) {
+ if (ptr + 3 > end)
break;
- packet_type = *data++;
- packet_size = GST_READ_UINT16_BE (data);
- data += 2;
- if (data + packet_size > end)
+ packet_type = *ptr++;
+ packet_size = GST_READ_UINT16_BE (ptr);
+ ptr += 2;
+ if (ptr + packet_size > end)
break;
- data += packet_size;
+ ptr += packet_size;
/* 0x80 is the END command for PGS packets */
- if (packet_type == 0x80 && data != end) {
+ if (packet_type == 0x80 && ptr != end) {
/* Extra cruft on the end of the packet -> assume invalid */
- gst_buffer_unref (dvdspu->partial_spu);
- dvdspu->partial_spu = NULL;
+ invalid = TRUE;
break;
}
}
+ gst_buffer_unmap (dvdspu->partial_spu, data, size);
- if (dvdspu->partial_spu && data == end) {
+ if (invalid) {
+ gst_buffer_unref (dvdspu->partial_spu);
+ dvdspu->partial_spu = NULL;
+ } else if (ptr == end) {
GST_DEBUG_OBJECT (dvdspu,
- "Have complete PGS packet of size %u. Enqueueing.",
- GST_BUFFER_SIZE (dvdspu->partial_spu));
+ "Have complete PGS packet of size %u. Enqueueing.", size);
submit_new_spu_packet (dvdspu, dvdspu->partial_spu);
dvdspu->partial_spu = NULL;
}
@@ -997,6 +968,15 @@
/* Some events on the subpicture sink pad just get ignored, like
* FLUSH_START */
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ res = gst_dvd_spu_subpic_set_caps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_CUSTOM_DOWNSTREAM:
case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
{
@@ -1053,29 +1033,20 @@
break;
}
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- gboolean update;
- gdouble rate;
- GstFormat format;
- gint64 start, stop, time;
- gdouble arate;
+ GstSegment seg;
- gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
- &start, &stop, &time);
+ gst_event_copy_segment (event, &seg);
/* Only print updates if they have an end time (don't print start_time
* updates */
- GST_DEBUG_OBJECT (dvdspu, "subpic pad NewSegment:"
- " Update %d, rate %g arate %g format %d start %" GST_TIME_FORMAT
- " %" GST_TIME_FORMAT " position %" GST_TIME_FORMAT,
- update, rate, arate, format, GST_TIME_ARGS (start),
- GST_TIME_ARGS (stop), GST_TIME_ARGS (time));
+ GST_DEBUG_OBJECT (dvdspu, "subpic pad Segment: %" GST_SEGMENT_FORMAT,
+ &seg);
DVD_SPU_LOCK (dvdspu);
- gst_segment_set_newsegment_full (&dvdspu->subp_seg, update, rate, arate,
- format, start, stop, time);
+ dvdspu->subp_seg = seg;
GST_LOG_OBJECT (dvdspu, "Subpicture segment now: %" GST_SEGMENT_FORMAT,
&dvdspu->subp_seg);
DVD_SPU_UNLOCK (dvdspu);
@@ -1152,7 +1123,7 @@
GstDVDSpu *dvdspu = (GstDVDSpu *) element;
GstStateChangeReturn ret;
- ret = parent_class->change_state (element, transition);
+ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
switch (transition) {
case GST_STATE_CHANGE_PAUSED_TO_READY:
diff --git a/gst/dvdspu/gstdvdspu.h b/gst/dvdspu/gstdvdspu.h
index 22b48d1..747b002 100644
--- a/gst/dvdspu/gstdvdspu.h
+++ b/gst/dvdspu/gstdvdspu.h
@@ -69,10 +69,7 @@
GstClockTime next_ts; /* Next event TS in running time */
SpuStateFlags flags;
- gint fps_n, fps_d;
- gint16 vid_width, vid_height;
- gint16 Y_stride, UV_stride;
- gint16 Y_height, UV_height;
+ GstVideoInfo info;
guint32 *comp_bufs[3]; /* Compositing buffers for U+V & A */
guint16 comp_left;
diff --git a/gst/dvdspu/gstspu-common.h b/gst/dvdspu/gstspu-common.h
index 206e882..ec0b3df 100644
--- a/gst/dvdspu/gstspu-common.h
+++ b/gst/dvdspu/gstspu-common.h
@@ -20,6 +20,7 @@
#define __GSTSPU_COMMON_H__
#include <glib.h>
+#include <gst/video/video.h>
G_BEGIN_DECLS
diff --git a/gst/dvdspu/gstspu-pgs.c b/gst/dvdspu/gstspu-pgs.c
index a244ac9..955cf1a 100644
--- a/gst/dvdspu/gstspu-pgs.c
+++ b/gst/dvdspu/gstspu-pgs.c
@@ -171,10 +171,11 @@
static void
pgs_composition_object_render (PgsCompositionObject * obj, SpuState * state,
- GstBuffer * dest_buf)
+ GstVideoFrame * frame)
{
SpuColour *colour;
guint8 *planes[3]; /* YUV frame pointers */
+ gint strides[3];
guint8 *data, *end;
guint16 obj_w;
guint16 obj_h G_GNUC_UNUSED;
@@ -195,27 +196,27 @@
* window specified by the object's window_id */
/* Store the start of each plane */
- planes[0] = GST_BUFFER_DATA (dest_buf);
- planes[1] = planes[0] + (state->Y_height * state->Y_stride);
- planes[2] = planes[1] + (state->UV_height * state->UV_stride);
+ planes[0] = GST_VIDEO_FRAME_COMP_DATA (frame, 0);
+ planes[1] = GST_VIDEO_FRAME_COMP_DATA (frame, 1);
+ planes[2] = GST_VIDEO_FRAME_COMP_DATA (frame, 2);
- /* Sanity check */
- g_return_if_fail (planes[2] + (state->UV_height * state->UV_stride) <=
- GST_BUFFER_DATA (dest_buf) + GST_BUFFER_SIZE (dest_buf));
+ strides[0] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 0);
+ strides[1] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 1);
+ strides[2] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 2);
- y = MIN (obj->y, state->Y_height);
+ y = MIN (obj->y, state->info.height);
- planes[0] += state->Y_stride * y;
- planes[1] += state->UV_stride * (y / 2);
- planes[2] += state->UV_stride * (y / 2);
+ planes[0] += strides[0] * y;
+ planes[1] += strides[1] * (y / 2);
+ planes[2] += strides[2] * (y / 2);
/* RLE data: */
obj_w = GST_READ_UINT16_BE (data);
obj_h = GST_READ_UINT16_BE (data + 2);
data += 4;
- min_x = MIN (obj->x, state->Y_stride);
- max_x = MIN (obj->x + obj_w, state->Y_stride);
+ min_x = MIN (obj->x, strides[0]);
+ max_x = MIN (obj->x + obj_w, strides[0]);
state->comp_left = x = min_x;
state->comp_right = max_x;
@@ -283,17 +284,17 @@
if (!run_len || x > max_x) {
x = min_x;
- planes[0] += state->Y_stride;
+ planes[0] += strides[0];
if (y % 2) {
gstspu_blend_comp_buffers (state, planes);
gstspu_clear_comp_buffers (state);
- planes[1] += state->UV_stride;
- planes[2] += state->UV_stride;
+ planes[1] += strides[1];
+ planes[2] += strides[2];
}
y++;
- if (y >= state->Y_height)
+ if (y >= state->info.height)
return; /* Hit the bottom */
}
}
@@ -678,17 +679,20 @@
gint
gstspu_exec_pgs_buffer (GstDVDSpu * dvdspu, GstBuffer * buf)
{
- guint8 *pos, *end;
+ guint8 *data, *pos, *end;
+ gsize size;
guint8 type;
guint16 packet_len;
- pos = GST_BUFFER_DATA (buf);
- end = pos + GST_BUFFER_SIZE (buf);
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
+
+ pos = data;
+ end = pos + size;
/* Need at least 3 bytes */
if (pos + 3 > end) {
PGS_DUMP ("Not enough bytes to be a PGS packet\n");
- return -1;
+ goto error;
}
PGS_DUMP ("Begin dumping command buffer of size %u ts %" GST_TIME_FORMAT "\n",
@@ -699,19 +703,27 @@
pos += 2;
if (pos + packet_len > end) {
+ gst_buffer_unmap (buf, data, size);
PGS_DUMP ("Invalid packet length %u (only have %u bytes)\n", packet_len,
end - pos);
- return -1;
+ goto error;
}
if (parse_pgs_packet (dvdspu, type, pos, packet_len))
- return -1;
+ goto error;
pos += packet_len;
} while (pos + 3 <= end);
PGS_DUMP ("End dumping command buffer with %u bytes remaining\n", end - pos);
- return (pos - GST_BUFFER_DATA (buf));
+ return (pos - data);
+
+ /* ERRORS */
+error:
+ {
+ gst_buffer_unmap (buf, data, size);
+ return -1;
+ }
}
void
@@ -746,7 +758,7 @@
}
void
-gstspu_pgs_render (GstDVDSpu * dvdspu, GstBuffer * buf)
+gstspu_pgs_render (GstDVDSpu * dvdspu, GstVideoFrame * frame)
{
SpuState *state = &dvdspu->spu_state;
PgsPresentationSegment *ps = &state->pgs.pres_seg;
@@ -758,7 +770,7 @@
for (i = 0; i < ps->objects->len; i++) {
PgsCompositionObject *cur =
&g_array_index (ps->objects, PgsCompositionObject, i);
- pgs_composition_object_render (cur, state, buf);
+ pgs_composition_object_render (cur, state, frame);
}
}
diff --git a/gst/dvdspu/gstspu-pgs.h b/gst/dvdspu/gstspu-pgs.h
index 164f4d8..3304677 100644
--- a/gst/dvdspu/gstspu-pgs.h
+++ b/gst/dvdspu/gstspu-pgs.h
@@ -99,7 +99,7 @@
void gstspu_pgs_handle_new_buf (GstDVDSpu * dvdspu, GstClockTime event_ts, GstBuffer *buf);
gboolean gstspu_pgs_execute_event (GstDVDSpu *dvdspu);
-void gstspu_pgs_render (GstDVDSpu *dvdspu, GstBuffer *buf);
+void gstspu_pgs_render (GstDVDSpu *dvdspu, GstVideoFrame *frame);
gboolean gstspu_pgs_handle_dvd_event (GstDVDSpu *dvdspu, GstEvent *event);
void gstspu_pgs_flush (GstDVDSpu *dvdspu);
diff --git a/gst/dvdspu/gstspu-vobsub-render.c b/gst/dvdspu/gstspu-vobsub-render.c
index 830017d..1254d0a 100644
--- a/gst/dvdspu/gstspu-vobsub-render.c
+++ b/gst/dvdspu/gstspu-vobsub-render.c
@@ -138,7 +138,7 @@
if (G_UNLIKELY (*rle_offset >= state->vobsub.max_offset))
return 0; /* Overran the buffer */
- ret = GST_BUFFER_DATA (state->vobsub.pix_buf)[(*rle_offset) / 2];
+ gst_buffer_extract (state->vobsub.pix_buf, (*rle_offset) / 2, &ret, 1);
/* If the offset is even, we shift the answer down 4 bits, otherwise not */
if (*rle_offset & 0x01)
@@ -384,24 +384,29 @@
}
void
-gstspu_vobsub_render (GstDVDSpu * dvdspu, GstBuffer * buf)
+gstspu_vobsub_render (GstDVDSpu * dvdspu, GstVideoFrame * frame)
{
SpuState *state = &dvdspu->spu_state;
guint8 *planes[3]; /* YUV frame pointers */
gint y, last_y;
+ gint width, height;
+ gint strides[3];
/* Set up our initial state */
if (G_UNLIKELY (state->vobsub.pix_buf == NULL))
return;
/* Store the start of each plane */
- planes[0] = GST_BUFFER_DATA (buf);
- planes[1] = planes[0] + (state->Y_height * state->Y_stride);
- planes[2] = planes[1] + (state->UV_height * state->UV_stride);
+ planes[0] = GST_VIDEO_FRAME_COMP_DATA (frame, 0);
+ planes[1] = GST_VIDEO_FRAME_COMP_DATA (frame, 1);
+ planes[2] = GST_VIDEO_FRAME_COMP_DATA (frame, 2);
- /* Sanity check */
- g_return_if_fail (planes[2] + (state->UV_height * state->UV_stride) <=
- GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf));
+ strides[0] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 0);
+ strides[1] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 1);
+ strides[2] = GST_VIDEO_FRAME_COMP_STRIDE (frame, 2);
+
+ width = GST_VIDEO_FRAME_WIDTH (frame);
+ height = GST_VIDEO_FRAME_HEIGHT (frame);
GST_DEBUG_OBJECT (dvdspu,
"Rendering SPU. disp_rect %d,%d to %d,%d. hl_rect %d,%d to %d,%d",
@@ -410,13 +415,12 @@
state->vobsub.hl_rect.left, state->vobsub.hl_rect.top,
state->vobsub.hl_rect.right, state->vobsub.hl_rect.bottom);
- GST_DEBUG_OBJECT (dvdspu, "video size %d,%d", state->vid_width,
- state->vid_height);
+ GST_DEBUG_OBJECT (dvdspu, "video size %d,%d", width, height);
/* When reading RLE data, we track the offset in nibbles... */
state->vobsub.cur_offsets[0] = state->vobsub.pix_data[0] * 2;
state->vobsub.cur_offsets[1] = state->vobsub.pix_data[1] * 2;
- state->vobsub.max_offset = GST_BUFFER_SIZE (state->vobsub.pix_buf) * 2;
+ state->vobsub.max_offset = gst_buffer_get_size (state->vobsub.pix_buf) * 2;
/* Update all the palette caches */
gstspu_vobsub_update_palettes (dvdspu, state);
@@ -436,18 +440,18 @@
state->vobsub.clip_rect.right = state->vobsub.disp_rect.right;
/* center the image when display rectangle exceeds the video width */
- if (state->vid_width <= state->vobsub.disp_rect.right) {
+ if (width <= state->vobsub.disp_rect.right) {
gint left, disp_width;
disp_width = state->vobsub.disp_rect.right - state->vobsub.disp_rect.left
+ 1;
- left = (state->vid_width - disp_width) / 2;
+ left = (width - disp_width) / 2;
state->vobsub.disp_rect.left = left;
state->vobsub.disp_rect.right = left + disp_width - 1;
/* if it clips to the right, shift it left, but only till zero */
- if (state->vobsub.disp_rect.right >= state->vid_width) {
- gint shift = state->vobsub.disp_rect.right - state->vid_width - 1;
+ if (state->vobsub.disp_rect.right >= width) {
+ gint shift = state->vobsub.disp_rect.right - width - 1;
if (shift > state->vobsub.disp_rect.left)
shift = state->vobsub.disp_rect.left;
state->vobsub.disp_rect.left -= shift;
@@ -459,8 +463,8 @@
state->vobsub.clip_rect.right = state->vobsub.disp_rect.right;
/* clip right after the shift */
- if (state->vobsub.clip_rect.right >= state->vid_width)
- state->vobsub.clip_rect.right = state->vid_width - 1;
+ if (state->vobsub.clip_rect.right >= width)
+ state->vobsub.clip_rect.right = width - 1;
GST_DEBUG_OBJECT (dvdspu,
"clipping width to %d,%d", state->vobsub.clip_rect.left,
@@ -472,10 +476,10 @@
* is and do something more clever. */
state->vobsub.clip_rect.top = state->vobsub.disp_rect.top;
state->vobsub.clip_rect.bottom = state->vobsub.disp_rect.bottom;
- if (state->vid_height <= state->vobsub.disp_rect.bottom) {
+ if (height <= state->vobsub.disp_rect.bottom) {
/* shift it up, but only till zero */
- gint shift = state->vobsub.disp_rect.bottom - state->vid_height - 1;
+ gint shift = state->vobsub.disp_rect.bottom - height - 1;
if (shift > state->vobsub.disp_rect.top)
shift = state->vobsub.disp_rect.top;
state->vobsub.disp_rect.top -= shift;
@@ -492,8 +496,8 @@
state->vobsub.clip_rect.bottom = state->vobsub.disp_rect.bottom;
/* clip right after the shift */
- if (state->vobsub.clip_rect.bottom >= state->vid_height)
- state->vobsub.clip_rect.bottom = state->vid_height - 1;
+ if (state->vobsub.clip_rect.bottom >= height)
+ state->vobsub.clip_rect.bottom = height - 1;
GST_DEBUG_OBJECT (dvdspu,
"clipping height to %d,%d", state->vobsub.clip_rect.top,
@@ -508,9 +512,9 @@
last_y = (state->vobsub.disp_rect.bottom - 1) & ~(0x01);
/* Update our plane references to the first line of the disp_rect */
- planes[0] += state->Y_stride * y;
- planes[1] += state->UV_stride * (y / 2);
- planes[2] += state->UV_stride * (y / 2);
+ planes[0] += strides[0] * y;
+ planes[1] += strides[1] * (y / 2);
+ planes[2] += strides[2] * (y / 2);
for (state->vobsub.cur_Y = y; state->vobsub.cur_Y <= last_y;
state->vobsub.cur_Y++) {
@@ -526,7 +530,7 @@
gstspu_vobsub_render_line (state, planes, &state->vobsub.cur_offsets[0]);
if (!clip) {
/* Advance the luminance output pointer */
- planes[0] += state->Y_stride;
+ planes[0] += strides[0];
}
state->vobsub.cur_Y++;
@@ -539,9 +543,9 @@
gstspu_vobsub_blend_comp_buffers (state, planes);
/* Update all the output pointers */
- planes[0] += state->Y_stride;
- planes[1] += state->UV_stride;
- planes[2] += state->UV_stride;
+ planes[0] += strides[0];
+ planes[1] += strides[1];
+ planes[2] += strides[2];
}
}
if (state->vobsub.cur_Y == state->vobsub.disp_rect.bottom) {
@@ -568,24 +572,22 @@
guint8 *cur;
gint16 pos;
- cur = GST_BUFFER_DATA (buf) + state->Y_stride * state->vobsub.disp_rect.top;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->vobsub.disp_rect.top;
for (pos = state->vobsub.disp_rect.left + 1;
pos < state->vobsub.disp_rect.right; pos++)
cur[pos] = (cur[pos] / 2) + 0x8;
- cur =
- GST_BUFFER_DATA (buf) +
- state->Y_stride * state->vobsub.disp_rect.bottom;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->vobsub.disp_rect.bottom;
for (pos = state->vobsub.disp_rect.left + 1;
pos < state->vobsub.disp_rect.right; pos++)
cur[pos] = (cur[pos] / 2) + 0x8;
- cur = GST_BUFFER_DATA (buf) + state->Y_stride * state->vobsub.disp_rect.top;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->vobsub.disp_rect.top;
for (pos = state->vobsub.disp_rect.top;
pos <= state->vobsub.disp_rect.bottom; pos++) {
cur[state->vobsub.disp_rect.left] =
(cur[state->vobsub.disp_rect.left] / 2) + 0x8;
cur[state->vobsub.disp_rect.right] =
(cur[state->vobsub.disp_rect.right] / 2) + 0x8;
- cur += state->Y_stride;
+ cur += strides[0];
}
} while (0);
#endif
@@ -595,17 +597,17 @@
guint8 *cur;
gint16 pos;
- cur = GST_BUFFER_DATA (buf) + state->Y_stride * state->hl_rect.top;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->hl_rect.top;
for (pos = state->hl_rect.left + 1; pos < state->hl_rect.right; pos++)
cur[pos] = (cur[pos] / 2) + 0x8;
- cur = GST_BUFFER_DATA (buf) + state->Y_stride * state->hl_rect.bottom;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->hl_rect.bottom;
for (pos = state->hl_rect.left + 1; pos < state->hl_rect.right; pos++)
cur[pos] = (cur[pos] / 2) + 0x8;
- cur = GST_BUFFER_DATA (buf) + state->Y_stride * state->hl_rect.top;
+ cur = GST_BUFFER_DATA (buf) + strides[0] * state->hl_rect.top;
for (pos = state->hl_rect.top; pos <= state->hl_rect.bottom; pos++) {
cur[state->hl_rect.left] = (cur[state->hl_rect.left] / 2) + 0x8;
cur[state->hl_rect.right] = (cur[state->hl_rect.right] / 2) + 0x8;
- cur += state->Y_stride;
+ cur += strides[0];
}
}
#endif
diff --git a/gst/dvdspu/gstspu-vobsub.c b/gst/dvdspu/gstspu-vobsub.c
index 0a2380c..b1b76bb 100644
--- a/gst/dvdspu/gstspu-vobsub.c
+++ b/gst/dvdspu/gstspu-vobsub.c
@@ -323,13 +323,14 @@
GstBuffer * buf)
{
guint8 *start, *end;
+ gsize size;
SpuState *state = &dvdspu->spu_state;
#if DUMP_DCSQ
gst_dvd_spu_dump_dcsq (dvdspu, event_ts, buf);
#endif
- if (G_UNLIKELY (GST_BUFFER_SIZE (buf) < 4))
+ if (G_UNLIKELY (gst_buffer_get_size (buf) < 4))
goto invalid;
if (state->vobsub.buf != NULL) {
@@ -339,8 +340,8 @@
state->vobsub.buf = buf;
state->vobsub.base_ts = event_ts;
- start = GST_BUFFER_DATA (state->vobsub.buf);
- end = start + GST_BUFFER_SIZE (state->vobsub.buf);
+ start = gst_buffer_map (state->vobsub.buf, &size, NULL, GST_MAP_READ);
+ end = start + size;
/* Configure the first command block in this buffer as our initial blk */
state->vobsub.cur_cmd_blk = GST_READ_UINT16_BE (start + 2);
@@ -351,6 +352,7 @@
g_free (state->vobsub.line_ctrl_i);
state->vobsub.line_ctrl_i = NULL;
}
+ gst_buffer_unmap (state->vobsub.buf, start, size);
return;
invalid:
@@ -363,6 +365,7 @@
{
guint8 *start, *cmd_blk, *end;
guint16 next_blk;
+ gsize size;
SpuState *state = &dvdspu->spu_state;
if (state->vobsub.buf == NULL)
@@ -372,12 +375,13 @@
" @ offset %u", GST_TIME_ARGS (state->next_ts),
state->vobsub.cur_cmd_blk);
- start = GST_BUFFER_DATA (state->vobsub.buf);
- end = start + GST_BUFFER_SIZE (state->vobsub.buf);
+ start = gst_buffer_map (state->vobsub.buf, &size, NULL, GST_MAP_READ);
+ end = start + size;
cmd_blk = start + state->vobsub.cur_cmd_blk;
if (G_UNLIKELY (cmd_blk + 5 >= end)) {
+ gst_buffer_unmap (state->vobsub.buf, start, size);
/* Invalid. Finish the buffer and loop again */
gst_dvd_spu_finish_spu_buf (dvdspu);
return FALSE;
@@ -392,9 +396,11 @@
} else {
/* Next Block points to the current block, so we're finished with this
* SPU buffer */
+ gst_buffer_unmap (state->vobsub.buf, start, size);
gst_dvd_spu_finish_spu_buf (dvdspu);
return FALSE;
}
+ gst_buffer_unmap (state->vobsub.buf, start, size);
return TRUE;
}
diff --git a/gst/dvdspu/gstspu-vobsub.h b/gst/dvdspu/gstspu-vobsub.h
index 9b4196b..1a0588c 100644
--- a/gst/dvdspu/gstspu-vobsub.h
+++ b/gst/dvdspu/gstspu-vobsub.h
@@ -103,7 +103,7 @@
void gstspu_vobsub_handle_new_buf (GstDVDSpu * dvdspu, GstClockTime event_ts, GstBuffer *buf);
gboolean gstspu_vobsub_execute_event (GstDVDSpu *dvdspu);
-void gstspu_vobsub_render (GstDVDSpu *dvdspu, GstBuffer *buf);
+void gstspu_vobsub_render (GstDVDSpu *dvdspu, GstVideoFrame *frame);
gboolean gstspu_vobsub_handle_dvd_event (GstDVDSpu *dvdspu, GstEvent *event);
void gstspu_vobsub_flush (GstDVDSpu *dvdspu);
diff --git a/gst/fieldanalysis/gstfieldanalysis.c b/gst/fieldanalysis/gstfieldanalysis.c
index 3cfd5c8..bc6e4c5 100644
--- a/gst/fieldanalysis/gstfieldanalysis.c
+++ b/gst/fieldanalysis/gstfieldanalysis.c
@@ -1601,7 +1601,7 @@
&& telecine_matches & FIELD_ANALYSIS_BOTTOM_TOP)) {
/* held is opposite to matched => need both field from prev */
/* if t_b, hold bottom from prev and top from current, else vice-versa */
- res1->holding = 1 + ! !(telecine_matches & FIELD_ANALYSIS_TOP_BOTTOM);
+ res1->holding = 1 + !!(telecine_matches & FIELD_ANALYSIS_TOP_BOTTOM);
res0->holding = 1 + !(telecine_matches & FIELD_ANALYSIS_TOP_BOTTOM);
/* push prev TCM */
outbuf =
diff --git a/gst/id3tag/id3tag.c b/gst/id3tag/id3tag.c
index 3a0e4d4..fc69a49 100644
--- a/gst/id3tag/id3tag.c
+++ b/gst/id3tag/id3tag.c
@@ -483,7 +483,7 @@
GstBuffer *buf;
val = gst_tag_list_get_value_index (list, tag, i);
- buf = (GstBuffer *) gst_value_get_mini_object (val);
+ buf = gst_value_get_buffer (val);
if (buf && GST_BUFFER_CAPS (buf)) {
GstStructure *s;
@@ -693,7 +693,7 @@
GST_DEBUG ("image %u/%u", n + 1, num_tags);
val = gst_tag_list_get_value_index (list, tag, n);
- image = (GstBuffer *) gst_value_get_mini_object (val);
+ image = gst_value_get_buffer (val);
if (GST_IS_BUFFER (image) && GST_BUFFER_SIZE (image) > 0 &&
GST_BUFFER_CAPS (image) != NULL &&
diff --git a/gst/jp2kdecimator/jp2kcodestream.c b/gst/jp2kdecimator/jp2kcodestream.c
index 6fb2878..cbff654 100644
--- a/gst/jp2kdecimator/jp2kcodestream.c
+++ b/gst/jp2kdecimator/jp2kcodestream.c
@@ -413,8 +413,8 @@
it->n_layers = (tile->cod) ? tile->cod->n_layers : header->cod.n_layers;
it->n_resolutions =
1 +
- ((tile->cod) ? tile->cod->n_decompositions : header->
- cod.n_decompositions);
+ ((tile->cod) ? tile->cod->n_decompositions : header->cod.
+ n_decompositions);
it->n_components = header->siz.n_components;
it->tx0 = tile->tx0;
@@ -457,8 +457,8 @@
}
order =
- (tile->cod) ? tile->cod->progression_order : header->
- cod.progression_order;
+ (tile->cod) ? tile->cod->progression_order : header->cod.
+ progression_order;
if (order == PROGRESSION_ORDER_LRCP) {
it->next = packet_iterator_next_lrcp;
} else if (order == PROGRESSION_ORDER_RLCP) {
@@ -574,8 +574,8 @@
}
Scod = gst_byte_reader_get_uint8_unchecked (reader);
- cod->sop = ! !(Scod & 0x02);
- cod->eph = ! !(Scod & 0x04);
+ cod->sop = !!(Scod & 0x02);
+ cod->eph = !!(Scod & 0x04);
/* SGcod */
cod->progression_order = gst_byte_reader_get_uint8_unchecked (reader);
@@ -642,8 +642,8 @@
/* Scod */
tmp =
- (cod->PPx ? 0x01 : 0x00) | (cod->
- sop ? 0x02 : 0x00) | (cod->eph ? 0x04 : 0x00);
+ (cod->PPx ? 0x01 : 0x00) | (cod->sop ? 0x02 : 0x00) | (cod->
+ eph ? 0x04 : 0x00);
gst_byte_writer_put_uint8_unchecked (writer, tmp);
/* SGcod */
diff --git a/gst/jpegformat/gstjifmux.c b/gst/jpegformat/gstjifmux.c
index 9bfcfc8..b9552b1 100644
--- a/gst/jpegformat/gstjifmux.c
+++ b/gst/jpegformat/gstjifmux.c
@@ -114,39 +114,10 @@
static GstStateChangeReturn gst_jif_mux_change_state (GstElement * element,
GstStateChange transition);
-
-static void
-gst_jif_type_init (GType type)
-{
- static const GInterfaceInfo tag_setter_info = { NULL, NULL, NULL };
- static const GInterfaceInfo tag_xmp_writer_info = { NULL, NULL, NULL };
-
- g_type_add_interface_static (type, GST_TYPE_TAG_SETTER, &tag_setter_info);
- g_type_add_interface_static (type, GST_TYPE_TAG_XMP_WRITER,
- &tag_xmp_writer_info);
-
- GST_DEBUG_CATEGORY_INIT (jif_mux_debug, "jifmux", 0,
- "JPEG interchange format muxer");
-}
-
-GST_BOILERPLATE_FULL (GstJifMux, gst_jif_mux, GstElement, GST_TYPE_ELEMENT,
- gst_jif_type_init);
-
-static void
-gst_jif_mux_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_jif_mux_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_jif_mux_sink_pad_template));
- gst_element_class_set_details_simple (element_class,
- "JPEG stream muxer",
- "Video/Formatter",
- "Remuxes JPEG images with markers and tags",
- "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
-}
+#define gst_jif_mux_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstJifMux, gst_jif_mux, GST_TYPE_ELEMENT,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_SETTER, NULL);
+ G_IMPLEMENT_INTERFACE (GST_TYPE_TAG_XMP_WRITER, NULL));
static void
gst_jif_mux_class_init (GstJifMuxClass * klass)
@@ -159,13 +130,27 @@
g_type_class_add_private (gobject_class, sizeof (GstJifMuxPrivate));
+ gobject_class->finalize = gst_jif_mux_finalize;
+
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_jif_mux_change_state);
- gobject_class->finalize = gst_jif_mux_finalize;
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_jif_mux_src_pad_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_jif_mux_sink_pad_template));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "JPEG stream muxer",
+ "Video/Formatter",
+ "Remuxes JPEG images with markers and tags",
+ "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
+
+ GST_DEBUG_CATEGORY_INIT (jif_mux_debug, "jifmux", 0,
+ "JPEG interchange format muxer");
}
static void
-gst_jif_mux_init (GstJifMux * self, GstJifMuxClass * g_class)
+gst_jif_mux_init (GstJifMux * self)
{
GstPad *sinkpad;
@@ -176,8 +161,6 @@
sinkpad = gst_pad_new_from_static_template (&gst_jif_mux_sink_pad_template,
"sink");
gst_pad_set_chain_function (sinkpad, GST_DEBUG_FUNCPTR (gst_jif_mux_chain));
- gst_pad_set_setcaps_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_jif_mux_sink_setcaps));
gst_pad_set_event_function (sinkpad,
GST_DEBUG_FUNCPTR (gst_jif_mux_sink_event));
gst_element_add_pad (GST_ELEMENT (self), sinkpad);
@@ -219,6 +202,15 @@
gboolean ret;
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ ret = gst_jif_mux_sink_setcaps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_TAG:{
GstTagList *list;
GstTagSetter *setter = GST_TAG_SETTER (self);
@@ -227,12 +219,14 @@
gst_event_parse_tag (event, &list);
gst_tag_setter_merge_tags (setter, list, mode);
+
+ ret = gst_pad_event_default (pad, event);
break;
}
default:
+ ret = gst_pad_event_default (pad, event);
break;
}
- ret = gst_pad_event_default (pad, event);
return ret;
}
@@ -276,13 +270,18 @@
static gboolean
gst_jif_mux_parse_image (GstJifMux * self, GstBuffer * buf)
{
- GstByteReader reader = GST_BYTE_READER_INIT_FROM_BUFFER (buf);
+ GstByteReader reader;
GstJifMuxMarker *m;
guint8 marker = 0;
guint16 size = 0;
const guint8 *data = NULL;
+ guint8 *bdata;
+ gsize bsize;
- GST_LOG_OBJECT (self, "Received buffer of size: %u", GST_BUFFER_SIZE (buf));
+ bdata = gst_buffer_map (buf, &bsize, NULL, GST_MAP_READ);
+ gst_byte_reader_init (&reader, bdata, bsize);
+
+ GST_LOG_OBJECT (self, "Received buffer of size: %u", bsize);
if (!gst_byte_reader_peek_uint8 (&reader, &marker))
goto error;
@@ -330,21 +329,23 @@
if (marker == SOS) {
gint eoi_pos = -1;
gint i;
+ guint8 *mdata;
+ gsize msize;
/* search the last 5 bytes for the EOI marker */
- g_assert (GST_BUFFER_SIZE (buf) >= 5);
+ mdata = gst_buffer_map (buf, &msize, NULL, GST_MAP_READ);
+ g_assert (msize >= 5);
for (i = 5; i >= 2; i--) {
- if (GST_BUFFER_DATA (buf)[GST_BUFFER_SIZE (buf) - i] == 0xFF &&
- GST_BUFFER_DATA (buf)[GST_BUFFER_SIZE (buf) - i + 1] == EOI) {
- eoi_pos = GST_BUFFER_SIZE (buf) - i;
+ if (mdata[msize - i] == 0xFF && mdata[msize - i + 1] == EOI) {
+ eoi_pos = msize - i;
break;
}
}
-
if (eoi_pos == -1) {
GST_WARNING_OBJECT (self, "Couldn't find an EOI marker");
- eoi_pos = GST_BUFFER_SIZE (buf);
+ eoi_pos = msize;
}
+ gst_buffer_unmap (buf, mdata, msize);
/* remaining size except EOI is scan data */
self->priv->scan_size = eoi_pos - gst_byte_reader_get_pos (&reader);
@@ -359,17 +360,23 @@
goto error;
}
GST_INFO_OBJECT (self, "done parsing at 0x%x / 0x%x",
- gst_byte_reader_get_pos (&reader), GST_BUFFER_SIZE (buf));
+ gst_byte_reader_get_pos (&reader), bsize);
done:
self->priv->markers = g_list_reverse (self->priv->markers);
+ gst_buffer_unmap (buf, bdata, bsize);
+
return TRUE;
+ /* ERRORS */
error:
- GST_WARNING_OBJECT (self,
- "Error parsing image header (need more that %u bytes available)",
- gst_byte_reader_get_remaining (&reader));
- return FALSE;
+ {
+ GST_WARNING_OBJECT (self,
+ "Error parsing image header (need more that %u bytes available)",
+ gst_byte_reader_get_remaining (&reader));
+ gst_buffer_unmap (buf, bdata, bsize);
+ return FALSE;
+ }
}
static gboolean
@@ -531,25 +538,25 @@
/* Add EXIF */
{
GstBuffer *exif_data;
+ gsize exif_size;
guint8 *data;
GstJifMuxMarker *m;
GList *pos;
/* insert into self->markers list */
exif_data = gst_tag_list_to_exif_buffer_with_tiff_header (tags);
- if (exif_data &&
- GST_BUFFER_SIZE (exif_data) + 8 >= G_GUINT64_CONSTANT (65536)) {
+ exif_size = exif_data ? gst_buffer_get_size (exif_data) : 0;
+
+ if (exif_data && exif_size + 8 >= G_GUINT64_CONSTANT (65536)) {
GST_WARNING_OBJECT (self, "Exif tags data size exceed maximum size");
gst_buffer_unref (exif_data);
exif_data = NULL;
}
if (exif_data) {
- data = g_malloc0 (GST_BUFFER_SIZE (exif_data) + 6);
+ data = g_malloc0 (exif_size + 6);
memcpy (data, "Exif", 4);
- memcpy (data + 6, GST_BUFFER_DATA (exif_data),
- GST_BUFFER_SIZE (exif_data));
- m = gst_jif_mux_new_marker (APP1, GST_BUFFER_SIZE (exif_data) + 6, data,
- TRUE);
+ gst_buffer_extract (exif_data, 0, data + 6, exif_size);
+ m = gst_jif_mux_new_marker (APP1, exif_size + 6, data, TRUE);
gst_buffer_unref (exif_data);
if (app1_exif) {
@@ -578,13 +585,14 @@
gst_tag_xmp_writer_tag_list_to_xmp_buffer (GST_TAG_XMP_WRITER (self),
tags, FALSE);
if (xmp_data) {
- guint8 *data, *xmp = GST_BUFFER_DATA (xmp_data);
- guint size = GST_BUFFER_SIZE (xmp_data);
+ guint8 *data;
+ gsize size;
GList *pos;
+ size = gst_buffer_get_size (xmp_data);
data = g_malloc (size + 29);
memcpy (data, "http://ns.adobe.com/xap/1.0/\0", 29);
- memcpy (&data[29], xmp, size);
+ gst_buffer_extract (xmp_data, 0, &data[29], size);
m = gst_jif_mux_new_marker (APP1, size + 29, data, TRUE);
/*
@@ -640,11 +648,12 @@
{
GstBuffer *buf;
GstByteWriter *writer;
- GstFlowReturn fret;
GstJifMuxMarker *m;
GList *node;
guint size = self->priv->scan_size;
gboolean writer_status = TRUE;
+ guint8 *bdata;
+ gsize bsize;
/* iterate list and collect size */
for (node = self->priv->markers; node; node = g_list_next (node)) {
@@ -658,21 +667,19 @@
size += 2;
}
GST_INFO_OBJECT (self, "old size: %u, new size: %u",
- GST_BUFFER_SIZE (old_buf), size);
+ gst_buffer_get_size (old_buf), size);
/* allocate new buffer */
- fret = gst_pad_alloc_buffer_and_set_caps (self->priv->srcpad,
- GST_BUFFER_OFFSET (old_buf), size, GST_PAD_CAPS (self->priv->srcpad),
- &buf);
- if (fret != GST_FLOW_OK)
- goto no_buffer;
+ buf = gst_buffer_new_allocate (NULL, size, 0);
/* copy buffer metadata */
- gst_buffer_copy_metadata (buf, old_buf,
- GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS);
+ gst_buffer_copy_into (buf, old_buf,
+ GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
/* memcopy markers */
- writer = gst_byte_writer_new_with_buffer (buf, TRUE);
+ bdata = gst_buffer_map (buf, &bsize, NULL, GST_MAP_WRITE);
+ writer = gst_byte_writer_new_with_data (bdata, bsize, TRUE);
+
for (node = self->priv->markers; node && writer_status;
node = g_list_next (node)) {
m = (GstJifMuxMarker *) node->data;
@@ -694,6 +701,7 @@
self->priv->scan_size);
}
}
+ gst_buffer_unmap (buf, bdata, bsize);
gst_byte_writer_free (writer);
if (!writer_status) {
@@ -704,11 +712,6 @@
*new_buf = buf;
return GST_FLOW_OK;
-
-no_buffer:
- GST_WARNING_OBJECT (self, "failed to allocate output buffer, flow_ret = %s",
- gst_flow_get_name (fret));
- return fret;
}
static GstFlowReturn
@@ -717,15 +720,11 @@
GstJifMux *self = GST_JIF_MUX (GST_PAD_PARENT (pad));
GstFlowReturn fret = GST_FLOW_OK;
- if (GST_BUFFER_CAPS (buf) == NULL) {
- GST_WARNING_OBJECT (self, "Rejecting buffer without caps");
- gst_buffer_unref (buf);
- return GST_FLOW_NOT_NEGOTIATED;
- }
-
+#if 0
GST_MEMDUMP ("jpeg beg", GST_BUFFER_DATA (buf), 64);
GST_MEMDUMP ("jpeg end", GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf) - 64,
64);
+#endif
/* we should have received a whole picture from SOI to EOI
* build a list of markers */
diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
index 64b16ae..fd977dc 100644
--- a/gst/jpegformat/gstjpegparse.c
+++ b/gst/jpegformat/gstjpegparse.c
@@ -59,7 +59,7 @@
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("image/jpeg, "
- "format = (fourcc) { I420, Y41B, UYVY, YV12 }, "
+ "format = (string) { I420, Y41B, UYVY, YV12 }, "
"width = (int) [ 0, MAX ],"
"height = (int) [ 0, MAX ], "
"interlaced = (boolean) { true, false }, "
@@ -99,8 +99,8 @@
/* TRUE if the image is interlaced */
gboolean interlaced;
- /* fourcc color space */
- guint32 fourcc;
+ /* format color space */
+ const gchar *format;
/* TRUE if the src caps sets a specific framerate */
gboolean has_fps;
@@ -124,31 +124,12 @@
static GstFlowReturn gst_jpeg_parse_chain (GstPad * pad, GstBuffer * buffer);
static gboolean gst_jpeg_parse_sink_setcaps (GstPad * pad, GstCaps * caps);
static gboolean gst_jpeg_parse_sink_event (GstPad * pad, GstEvent * event);
-static GstCaps *gst_jpeg_parse_src_getcaps (GstPad * pad);
+static GstCaps *gst_jpeg_parse_src_getcaps (GstPad * pad, GstCaps * filter);
static GstStateChangeReturn gst_jpeg_parse_change_state (GstElement * element,
GstStateChange transition);
-#define _do_init(bla) \
- GST_DEBUG_CATEGORY_INIT (jpeg_parse_debug, "jpegparse", 0, "JPEG parser");
-
-GST_BOILERPLATE_FULL (GstJpegParse, gst_jpeg_parse, GstElement,
- GST_TYPE_ELEMENT, _do_init);
-
-static void
-gst_jpeg_parse_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_jpeg_parse_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_jpeg_parse_sink_pad_template));
- gst_element_class_set_details_simple (element_class,
- "JPEG stream parser",
- "Video/Parser",
- "Parse JPEG images into single-frame buffers",
- "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
-}
+#define gst_jpeg_parse_parent_class parent_class
+G_DEFINE_TYPE (GstJpegParse, gst_jpeg_parse, GST_TYPE_ELEMENT);
static void
gst_jpeg_parse_class_init (GstJpegParseClass * klass)
@@ -164,10 +145,23 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_jpeg_parse_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_jpeg_parse_src_pad_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&gst_jpeg_parse_sink_pad_template));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "JPEG stream parser",
+ "Video/Parser",
+ "Parse JPEG images into single-frame buffers",
+ "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
+
+ GST_DEBUG_CATEGORY_INIT (jpeg_parse_debug, "jpegparse", 0, "JPEG parser");
}
static void
-gst_jpeg_parse_init (GstJpegParse * parse, GstJpegParseClass * g_class)
+gst_jpeg_parse_init (GstJpegParse * parse)
{
GstPad *sinkpad;
@@ -181,8 +175,6 @@
GST_DEBUG_FUNCPTR (gst_jpeg_parse_chain));
gst_pad_set_event_function (sinkpad,
GST_DEBUG_FUNCPTR (gst_jpeg_parse_sink_event));
- gst_pad_set_setcaps_function (sinkpad,
- GST_DEBUG_FUNCPTR (gst_jpeg_parse_sink_setcaps));
gst_element_add_pad (GST_ELEMENT (parse), sinkpad);
parse->priv->srcpad =
@@ -234,12 +226,11 @@
}
static GstCaps *
-gst_jpeg_parse_src_getcaps (GstPad * pad)
+gst_jpeg_parse_src_getcaps (GstPad * pad, GstCaps * filter)
{
GstCaps *result;
- if ((result = GST_PAD_CAPS (pad))) {
- result = gst_caps_ref (result);
+ if ((result = gst_pad_get_current_caps (pad))) {
GST_DEBUG_OBJECT (pad, "using pad caps %" GST_PTR_FORMAT, result);
} else {
result = gst_caps_ref (GST_PAD_TEMPLATE_CAPS (GST_PAD_PAD_TEMPLATE (pad)));
@@ -487,21 +478,21 @@
}
if (numcomps == 1) {
- /* gray image - no fourcc */
- parse->priv->fourcc = 0;
+ /* gray image - no format */
+ parse->priv->format = "";
} else if (numcomps == 3) {
temp = (blockWidth[0] * blockHeight[0]) / (blockWidth[1] * blockHeight[1]);
if (temp == 4 && blockHeight[0] == 2)
- parse->priv->fourcc = GST_MAKE_FOURCC ('I', '4', '2', '0');
+ parse->priv->format = "I420";
else if (temp == 4 && blockHeight[0] == 4)
- parse->priv->fourcc = GST_MAKE_FOURCC ('Y', '4', '1', 'B');
+ parse->priv->format = "Y41B";
else if (temp == 2)
- parse->priv->fourcc = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y');
+ parse->priv->format = "UYVY";
else if (temp == 1)
- parse->priv->fourcc = GST_MAKE_FOURCC ('Y', 'V', '1', '2');
+ parse->priv->format = "YV12";
else
- parse->priv->fourcc = 0;
+ parse->priv->format = "";
} else {
return FALSE;
}
@@ -517,7 +508,8 @@
{
guint16 size = 0;
guint pos = gst_byte_reader_get_pos (reader);
- guint8 *data = GST_BUFFER_DATA (buffer);
+ guint8 *data;
+ gsize bsize;
if (!gst_byte_reader_peek_uint16_be (reader, &size))
return FALSE;
@@ -526,9 +518,9 @@
GST_LOG_OBJECT (parse, "unhandled marker %x removing %u bytes", marker, size);
- memmove (&data[pos], &data[pos + size],
- GST_BUFFER_SIZE (buffer) - (pos + size));
- GST_BUFFER_SIZE (buffer) -= size;
+ data = gst_buffer_map (buffer, &bsize, NULL, GST_MAP_READWRITE);
+ memmove (&data[pos], &data[pos + size], bsize - (pos + size));
+ gst_buffer_unmap (buffer, data, bsize - size);
if (!gst_byte_reader_set_pos (reader, pos - size))
return FALSE;
@@ -579,14 +571,12 @@
static inline void
extract_and_queue_tags (GstJpegParse * parse, guint size, guint8 * data,
- GstTagList * (*tag_func) (const GstBuffer * buff))
+ GstTagList * (*tag_func) (GstBuffer * buff))
{
GstTagList *tags;
GstBuffer *buf;
- buf = gst_buffer_new ();
- GST_BUFFER_DATA (buf) = data;
- GST_BUFFER_SIZE (buf) = size;
+ buf = gst_buffer_new_wrapped_full (data, NULL, 0, size);
tags = tag_func (buf);
gst_buffer_unref (buf);
@@ -702,9 +692,14 @@
static gboolean
gst_jpeg_parse_read_header (GstJpegParse * parse, GstBuffer * buffer)
{
- GstByteReader reader = GST_BYTE_READER_INIT_FROM_BUFFER (buffer);
+ GstByteReader reader;
guint8 marker = 0;
gboolean foundSOF = FALSE;
+ guint8 *data;
+ gsize size;
+
+ data = gst_buffer_map (buffer, &size, NULL, GST_MAP_READ);
+ gst_byte_reader_init (&reader, data, size);
if (!gst_byte_reader_peek_uint8 (&reader, &marker))
goto error;
@@ -720,7 +715,7 @@
switch (marker) {
case SOS: /* start of scan (begins compressed data) */
- return foundSOF;
+ goto done;
case SOI:
break;
@@ -751,12 +746,12 @@
parse->priv->interlaced = TRUE;
/* fall through */
case SOF0:
- foundSOF = TRUE;
/* parse Start Of Frame */
if (!gst_jpeg_parse_sof (parse, &reader))
goto error;
- return TRUE;
+ foundSOF = TRUE;
+ goto done;
default:
if (marker == JPG || (marker >= JPG0 && marker <= JPG13)) {
@@ -766,25 +761,35 @@
} else if (marker >= APP0 && marker <= APP15) {
if (!gst_jpeg_parse_skip_marker (parse, &reader, marker))
goto error;
- } else {
- GST_WARNING_OBJECT (parse, "unhandled marker %x, leaving", marker);
- /* Not SOF or SOI. Must not be a JPEG file (or file pointer
- * is placed wrong). In either case, it's an error. */
- return FALSE;
- }
+ } else
+ goto unhandled;
}
if (!gst_byte_reader_peek_uint8 (&reader, &marker))
goto error;
}
+done:
+ gst_buffer_unmap (buffer, data, size);
return foundSOF;
+ /* ERRORS */
error:
- GST_WARNING_OBJECT (parse,
- "Error parsing image header (need more than %u bytes available)",
- gst_byte_reader_get_remaining (&reader));
- return FALSE;
+ {
+ GST_WARNING_OBJECT (parse,
+ "Error parsing image header (need more than %u bytes available)",
+ gst_byte_reader_get_remaining (&reader));
+ gst_buffer_unmap (buffer, data, size);
+ return FALSE;
+ }
+unhandled:
+ {
+ GST_WARNING_OBJECT (parse, "unhandled marker %x, leaving", marker);
+ /* Not SOF or SOI. Must not be a JPEG file (or file pointer
+ * is placed wrong). In either case, it's an error. */
+ gst_buffer_unmap (buffer, data, size);
+ return FALSE;
+ }
}
static gboolean
@@ -801,7 +806,7 @@
if (header_ok == TRUE) {
gst_caps_set_simple (caps,
- "format", GST_TYPE_FOURCC, parse->priv->fourcc,
+ "format", G_TYPE_STRING, parse->priv->format,
"interlaced", G_TYPE_BOOLEAN, parse->priv->interlaced,
"width", G_TYPE_INT, parse->priv->width,
"height", G_TYPE_INT, parse->priv->height, NULL);
@@ -896,8 +901,6 @@
GST_BUFFER_DURATION (outbuf) = parse->priv->duration;
- gst_buffer_set_caps (outbuf, GST_PAD_CAPS (parse->priv->srcpad));
-
GST_LOG_OBJECT (parse, "pushing buffer (ts=%" GST_TIME_FORMAT ", len=%u)",
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)), len);
@@ -957,6 +960,15 @@
GST_DEBUG_OBJECT (parse, "event : %s", GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+
+ gst_event_parse_caps (event, &caps);
+ res = gst_jpeg_parse_sink_setcaps (pad, caps);
+ gst_event_unref (event);
+ break;
+ }
case GST_EVENT_FLUSH_STOP:
parse->priv->next_ts = GST_CLOCK_TIME_NONE;
parse->priv->last_offset = 0;
@@ -972,7 +984,7 @@
res = gst_pad_push_event (parse->priv->srcpad, event);
break;
}
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
/* Discard any data in the adapter. There should have been an EOS before
* to flush it. */
gst_adapter_clear (parse->priv->adapter);
diff --git a/gst/mpeg4videoparse/mpeg4videoparse.c b/gst/mpeg4videoparse/mpeg4videoparse.c
index 3040b61..06caf6c 100644
--- a/gst/mpeg4videoparse/mpeg4videoparse.c
+++ b/gst/mpeg4videoparse/mpeg4videoparse.c
@@ -61,8 +61,8 @@
PROP_LAST
};
-GST_BOILERPLATE (GstMpeg4VParse, gst_mpeg4vparse, GstBaseParse,
- GST_TYPE_BASE_PARSE);
+#define gst_mpeg4vparse_parent_class parent_class
+G_DEFINE_TYPE (GstMpeg4VParse, gst_mpeg4vparse, GST_TYPE_BASE_PARSE);
static gboolean gst_mpeg4vparse_start (GstBaseParse * parse);
static gboolean gst_mpeg4vparse_stop (GstBaseParse * parse);
@@ -80,22 +80,6 @@
GValue * value, GParamSpec * pspec);
static void
-gst_mpeg4vparse_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-
- gst_element_class_set_details_simple (element_class,
- "MPEG 4 video elementary stream parser", "Codec/Parser/Video",
- "Parses MPEG-4 Part 2 elementary video streams",
- "Julien Moutte <julien@fluendo.com>");
-}
-
-static void
gst_mpeg4vparse_set_property (GObject * object, guint property_id,
const GValue * value, GParamSpec * pspec)
{
@@ -135,6 +119,7 @@
gst_mpeg4vparse_class_init (GstMpeg4VParseClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
@@ -156,6 +141,16 @@
0, 3600, DEFAULT_CONFIG_INTERVAL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&src_template));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sink_template));
+
+ gst_element_class_set_details_simple (gstelement_class,
+ "MPEG 4 video elementary stream parser", "Codec/Parser/Video",
+ "Parses MPEG-4 Part 2 elementary video streams",
+ "Julien Moutte <julien@fluendo.com>");
+
/* Override BaseParse vfuncs */
parse_class->start = GST_DEBUG_FUNCPTR (gst_mpeg4vparse_start);
parse_class->stop = GST_DEBUG_FUNCPTR (gst_mpeg4vparse_stop);
@@ -168,7 +163,7 @@
}
static void
-gst_mpeg4vparse_init (GstMpeg4VParse * parse, GstMpeg4VParseClass * g_class)
+gst_mpeg4vparse_init (GstMpeg4VParse * parse)
{
parse->interval = DEFAULT_CONFIG_INTERVAL;
parse->last_report = GST_CLOCK_TIME_NONE;
@@ -226,8 +221,8 @@
gsize size)
{
/* only do stuff if something new */
- if (mp4vparse->config && size == GST_BUFFER_SIZE (mp4vparse->config) &&
- memcmp (GST_BUFFER_DATA (mp4vparse->config), data, size) == 0)
+ if (mp4vparse->config && size == gst_buffer_get_size (mp4vparse->config) &&
+ gst_buffer_memcmp (mp4vparse->config, 0, data, size) == 0)
return TRUE;
if (!gst_mpeg4_params_parse_config (&mp4vparse->params, data, size)) {
@@ -244,7 +239,7 @@
gst_buffer_unref (mp4vparse->config);
mp4vparse->config = gst_buffer_new_and_alloc (size);
- memcpy (GST_BUFFER_DATA (mp4vparse->config), data, size);
+ gst_buffer_fill (mp4vparse->config, 0, data, size);
/* trigger src caps update */
mp4vparse->update_caps = TRUE;
@@ -258,11 +253,12 @@
gint off)
{
guint8 *data;
+ gsize size;
guint code;
- g_return_val_if_fail (buf && GST_BUFFER_SIZE (buf) >= off + 4, FALSE);
+ g_return_val_if_fail (buf && gst_buffer_get_size (buf) >= off + 4, FALSE);
- data = GST_BUFFER_DATA (buf);
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
code = data[off + 3];
GST_LOG_OBJECT (mp4vparse, "process startcode %x", code);
@@ -270,7 +266,7 @@
/* if we found a VOP, next start code ends it,
* except for final VOS end sequence code included in last VOP-frame */
if (mp4vparse->vop_offset >= 0 && code != MPEG4_VOS_ENDCODE) {
- if (G_LIKELY (GST_BUFFER_SIZE (buf) > mp4vparse->vop_offset + 4)) {
+ if (G_LIKELY (size > mp4vparse->vop_offset + 4)) {
mp4vparse->intra_frame =
((data[mp4vparse->vop_offset + 4] >> 6 & 0x3) == 0);
} else {
@@ -279,6 +275,7 @@
}
GST_LOG_OBJECT (mp4vparse, "ending frame of size %d, is intra %d", off,
mp4vparse->intra_frame);
+ gst_buffer_unmap (buf, data, size);
return TRUE;
}
@@ -300,7 +297,7 @@
offset = mp4vparse->vos_offset >= 0 ?
mp4vparse->vos_offset : mp4vparse->vo_offset;
if (offset >= 0) {
- gst_mpeg4vparse_process_config (mp4vparse, GST_BUFFER_DATA (buf), off);
+ gst_mpeg4vparse_process_config (mp4vparse, data, off);
/* avoid accepting again for a VOP sc following a GOP sc */
mp4vparse->vos_offset = -1;
mp4vparse->vo_offset = -1;
@@ -319,6 +316,7 @@
}
break;
}
+ gst_buffer_unmap (buf, data, size);
/* at least need to have a VOP in a frame */
return FALSE;
@@ -334,15 +332,20 @@
{
GstMpeg4VParse *mp4vparse = GST_MPEG4VIDEOPARSE (parse);
GstBuffer *buf = frame->buffer;
- GstByteReader reader = GST_BYTE_READER_INIT_FROM_BUFFER (buf);
+ GstByteReader reader;
gint off = 0;
- gboolean ret;
+ gboolean ret = FALSE;
guint code;
+ guint8 *data;
+ gsize size;
+
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
+ gst_byte_reader_init (&reader, data, size);
retry:
/* at least start code and subsequent byte */
- if (G_UNLIKELY (GST_BUFFER_SIZE (buf) - off < 5))
- return FALSE;
+ if (G_UNLIKELY (size - off < 5))
+ goto done;
/* avoid stale cached parsing state */
if (!(frame->flags & GST_BASE_PARSE_FRAME_FLAG_PARSING)) {
@@ -360,24 +363,24 @@
}
off = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffff00, 0x00000100,
- off, GST_BUFFER_SIZE (buf) - off);
+ off, size - off);
GST_LOG_OBJECT (mp4vparse, "possible sync at buffer offset %d", off);
/* didn't find anything that looks like a sync word, skip */
if (G_UNLIKELY (off < 0)) {
- *skipsize = GST_BUFFER_SIZE (buf) - 3;
- return FALSE;
+ *skipsize = size - 3;
+ goto done;
}
/* possible frame header, but not at offset 0? skip bytes before sync */
if (G_UNLIKELY (off > 0)) {
*skipsize = off;
- return FALSE;
+ goto done;
}
/* ensure start code looks like a real starting start code */
- code = GST_BUFFER_DATA (buf)[3];
+ code = data[3];
switch (code) {
case MPEG4_VOP_STARTCODE:
case MPEG4_VOS_STARTCODE:
@@ -405,20 +408,20 @@
off++;
/* so now we have start code at start of data; locate next start code */
off = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffff00, 0x00000100,
- off, GST_BUFFER_SIZE (buf) - off);
+ off, size - off);
GST_LOG_OBJECT (mp4vparse, "next start code at %d", off);
if (off < 0) {
/* if draining, take all */
if (GST_BASE_PARSE_DRAINING (parse)) {
- off = GST_BUFFER_SIZE (buf);
+ off = size;
ret = TRUE;
} else {
/* resume scan where we left it */
- mp4vparse->last_sc = GST_BUFFER_SIZE (buf) - 4;
+ mp4vparse->last_sc = size - 4;
/* request best next available */
*framesize = G_MAXUINT;
- return FALSE;
+ goto done;
}
} else {
/* decide whether this startcode ends a frame */
@@ -431,6 +434,9 @@
goto next;
}
+done:
+ gst_buffer_unmap (buf, data, size);
+
return ret;
}
@@ -440,14 +446,14 @@
GstCaps *caps = NULL;
/* only update if no src caps yet or explicitly triggered */
- if (G_LIKELY (GST_PAD_CAPS (GST_BASE_PARSE_SRC_PAD (mp4vparse)) &&
+ if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mp4vparse)) &&
!mp4vparse->update_caps))
return;
/* carry over input caps as much as possible; override with our own stuff */
- caps = GST_PAD_CAPS (GST_BASE_PARSE_SINK_PAD (mp4vparse));
+ caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (mp4vparse));
if (caps) {
- caps = gst_caps_copy (caps);
+ caps = gst_caps_make_writable (caps);
} else {
caps = gst_caps_new_simple ("video/mpeg",
"mpegversion", G_TYPE_INT, 4, NULL);
@@ -521,6 +527,20 @@
return GST_FLOW_OK;
}
+static gint
+compare_buffers (GstBuffer * buf1, GstBuffer * buf2)
+{
+ gpointer data;
+ gsize size;
+ gint ret;
+
+ data = gst_buffer_map (buf2, &size, NULL, GST_MAP_READ);
+ ret = gst_buffer_memcmp (buf1, 0, data, size);
+ gst_buffer_unmap (buf2, data, size);
+
+ return ret;
+}
+
static GstFlowReturn
gst_mpeg4vparse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
{
@@ -555,15 +575,14 @@
GST_LOG_OBJECT (parse, "inserting config in stream");
/* avoid inserting duplicate config */
- if ((GST_BUFFER_SIZE (buffer) < GST_BUFFER_SIZE (mp4vparse->config)) ||
- memcmp (GST_BUFFER_DATA (buffer),
- GST_BUFFER_DATA (mp4vparse->config),
- GST_BUFFER_SIZE (mp4vparse->config))) {
+ if ((gst_buffer_get_size (buffer) <
+ gst_buffer_get_size (mp4vparse->config))
+ || compare_buffers (buffer, mp4vparse->config)) {
GstBuffer *superbuf;
/* insert header */
superbuf = gst_buffer_merge (mp4vparse->config, buffer);
- gst_buffer_copy_metadata (superbuf, buffer, GST_BUFFER_COPY_ALL);
+ gst_buffer_copy_into (superbuf, buffer, GST_BUFFER_COPY_ALL, 0, -1);
gst_buffer_replace (&frame->buffer, superbuf);
gst_buffer_unref (superbuf);
} else {
@@ -594,11 +613,15 @@
if ((value = gst_structure_get_value (s, "codec_data")) != NULL
&& (buf = gst_value_get_buffer (value))) {
+ guint8 *data;
+ gsize size;
+
+ data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
/* best possible parse attempt,
* src caps are based on sink caps so it will end up in there
* whether sucessful or not */
- gst_mpeg4vparse_process_config (mp4vparse, GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf));
+ gst_mpeg4vparse_process_config (mp4vparse, data, size);
+ gst_buffer_unmap (buf, data, size);
}
/* let's not interfere and accept regardless of config parsing success */
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 437af9d..ae76dc5 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -84,15 +84,26 @@
static gboolean mpegts_base_sink_event (GstPad * pad, GstEvent * event);
static GstStateChangeReturn mpegts_base_change_state (GstElement * element,
GstStateChange transition);
-static void _extra_init (GType type);
+
static void mpegts_base_get_tags_from_sdt (MpegTSBase * base,
GstStructure * sdt_info);
static void mpegts_base_get_tags_from_eit (MpegTSBase * base,
GstStructure * eit_info);
-GST_BOILERPLATE_FULL (MpegTSBase, mpegts_base, GstElement, GST_TYPE_ELEMENT,
- _extra_init);
+static void
+_extra_init (void)
+{
+ QUARK_PROGRAMS = g_quark_from_string ("programs");
+ QUARK_PROGRAM_NUMBER = g_quark_from_string ("program-number");
+ QUARK_PID = g_quark_from_string ("pid");
+ QUARK_PCR_PID = g_quark_from_string ("pcr-pid");
+ QUARK_STREAMS = g_quark_from_string ("streams");
+ QUARK_STREAM_TYPE = g_quark_from_string ("stream-type");
+}
+#define mpegts_base_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (MpegTSBase, mpegts_base, GST_TYPE_ELEMENT,
+ _extra_init ());
static const guint32 crc_tab[256] = {
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
@@ -154,26 +165,6 @@
}
static void
-_extra_init (GType type)
-{
- QUARK_PROGRAMS = g_quark_from_string ("programs");
- QUARK_PROGRAM_NUMBER = g_quark_from_string ("program-number");
- QUARK_PID = g_quark_from_string ("pid");
- QUARK_PCR_PID = g_quark_from_string ("pcr-pid");
- QUARK_STREAMS = g_quark_from_string ("streams");
- QUARK_STREAM_TYPE = g_quark_from_string ("stream-type");
-}
-
-static void
-mpegts_base_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-}
-
-static void
mpegts_base_class_init (MpegTSBaseClass * klass)
{
GObjectClass *gobject_class;
@@ -181,13 +172,14 @@
element_class = GST_ELEMENT_CLASS (klass);
element_class->change_state = mpegts_base_change_state;
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&sink_template));
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = mpegts_base_set_property;
gobject_class->get_property = mpegts_base_get_property;
gobject_class->dispose = mpegts_base_dispose;
gobject_class->finalize = mpegts_base_finalize;
-
}
static void
@@ -227,7 +219,7 @@
}
static void
-mpegts_base_init (MpegTSBase * base, MpegTSBaseClass * klass)
+mpegts_base_init (MpegTSBase * base)
{
base->sinkpad = gst_pad_new_from_static_template (&sink_template, "sink");
gst_pad_set_activate_function (base->sinkpad, mpegts_base_sink_activate);
@@ -485,21 +477,30 @@
/* FIXME : This is being called by tsdemux::find_timestamps()
* We need to avoid re-entrant code like that */
+static gboolean
+mpegts_base_stop_program (MpegTSBase * base, MpegTSBaseProgram * program)
+{
+ MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
+
+ GST_DEBUG_OBJECT (base, "program_number : %d", program->program_number);
+
+ if (klass->program_stopped)
+ klass->program_stopped (base, program);
+
+ return TRUE;
+}
+
void
mpegts_base_remove_program (MpegTSBase * base, gint program_number)
{
MpegTSBaseProgram *program;
- MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
- GST_DEBUG_OBJECT (base, "program_number : %d", program_number);
+ program =
+ (MpegTSBaseProgram *) g_hash_table_lookup (base->programs,
+ GINT_TO_POINTER (program_number));
+ if (program)
+ mpegts_base_stop_program (base, program);
- if (klass->program_stopped) {
- program =
- (MpegTSBaseProgram *) g_hash_table_lookup (base->programs,
- GINT_TO_POINTER (program_number));
- if (program)
- klass->program_stopped (base, program);
- }
g_hash_table_remove (base->programs, GINT_TO_POINTER (program_number));
}
@@ -956,11 +957,16 @@
/* table ids 0x70 - 0x73 do not have a crc */
if (G_LIKELY (section->table_id < 0x70 || section->table_id > 0x73)) {
- if (G_UNLIKELY (mpegts_base_calc_crc32 (GST_BUFFER_DATA (section->buffer),
- GST_BUFFER_SIZE (section->buffer)) != 0)) {
+ gpointer data;
+ gsize size;
+
+ data = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+ if (G_UNLIKELY (mpegts_base_calc_crc32 (data, size) != 0)) {
+ gst_buffer_unmap (section->buffer, data, size);
GST_WARNING_OBJECT (base, "bad crc in psi pid 0x%x", section->pid);
return FALSE;
}
+ gst_buffer_unmap (section->buffer, data, size);
}
switch (section->table_id) {
@@ -1092,7 +1098,7 @@
program = mpegts_base_get_program (base, program_number);
if (program && !program->tags) {
- program->tags = gst_tag_list_new_full (GST_TAG_ARTIST,
+ program->tags = gst_tag_list_new (GST_TAG_ARTIST,
gst_structure_get_string (service, "name"), NULL);
}
}
@@ -1133,27 +1139,33 @@
gst_structure_get_uint (event, "duration", &duration);
program->event_id = event_id;
- program->tags = gst_tag_list_new_full (GST_TAG_TITLE,
+ program->tags = gst_tag_list_new (GST_TAG_TITLE,
title, GST_TAG_DURATION, duration * GST_SECOND, NULL);
}
}
}
}
-static void
+static gboolean
remove_each_program (gpointer key, MpegTSBaseProgram * program,
MpegTSBase * base)
{
/* First deactivate it */
mpegts_base_deactivate_program (base, program);
- /* Then remove it */
- mpegts_base_remove_program (base, program->program_number);
+
+ /* Then stop it */
+ mpegts_base_stop_program (base, program);
+
+ /* And tell _foreach_remove() to remove it */
+ return TRUE;
}
static gboolean
gst_mpegts_base_handle_eos (MpegTSBase * base)
{
- g_hash_table_foreach (base->programs, (GHFunc) remove_each_program, base);
+ g_hash_table_foreach_remove (base->programs, (GHRFunc) remove_each_program,
+ base);
+
/* finally remove */
return TRUE;
}
@@ -1180,30 +1192,19 @@
gst_event_type_get_name (GST_EVENT_TYPE (event)));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- gboolean update;
- gdouble rate, applied_rate;
- GstFormat format;
- gint64 start, stop, position;
+ gst_event_copy_segment (event, &base->segment);
- gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
- &format, &start, &stop, &position);
- GST_DEBUG_OBJECT (base,
- "Segment update:%d, rate:%f, applied_rate:%f, format:%s", update,
- rate, applied_rate, gst_format_get_name (format));
- GST_DEBUG_OBJECT (base,
- " start:%" G_GINT64_FORMAT ", stop:%" G_GINT64_FORMAT
- ", position:%" G_GINT64_FORMAT, start, stop, position);
- gst_segment_set_newsegment_full (&base->segment, update, rate,
- applied_rate, format, start, stop, position);
gst_event_unref (event);
+
base->in_gap = GST_CLOCK_TIME_NONE;
base->first_buf_ts = GST_CLOCK_TIME_NONE;
}
break;
case GST_EVENT_EOS:
res = gst_mpegts_base_handle_eos (base);
+ gst_event_unref (event);
break;
case GST_EVENT_FLUSH_START:
mpegts_packetizer_flush (base->packetizer);
@@ -1261,17 +1262,26 @@
}
mpegts_packetizer_push (base->packetizer, buf);
- while (((pret =
- mpegts_packetizer_next_packet (base->packetizer,
- &packet)) != PACKET_NEED_MORE) && res == GST_FLOW_OK) {
+
+ while (res == GST_FLOW_OK) {
+ pret = mpegts_packetizer_next_packet (base->packetizer, &packet);
+
+ /* If we don't have enough data, return */
+ if (G_UNLIKELY (pret == PACKET_NEED_MORE))
+ break;
+
+ /* bad header, skip the packet */
if (G_UNLIKELY (pret == PACKET_BAD))
- /* bad header, skip the packet */
goto next;
+ GST_DEBUG ("Got packet (buffer:%p)", packet.buffer);
+
/* base PSI data */
if (packet.payload != NULL && mpegts_base_is_psi (base, &packet)) {
MpegTSPacketizerSection section;
+
based = mpegts_packetizer_push_section (packetizer, &packet, §ion);
+
if (G_UNLIKELY (!based))
/* bad section data */
goto next;
@@ -1279,20 +1289,23 @@
if (G_LIKELY (section.complete)) {
/* section complete */
based = mpegts_base_handle_psi (base, §ion);
+
+ GST_DEBUG ("Unreffing section buffer %p", section.buffer);
gst_buffer_unref (section.buffer);
if (G_UNLIKELY (!based))
/* bad PSI table */
goto next;
}
+
/* we need to push section packet downstream */
res = mpegts_base_push (base, &packet, §ion);
-
} else if (MPEGTS_BIT_IS_SET (base->is_pes, packet.pid)) {
/* push the packet downstream */
res = mpegts_base_push (base, &packet, NULL);
- } else
+ } else {
gst_buffer_unref (packet.buffer);
+ }
next:
mpegts_packetizer_clear_packet (base->packetizer, &packet);
@@ -1349,6 +1362,7 @@
ret = GST_FLOW_ERROR;
beach:
+ GST_DEBUG ("Returning %s", gst_flow_get_name (ret));
mpegts_packetizer_clear (base->packetizer);
return ret;
@@ -1382,7 +1396,7 @@
100 * base->packetsize, &buf);
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error;
- base->seek_offset += GST_BUFFER_SIZE (buf);
+ base->seek_offset += gst_buffer_get_size (buf);
ret = mpegts_base_chain (base->sinkpad, buf);
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto error;
@@ -1398,6 +1412,7 @@
error:
{
const gchar *reason = gst_flow_get_name (ret);
+
GST_DEBUG_OBJECT (base, "Pausing task, reason %s", reason);
if (ret == GST_FLOW_UNEXPECTED)
GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, gst_event_new_eos ());
@@ -1477,7 +1492,7 @@
if (flush) {
/* send a FLUSH_STOP for the sinkpad, since we need data for seeking */
GST_DEBUG_OBJECT (base, "sending flush stop");
- gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop (TRUE));
}
if (flags & (GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_SKIP)) {
@@ -1505,7 +1520,7 @@
GST_DEBUG_OBJECT (base, "sending flush stop");
//gst_pad_push_event (base->sinkpad, gst_event_new_flush_stop ());
GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base,
- gst_event_new_flush_stop ());
+ gst_event_new_flush_stop (TRUE));
}
//else
done:
@@ -1517,14 +1532,31 @@
static gboolean
-mpegts_base_sink_activate (GstPad * pad)
+mpegts_base_sink_activate (GstPad * sinkpad)
{
- if (gst_pad_check_pull_range (pad)) {
- GST_DEBUG_OBJECT (pad, "activating pull");
- return gst_pad_activate_pull (pad, TRUE);
- } else {
- GST_DEBUG_OBJECT (pad, "activating push");
- return gst_pad_activate_push (pad, TRUE);
+ GstQuery *query;
+ gboolean pull_mode;
+
+ query = gst_query_new_scheduling ();
+
+ if (!gst_pad_peer_query (sinkpad, query)) {
+ gst_query_unref (query);
+ goto activate_push;
+ }
+
+ gst_query_parse_scheduling (query, &pull_mode, NULL, NULL, NULL, NULL, NULL);
+ gst_query_unref (query);
+
+ if (!pull_mode)
+ goto activate_push;
+
+ GST_DEBUG_OBJECT (sinkpad, "activating pull");
+ return gst_pad_activate_pull (sinkpad, TRUE);
+
+activate_push:
+ {
+ GST_DEBUG_OBJECT (sinkpad, "activating push");
+ return gst_pad_activate_push (sinkpad, TRUE);
}
}
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index 25d75cf..12678cc 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -287,6 +287,8 @@
packet->data = data;
+ gst_buffer_unmap (packet->buffer, packet->bufdata, packet->bufsize);
+
if (packet->adaptation_field_control & 0x02)
if (!mpegts_packetizer_parse_adaptation_field_control (packetizer, packet))
return FALSE;
@@ -304,15 +306,17 @@
MpegTSPacketizerStream * stream, MpegTSPacketizerSection * section)
{
guint8 tmp;
- guint8 *data, *crc_data;
+ guint8 *bufdata, *data, *crc_data;
+ gsize size;
MpegTSPacketizerStreamSubtable *subtable;
GSList *subtable_list = NULL;
section->complete = TRUE;
+
/* get the section buffer, pass the ownership to the caller */
section->buffer = gst_adapter_take_buffer (stream->section_adapter,
3 + stream->section_length);
- data = GST_BUFFER_DATA (section->buffer);
+ bufdata = data = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
GST_BUFFER_OFFSET (section->buffer) = stream->offset;
section->table_id = *data++;
@@ -348,8 +352,7 @@
goto not_applicable;
/* CRC is at the end of the section */
- crc_data =
- GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer) - 4;
+ crc_data = bufdata + size - 4;
section->crc = GST_READ_UINT32_BE (crc_data);
if (section->version_number == subtable->version_number &&
@@ -360,6 +363,8 @@
subtable->crc = section->crc;
stream->section_table_id = section->table_id;
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
return TRUE;
not_applicable:
@@ -368,6 +373,7 @@
section->pid, section->table_id, section->subtable_extension,
section->current_next_indicator, section->version_number, section->crc);
section->complete = FALSE;
+ gst_buffer_unmap (section->buffer, bufdata, size);
gst_buffer_unref (section->buffer);
return TRUE;
}
@@ -421,7 +427,8 @@
MpegTSPacketizerSection * section)
{
GstStructure *pat_info = NULL;
- guint8 *data, *end;
+ guint8 *bufdata, *data, *end;
+ gsize size;
guint transport_stream_id;
guint8 tmp;
guint program_number;
@@ -431,7 +438,7 @@
GstStructure *entry = NULL;
gchar *struct_name;
- data = GST_BUFFER_DATA (section->buffer);
+ bufdata = data = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -447,11 +454,13 @@
/* skip section_number and last_section_number */
data += 2;
- pat_info = gst_structure_id_new (QUARK_PAT,
+ pat_info = gst_structure_new_id (QUARK_PAT,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id, NULL);
g_value_init (&entries, GST_TYPE_LIST);
+
/* stop at the CRC */
- end = GST_BUFFER_DATA (section->buffer) + GST_BUFFER_SIZE (section->buffer);
+ end = bufdata + size;
+
while (data < end - 4) {
program_number = GST_READ_UINT16_BE (data);
data += 2;
@@ -460,7 +469,7 @@
data += 2;
struct_name = g_strdup_printf ("program-%d", program_number);
- entry = gst_structure_new (struct_name, NULL);
+ entry = gst_structure_new_empty (struct_name);
g_free (struct_name);
gst_structure_id_set (entry, QUARK_PROGRAM_NUMBER, G_TYPE_UINT,
program_number, QUARK_PID, G_TYPE_UINT, pmt_pid, NULL);
@@ -474,6 +483,8 @@
gst_structure_id_set_value (pat_info, QUARK_PROGRAMS, &entries);
g_value_unset (&entries);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
if (data != end - 4) {
/* FIXME: check the CRC before parsing the packet */
GST_ERROR ("at the end of PAT data != end - 4");
@@ -490,7 +501,8 @@
MpegTSPacketizerSection * section)
{
GstStructure *pmt = NULL;
- guint8 *data, *end;
+ guint8 *bufdata, *data, *end;
+ gsize size;
guint16 program_number;
guint8 tmp;
guint pcr_pid;
@@ -504,15 +516,16 @@
GstStructure *stream_info = NULL;
gchar *struct_name;
+ data = bufdata = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 16) {
+ if (size < 16) {
GST_WARNING ("PID %d invalid PMT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = data + size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -534,7 +547,7 @@
program_info_length = GST_READ_UINT16_BE (data) & 0x0FFF;
data += 2;
- pmt = gst_structure_id_new (QUARK_PMT,
+ pmt = gst_structure_new_id (QUARK_PMT,
QUARK_PROGRAM_NUMBER, G_TYPE_UINT, program_number,
QUARK_PCR_PID, G_TYPE_UINT, pcr_pid,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number, NULL);
@@ -580,7 +593,7 @@
}
struct_name = g_strdup_printf ("pid-%d", pid);
- stream_info = gst_structure_new (struct_name, NULL);
+ stream_info = gst_structure_new_empty (struct_name);
g_free (struct_name);
gst_structure_id_set (stream_info,
QUARK_PID, G_TYPE_UINT, pid, QUARK_STREAM_TYPE, G_TYPE_UINT,
@@ -682,6 +695,8 @@
gst_structure_id_set_value (pmt, QUARK_STREAMS, &programs);
g_value_unset (&programs);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
g_assert (data == end - 4);
return pmt;
@@ -689,6 +704,7 @@
error:
if (pmt)
gst_structure_free (pmt);
+ gst_buffer_unmap (section->buffer, bufdata, size);
return NULL;
}
@@ -698,7 +714,8 @@
MpegTSPacketizerSection * section)
{
GstStructure *nit = NULL, *transport = NULL, *delivery_structure = NULL;
- guint8 *data, *end, *entry_begin;
+ guint8 *bufdata, *data, *end, *entry_begin;
+ gsize size;
guint16 network_id, transport_stream_id, original_network_id;
guint tmp;
guint16 descriptors_loop_length, transport_stream_loop_length;
@@ -707,15 +724,17 @@
GValueArray *descriptors = NULL;
GST_DEBUG ("NIT");
+
+ data = bufdata = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 23) {
+ if (size < 23) {
GST_WARNING ("PID %d invalid NIT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = data + size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -740,7 +759,7 @@
descriptors_loop_length = GST_READ_UINT16_BE (data) & 0x0FFF;
data += 2;
- nit = gst_structure_id_new (QUARK_NIT,
+ nit = gst_structure_new_id (QUARK_NIT,
QUARK_NETWORK_ID, G_TYPE_UINT, network_id,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
@@ -818,7 +837,7 @@
data += 2;
transport_name = g_strdup_printf ("transport-%d", transport_stream_id);
- transport = gst_structure_new (transport_name, NULL);
+ transport = gst_structure_new_empty (transport_name);
g_free (transport_name);
gst_structure_id_set (transport,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id,
@@ -1304,14 +1323,15 @@
if (data != end - 4) {
GST_WARNING ("PID %d invalid NIT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ section->pid, (gint) (data - bufdata), size);
goto error;
}
gst_structure_id_set_value (nit, QUARK_TRANSPORTS, &transports);
g_value_unset (&transports);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
GST_DEBUG ("NIT %" GST_PTR_FORMAT, nit);
return nit;
@@ -1320,6 +1340,8 @@
if (nit)
gst_structure_free (nit);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
if (GST_VALUE_HOLDS_LIST (&transports))
g_value_unset (&transports);
@@ -1331,7 +1353,8 @@
MpegTSPacketizerSection * section)
{
GstStructure *sdt = NULL, *service = NULL;
- guint8 *data, *end, *entry_begin;
+ guint8 *data, *bufdata, *end, *entry_begin;
+ gsize size;
guint16 transport_stream_id, original_network_id, service_id;
guint tmp;
guint sdt_info_length;
@@ -1343,15 +1366,17 @@
GValue service_value = { 0 };
GST_DEBUG ("SDT");
+
+ data = bufdata = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 14) {
+ if (size < 14) {
GST_WARNING ("PID %d invalid SDT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = data + size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -1379,7 +1404,7 @@
/* skip reserved byte */
data += 1;
- sdt = gst_structure_id_new (QUARK_SDT,
+ sdt = gst_structure_new_id (QUARK_SDT,
QUARK_TRANSPORT_STREAM_ID, G_TYPE_UINT, transport_stream_id,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
@@ -1418,7 +1443,7 @@
/* TODO send tag event down relevant pad for channel name and provider */
service_name = g_strdup_printf ("service-%d", service_id);
- service = gst_structure_new (service_name, NULL);
+ service = gst_structure_new_empty (service_name);
g_free (service_name);
if (descriptors_loop_length) {
@@ -1509,20 +1534,23 @@
if (data != end - 4) {
GST_WARNING ("PID %d invalid SDT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ section->pid, (gint) (data - bufdata), size);
goto error;
}
gst_structure_id_set_value (sdt, QUARK_SERVICES, &services);
g_value_unset (&services);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
return sdt;
error:
if (sdt)
gst_structure_free (sdt);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
if (GST_VALUE_HOLDS_LIST (&services))
g_value_unset (&services);
@@ -1541,7 +1569,8 @@
guint16 mjd;
guint year, month, day, hour, minute, second;
guint duration;
- guint8 *data, *end, *duration_ptr, *utc_ptr;
+ guint8 *data, *bufdata, *end, *duration_ptr, *utc_ptr;
+ gsize size;
guint16 descriptors_loop_length;
GValue events = { 0 };
GValue event_value = { 0 };
@@ -1549,15 +1578,16 @@
gchar *event_name;
guint tmp;
+ data = bufdata = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+
/* fixed header + CRC == 16 */
- if (GST_BUFFER_SIZE (section->buffer) < 18) {
+ if (size < 18) {
GST_WARNING ("PID %d invalid EIT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = data + size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -1588,7 +1618,7 @@
last_table_id = *data;
data += 1;
- eit = gst_structure_id_new (QUARK_EIT,
+ eit = gst_structure_new_id (QUARK_EIT,
QUARK_VERSION_NUMBER, G_TYPE_UINT, section->version_number,
QUARK_CURRENT_NEXT_INDICATOR, G_TYPE_UINT,
section->current_next_indicator, QUARK_SERVICE_ID, G_TYPE_UINT,
@@ -1968,14 +1998,15 @@
if (data != end - 4) {
GST_WARNING ("PID %d invalid EIT parsed %d length %d",
- section->pid, (gint) (data - GST_BUFFER_DATA (section->buffer)),
- GST_BUFFER_SIZE (section->buffer));
+ section->pid, (gint) (data - bufdata), size);
goto error;
}
gst_structure_id_set_value (eit, QUARK_EVENTS, &events);
g_value_unset (&events);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
GST_DEBUG ("EIT %" GST_PTR_FORMAT, eit);
return eit;
@@ -1984,6 +2015,8 @@
if (eit)
gst_structure_free (eit);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
if (GST_VALUE_HOLDS_LIST (&events))
g_value_unset (&events);
@@ -1997,18 +2030,21 @@
GstStructure *tdt = NULL;
guint16 mjd;
guint year, month, day, hour, minute, second;
- guint8 *data, *end, *utc_ptr;
+ guint8 *data, *bufdata, *end, *utc_ptr;
+ gsize size;
GST_DEBUG ("TDT");
+
+ data = bufdata = gst_buffer_map (section->buffer, &size, 0, GST_MAP_READ);
+
/* length always 8 */
- if (G_UNLIKELY (GST_BUFFER_SIZE (section->buffer) != 8)) {
+ if (G_UNLIKELY (size != 8)) {
GST_WARNING ("PID %d invalid TDT size %d",
section->pid, section->section_length);
goto error;
}
- data = GST_BUFFER_DATA (section->buffer);
- end = data + GST_BUFFER_SIZE (section->buffer);
+ end = data + size;
section->table_id = *data++;
section->section_length = GST_READ_UINT16_BE (data) & 0x0FFF;
@@ -2049,12 +2085,16 @@
"hour", G_TYPE_UINT, hour,
"minute", G_TYPE_UINT, minute, "second", G_TYPE_UINT, second, NULL);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
return tdt;
error:
if (tdt)
gst_structure_free (tdt);
+ gst_buffer_unmap (section->buffer, bufdata, size);
+
return NULL;
}
@@ -2133,7 +2173,7 @@
}
GST_DEBUG ("Pushing %u byte from offset %" G_GUINT64_FORMAT,
- GST_BUFFER_SIZE (buffer), GST_BUFFER_OFFSET (buffer));
+ gst_buffer_get_size (buffer), GST_BUFFER_OFFSET (buffer));
gst_adapter_push (packetizer->adapter, buffer);
}
@@ -2227,77 +2267,87 @@
packet->buffer = NULL;
+ /* Resync if needed */
if (G_UNLIKELY (!packetizer->know_packet_size)) {
if (!mpegts_try_discover_packet_size (packetizer))
return PACKET_NEED_MORE;
}
while ((avail = packetizer->adapter->size) >= packetizer->packet_size) {
+ guint i;
+ GstBuffer *tmpbuf;
+ guint8 *bufdata;
+
packet->buffer = gst_adapter_take_buffer (packetizer->adapter,
packetizer->packet_size);
+
+ bufdata = packet->bufdata = packet->data_start =
+ gst_buffer_map (packet->buffer, &packet->bufsize, 0, GST_MAP_READ);
+
/* M2TS packets don't start with the sync byte, all other variants do */
- if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
- packet->data_start = GST_BUFFER_DATA (packet->buffer) + 4;
- } else {
- packet->data_start = GST_BUFFER_DATA (packet->buffer);
- }
+ if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE)
+ packet->data_start += 4;
+
/* ALL mpeg-ts variants contain 188 bytes of data. Those with bigger packet
* sizes contain either extra data (timesync, FEC, ..) either before or after
* the data */
packet->data_end = packet->data_start + 188;
GST_BUFFER_OFFSET (packet->buffer) = packet->offset = packetizer->offset;
GST_DEBUG ("offset %" G_GUINT64_FORMAT, packet->offset);
+
packetizer->offset += packetizer->packet_size;
- GST_MEMDUMP ("buffer", GST_BUFFER_DATA (packet->buffer), 16);
+ GST_MEMDUMP ("buffer", bufdata, 16);
GST_MEMDUMP ("data_start", packet->data_start, 16);
/* Check sync byte */
- if (G_UNLIKELY (packet->data_start[0] != 0x47)) {
- guint i;
- GstBuffer *tmpbuf;
+ if (G_LIKELY (packet->data_start[0] == 0x47))
+ goto got_valid_packet;
- GST_LOG ("Lost sync %d", packetizer->packet_size);
- /* Find the 0x47 in the buffer */
- for (i = 0; i < packetizer->packet_size; i++)
- if (GST_BUFFER_DATA (packet->buffer)[i] == 0x47)
- break;
- if (G_UNLIKELY (i == packetizer->packet_size)) {
- GST_ERROR ("REALLY lost the sync");
- gst_buffer_unref (packet->buffer);
- goto done;
- }
+ GST_LOG ("Lost sync %d", packetizer->packet_size);
- if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
- if (i >= 4)
- i -= 4;
- else
- i += 188;
- }
+ /* Find the 0x47 in the buffer */
+ for (i = 0; i < packetizer->packet_size; i++)
+ if (bufdata[i] == 0x47)
+ break;
- /* Pop out the remaining data... */
- GST_BUFFER_DATA (packet->buffer) += i;
- GST_BUFFER_SIZE (packet->buffer) -= i;
- GST_BUFFER_OFFSET (packet->buffer) += i;
- tmpbuf =
- gst_adapter_take_buffer (packetizer->adapter,
- packetizer->adapter->size);
- /* ... and push everything back in */
- gst_adapter_push (packetizer->adapter, packet->buffer);
- gst_adapter_push (packetizer->adapter, tmpbuf);
- continue;
+ if (G_UNLIKELY (i == packetizer->packet_size)) {
+ GST_ERROR ("REALLY lost the sync");
+ gst_buffer_unmap (packet->buffer, bufdata, packet->bufsize);
+ gst_buffer_unref (packet->buffer);
+ goto done;
}
- return mpegts_packetizer_parse_packet (packetizer, packet);
+ if (packetizer->packet_size == MPEGTS_M2TS_PACKETSIZE) {
+ if (i >= 4)
+ i -= 4;
+ else
+ i += 188;
+ }
+
+ /* Pop out the remaining data... */
+ gst_buffer_resize (packet->buffer, i, packet->bufsize - i);
+ GST_BUFFER_OFFSET (packet->buffer) += i;
+ tmpbuf =
+ gst_adapter_take_buffer (packetizer->adapter,
+ packetizer->adapter->size);
+ /* ... and push everything back in */
+ gst_adapter_push (packetizer->adapter, packet->buffer);
+ gst_adapter_push (packetizer->adapter, tmpbuf);
}
done:
return PACKET_NEED_MORE;
+
+got_valid_packet:
+ return mpegts_packetizer_parse_packet (packetizer, packet);
}
void
mpegts_packetizer_clear_packet (MpegTSPacketizer2 * packetizer,
MpegTSPacketizerPacket * packet)
{
+ GST_DEBUG ("packet:%p, buffer:%p", packet, packet->buffer);
+
memset (packet, 0, sizeof (MpegTSPacketizerPacket));
}
@@ -2332,8 +2382,9 @@
if (packet->pid == 0x14) {
table_id = data[0];
section->section_length = GST_READ_UINT24_BE (data) & 0x000FFF;
- section->buffer = gst_buffer_create_sub (packet->buffer,
- data - GST_BUFFER_DATA (packet->buffer), section->section_length + 3);
+ section->buffer =
+ gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL,
+ data - packet->bufdata, section->section_length + 3);
section->table_id = table_id;
section->complete = TRUE;
res = TRUE;
@@ -2344,8 +2395,8 @@
/* create a sub buffer from the start of the section (table_id and
* section_length included) to the end */
- sub_buf = gst_buffer_create_sub (packet->buffer,
- data - GST_BUFFER_DATA (packet->buffer), packet->data_end - data);
+ sub_buf = gst_buffer_copy_region (packet->buffer, GST_BUFFER_COPY_ALL,
+ data - packet->bufdata, packet->data_end - data);
stream = packetizer->streams[packet->pid];
@@ -2372,8 +2423,8 @@
("PID %d table_id %d sub_table_extension %d payload_unit_start_indicator set but section "
"not complete (last_continuity: %d continuity: %d sec len %d buffer %d avail %d",
packet->pid, table_id, subtable_extension, stream->continuity_counter,
- packet->continuity_counter, section_length, GST_BUFFER_SIZE (sub_buf),
- stream->section_adapter->size);
+ packet->continuity_counter, section_length,
+ gst_buffer_get_size (sub_buf), stream->section_adapter->size);
mpegts_packetizer_clear_section (packetizer, stream);
} else {
GST_DEBUG
diff --git a/gst/mpegtsdemux/mpegtspacketizer.h b/gst/mpegtsdemux/mpegtspacketizer.h
index 8328625..d70a101 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.h
+++ b/gst/mpegtsdemux/mpegtspacketizer.h
@@ -94,9 +94,13 @@
guint8 continuity_counter;
guint8 *payload;
- guint8 *data_start;
+ /* temporary copies of gst_buffer_map */
+ guint8 *bufdata;
+ gsize bufsize;
+
+ guint8 *data_start; /* Location of 0x47 marker byte */
guint8 *data_end;
- guint8 *data;
+ guint8 *data; /* Location of post-TS-header data */
guint8 afc_flags;
guint64 pcr;
@@ -144,7 +148,7 @@
MpegTSPacketizerPacketReturn mpegts_packetizer_next_packet (MpegTSPacketizer2 *packetizer,
MpegTSPacketizerPacket *packet);
void mpegts_packetizer_clear_packet (MpegTSPacketizer2 *packetizer,
- MpegTSPacketizerPacket *packet);
+ MpegTSPacketizerPacket *packet);
void mpegts_packetizer_remove_stream(MpegTSPacketizer2 *packetizer,
gint16 pid);
diff --git a/gst/mpegtsdemux/mpegtsparse.c b/gst/mpegtsdemux/mpegtsparse.c
index ede74ae..7bd9d5c 100644
--- a/gst/mpegtsdemux/mpegtsparse.c
+++ b/gst/mpegtsdemux/mpegtsparse.c
@@ -113,29 +113,13 @@
static void mpegts_parse_pad_removed (GstElement * element, GstPad * pad);
static GstPad *mpegts_parse_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * name);
+ GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void mpegts_parse_release_pad (GstElement * element, GstPad * pad);
static gboolean mpegts_parse_src_pad_query (GstPad * pad, GstQuery * query);
static gboolean push_event (MpegTSBase * base, GstEvent * event);
-GST_BOILERPLATE (MpegTSParse2, mpegts_parse, MpegTSBase, GST_TYPE_MPEGTS_BASE);
-
-static void
-mpegts_parse_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&program_template));
-
- gst_element_class_set_details_simple (element_class,
- "MPEG transport stream parser", "Codec/Parser",
- "Parses MPEG2 transport streams",
- "Alessandro Decina <alessandro@nnva.org>, "
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-}
+#define mpegts_parse_parent_class parent_class
+G_DEFINE_TYPE (MpegTSParse2, mpegts_parse, GST_TYPE_MPEGTS_BASE);
static void
mpegts_parse_class_init (MpegTSParse2Class * klass)
@@ -149,6 +133,17 @@
element_class->request_new_pad = mpegts_parse_request_new_pad;
element_class->release_pad = mpegts_parse_release_pad;
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&program_template));
+
+ gst_element_class_set_details_simple (element_class,
+ "MPEG transport stream parser", "Codec/Parser",
+ "Parses MPEG2 transport streams",
+ "Alessandro Decina <alessandro@nnva.org>, "
+ "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
+
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = mpegts_parse_set_property;
gobject_class->get_property = mpegts_parse_get_property;
@@ -168,7 +163,7 @@
}
static void
-mpegts_parse_init (MpegTSParse2 * parse, MpegTSParse2Class * klass)
+mpegts_parse_init (MpegTSParse2 * parse)
{
parse->need_sync_program_pads = FALSE;
parse->program_numbers = g_strdup ("");
@@ -429,7 +424,7 @@
static GstPad *
mpegts_parse_request_new_pad (GstElement * element, GstPadTemplate * template,
- const gchar * unused)
+ const gchar * unused, const GstCaps * caps)
{
MpegTSParse2 *parse;
gchar *name;
@@ -564,9 +559,15 @@
mpegts_parse_sync_program_pads (parse);
pid = packet->pid;
+
+#if 0
buffer = gst_buffer_make_metadata_writable (packet->buffer);
+
/* we have the same caps on all the src pads */
gst_buffer_set_caps (buffer, base->packetizer->caps);
+#else
+ buffer = packet->buffer;
+#endif
GST_OBJECT_LOCK (parse);
/* clear tspad->pushed on pads */
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 3facd64..c049411 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -108,8 +108,6 @@
guint8 nbpending;
/* Current data to be pushed out */
- GstBufferList *current;
- GstBufferListIterator *currentit;
GList *currentlist;
/* Current PTS for this stream */
@@ -126,7 +124,7 @@
"video/x-dirac;" \
"video/x-wmv," \
"wmvversion = (int) 3, " \
- "format = (fourcc) WVC1" \
+ "format = (string) WVC1" \
)
#define AUDIO_CAPS \
@@ -217,13 +215,9 @@
gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream);
static gboolean push_event (MpegTSBase * base, GstEvent * event);
-static void _extra_init (GType type);
-
-GST_BOILERPLATE_FULL (GstTSDemux, gst_ts_demux, MpegTSBase,
- GST_TYPE_MPEGTS_BASE, _extra_init);
static void
-_extra_init (GType type)
+_extra_init (void)
{
QUARK_TSDEMUX = g_quark_from_string ("tsdemux");
QUARK_PID = g_quark_from_string ("pid");
@@ -234,32 +228,15 @@
QUARK_OFFSET = g_quark_from_string ("offset");
}
-static void
-gst_ts_demux_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&subpicture_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&private_template));
-
- gst_element_class_set_details_simple (element_class,
- "MPEG transport stream demuxer",
- "Codec/Demuxer",
- "Demuxes MPEG2 transport streams",
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>\n"
- "Edward Hervey <edward.hervey@collabora.co.uk>");
-}
+#define gst_ts_demux_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstTSDemux, gst_ts_demux, GST_TYPE_MPEGTS_BASE,
+ _extra_init ());
static void
gst_ts_demux_class_init (GstTSDemuxClass * klass)
{
GObjectClass *gobject_class;
+ GstElementClass *element_class;
MpegTSBaseClass *ts_class;
gobject_class = G_OBJECT_CLASS (klass);
@@ -277,6 +254,22 @@
"Emit messages for every pcr/opcr/pts/dts", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ element_class = GST_ELEMENT_CLASS (klass);
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&video_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&audio_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&subpicture_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&private_template));
+
+ gst_element_class_set_details_simple (element_class,
+ "MPEG transport stream demuxer",
+ "Codec/Demuxer",
+ "Demuxes MPEG2 transport streams",
+ "Zaheer Abbas Merali <zaheerabbas at merali dot org>\n"
+ "Edward Hervey <edward.hervey@collabora.co.uk>");
ts_class = GST_MPEGTS_BASE_CLASS (klass);
ts_class->reset = GST_DEBUG_FUNCPTR (gst_ts_demux_reset);
@@ -291,7 +284,7 @@
}
static void
-gst_ts_demux_init (GstTSDemux * demux, GstTSDemuxClass * klass)
+gst_ts_demux_init (GstTSDemux * demux)
{
demux->need_newsegment = TRUE;
demux->program_number = -1;
@@ -615,8 +608,7 @@
max_loop_cnt = (segment->flags & GST_SEEK_FLAG_ACCURATE) ? 25 : 10;
seektime =
- MAX (0,
- segment->last_stop - SEEK_TIMESTAMP_OFFSET) + demux->first_pcr.gsttime;
+ MAX (0, segment->stop - SEEK_TIMESTAMP_OFFSET) + demux->first_pcr.gsttime;
seekpcroffset.gsttime = seektime;
GST_DEBUG ("seeking to %" GST_TIME_FORMAT, GST_TIME_ARGS (seektime));
@@ -789,7 +781,9 @@
seektime -= demux->first_pcr.gsttime;
+#if 0
segment->last_stop = seektime;
+#endif
segment->time = seektime;
/* we stop at the end */
@@ -838,24 +832,21 @@
/* copy segment, we need this because we still need the old
* segment when we close the current segment. */
memcpy (&seeksegment, &demux->segment, sizeof (GstSegment));
+
/* configure the segment with the seek variables */
GST_DEBUG_OBJECT (demux, "configuring seek");
GST_DEBUG ("seeksegment: start: %" GST_TIME_FORMAT " stop: %"
- GST_TIME_FORMAT " time: %" GST_TIME_FORMAT " accum: %" GST_TIME_FORMAT
- " last_stop: %" GST_TIME_FORMAT " duration: %" GST_TIME_FORMAT,
+ GST_TIME_FORMAT " time: %" GST_TIME_FORMAT
+ " duration: %" GST_TIME_FORMAT,
GST_TIME_ARGS (seeksegment.start), GST_TIME_ARGS (seeksegment.stop),
- GST_TIME_ARGS (seeksegment.time), GST_TIME_ARGS (seeksegment.accum),
- GST_TIME_ARGS (seeksegment.last_stop),
- GST_TIME_ARGS (seeksegment.duration));
- gst_segment_set_seek (&seeksegment, rate, format, flags, start_type, start,
+ GST_TIME_ARGS (seeksegment.time), GST_TIME_ARGS (seeksegment.duration));
+ gst_segment_do_seek (&seeksegment, rate, format, flags, start_type, start,
stop_type, stop, &update);
GST_DEBUG ("seeksegment: start: %" GST_TIME_FORMAT " stop: %"
- GST_TIME_FORMAT " time: %" GST_TIME_FORMAT " accum: %" GST_TIME_FORMAT
- " last_stop: %" GST_TIME_FORMAT " duration: %" GST_TIME_FORMAT,
+ GST_TIME_FORMAT " time: %" GST_TIME_FORMAT
+ " duration: %" GST_TIME_FORMAT,
GST_TIME_ARGS (seeksegment.start), GST_TIME_ARGS (seeksegment.stop),
- GST_TIME_ARGS (seeksegment.time), GST_TIME_ARGS (seeksegment.accum),
- GST_TIME_ARGS (seeksegment.last_stop),
- GST_TIME_ARGS (seeksegment.duration));
+ GST_TIME_ARGS (seeksegment.time), GST_TIME_ARGS (seeksegment.duration));
res = gst_ts_demux_perform_seek (base, &seeksegment, pid);
if (G_UNLIKELY (res != GST_FLOW_OK)) {
@@ -869,7 +860,7 @@
if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
gst_element_post_message (GST_ELEMENT_CAST (demux),
gst_message_new_segment_start (GST_OBJECT_CAST (demux),
- demux->segment.format, demux->segment.last_stop));
+ demux->segment.format, demux->segment.stop));
}
done:
@@ -917,6 +908,8 @@
}
}
+ gst_event_unref (event);
+
return TRUE;
}
@@ -996,7 +989,7 @@
GST_LOG ("ac3 audio");
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-ac3");
g_free (desc);
break;
}
@@ -1007,7 +1000,7 @@
GST_LOG ("ac3 audio");
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
g_free (desc);
break;
}
@@ -1018,7 +1011,7 @@
GST_LOG ("teletext");
template = gst_static_pad_template_get (&private_template);
name = g_strdup_printf ("private_%04x", bstream->pid);
- caps = gst_caps_new_simple ("private/teletext", NULL);
+ caps = gst_caps_new_empty_simple ("private/teletext");
g_free (desc);
break;
}
@@ -1029,7 +1022,7 @@
GST_LOG ("subtitling");
template = gst_static_pad_template_get (&private_template);
name = g_strdup_printf ("private_%04x", bstream->pid);
- caps = gst_caps_new_simple ("subpicture/x-dvb", NULL);
+ caps = gst_caps_new_empty_simple ("subpicture/x-dvb");
g_free (desc);
}
/* hack for itv hd (sid 10510, video pid 3401 */
@@ -1093,7 +1086,7 @@
/* dirac in hex */
template = gst_static_pad_template_get (&video_template);
name = g_strdup_printf ("video_%04x", bstream->pid);
- caps = gst_caps_new_simple ("video/x-dirac", NULL);
+ caps = gst_caps_new_empty_simple ("video/x-dirac");
}
}
g_free (desc);
@@ -1113,8 +1106,7 @@
name = g_strdup_printf ("video_%04x", bstream->pid);
caps = gst_caps_new_simple ("video/x-wmv",
"wmvversion", G_TYPE_INT, 3,
- "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('W', 'V', 'C', '1'),
- NULL);
+ "format", G_TYPE_STRING, "WVC1", NULL);
}
}
g_free (desc);
@@ -1129,7 +1121,7 @@
if (DESC_REGISTRATION_format_identifier (desc) == DRF_ID_HDMV) {
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
}
g_free (desc);
}
@@ -1143,7 +1135,7 @@
if (desc) {
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
g_free (desc);
break;
}
@@ -1160,44 +1152,45 @@
g_free (desc);
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-ac3");
break;
}
case ST_BD_AUDIO_EAC3:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-eac3", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-eac3");
break;
case ST_PS_AUDIO_DTS:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-dts", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-dts");
break;
case ST_PS_AUDIO_LPCM:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-lpcm", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-lpcm");
break;
case ST_BD_AUDIO_LPCM:
template = gst_static_pad_template_get (&audio_template);
name = g_strdup_printf ("audio_%04x", bstream->pid);
- caps = gst_caps_new_simple ("audio/x-private-ts-lpcm", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-private-ts-lpcm");
break;
case ST_PS_DVD_SUBPICTURE:
template = gst_static_pad_template_get (&subpicture_template);
name = g_strdup_printf ("subpicture_%04x", bstream->pid);
- caps = gst_caps_new_simple ("video/x-dvd-subpicture", NULL);
+ caps = gst_caps_new_empty_simple ("video/x-dvd-subpicture");
break;
case ST_BD_PGS_SUBPICTURE:
template = gst_static_pad_template_get (&subpicture_template);
name = g_strdup_printf ("subpicture_%04x", bstream->pid);
- caps = gst_caps_new_simple ("subpicture/x-pgs", NULL);
+ caps = gst_caps_new_empty_simple ("subpicture/x-pgs");
break;
default:
GST_WARNING ("Non-media stream (stream_type:0x%x). Not creating pad",
bstream->stream_type);
break;
}
+
if (template && name && caps) {
GST_LOG ("stream:%p creating pad with name %s and caps %s", stream, name,
gst_caps_to_string (caps));
@@ -1207,10 +1200,14 @@
gst_pad_set_query_type_function (pad, gst_ts_demux_srcpad_query_types);
gst_pad_set_query_function (pad, gst_ts_demux_srcpad_query);
gst_pad_set_event_function (pad, gst_ts_demux_srcpad_event);
- gst_caps_unref (caps);
}
- g_free (name);
+ if (name)
+ g_free (name);
+ if (template)
+ gst_object_unref (template);
+ if (caps)
+ gst_caps_unref (caps);
return pad;
}
@@ -1289,8 +1286,6 @@
gst_buffer_unref (stream->pendingbuffers[i]);
memset (stream->pendingbuffers, 0, TS_MAX_PENDING_BUFFERS);
stream->nbpending = 0;
-
- stream->current = NULL;
}
static void
@@ -1375,6 +1370,7 @@
next:
mpegts_packetizer_clear_packet (base->packetizer, &packet);
}
+
return done;
}
@@ -1553,7 +1549,6 @@
GstFlowReturn ret = GST_FLOW_OK;
GstBuffer *buf;
gboolean done = FALSE;
- GstFormat format = GST_FORMAT_BYTES;
gint64 total_bytes;
guint64 scan_offset;
guint i = 0;
@@ -1600,8 +1595,8 @@
demux->program = NULL;
/* Find end position */
- if (G_UNLIKELY (!gst_pad_query_peer_duration (base->sinkpad, &format,
- &total_bytes) || format != GST_FORMAT_BYTES)) {
+ if (G_UNLIKELY (!gst_pad_query_peer_duration (base->sinkpad, GST_FORMAT_BYTES,
+ &total_bytes))) {
GST_WARNING_OBJECT (base, "Couldn't get upstream size in bytes");
ret = GST_FLOW_ERROR;
mpegts_packetizer_clear (base->packetizer);
@@ -1641,9 +1636,8 @@
verify_timestamps (base, &initial, &final);
- gst_segment_set_duration (&demux->segment, GST_FORMAT_TIME,
- demux->last_pcr.gsttime - demux->first_pcr.gsttime);
- demux->duration = demux->last_pcr.gsttime - demux->first_pcr.gsttime;
+ demux->duration = demux->segment.duration =
+ demux->last_pcr.gsttime - demux->first_pcr.gsttime;
GST_DEBUG ("Done, duration:%" GST_TIME_FORMAT,
GST_TIME_ARGS (demux->duration));
@@ -1699,7 +1693,9 @@
pcrpattern = 0x47000020 | ((program->pcr_pid & 0x1fff) << 8);
for (i = 0; (i < 20) && (nbpcr < numpcr); i++) {
- guint offset, size;
+ guint offset;
+ gsize size, bufsize;
+ gpointer data;
ret =
gst_pad_pull_range (base->sinkpad,
@@ -1708,17 +1704,21 @@
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto beach;
- gst_byte_reader_init_from_buffer (&br, buf);
+ data = gst_buffer_map (buf, &bufsize, 0, GST_MAP_READ);
+ size = bufsize;
+
+ gst_byte_reader_init (&br, data, size);
offset = 0;
- size = GST_BUFFER_SIZE (buf);
resync:
offset = gst_byte_reader_masked_scan_uint32 (&br, 0xff000000, 0x47000000,
0, base->packetsize);
- if (offset == -1)
+ if (offset == -1) {
+ gst_buffer_unmap (buf, data, bufsize);
continue;
+ }
while ((nbpcr < numpcr) && (size >= base->packetsize)) {
@@ -1767,6 +1767,7 @@
size -= base->packetsize;
offset += base->packetsize;
}
+ gst_buffer_unmap (buf, data, bufsize);
}
beach:
@@ -1823,7 +1824,7 @@
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_PCR, G_TYPE_UINT64, pcr,
@@ -1845,7 +1846,7 @@
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset,
@@ -1867,7 +1868,7 @@
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_PTS, G_TYPE_UINT64, pts,
@@ -1889,7 +1890,7 @@
if (G_UNLIKELY (demux->emit_statistics)) {
GstStructure *st;
- st = gst_structure_id_empty_new (QUARK_TSDEMUX);
+ st = gst_structure_new_id_empty (QUARK_TSDEMUX);
gst_structure_id_set (st,
QUARK_PID, G_TYPE_UINT, bs->pid,
QUARK_OFFSET, G_TYPE_UINT64, offset, QUARK_DTS, G_TYPE_UINT64, dts,
@@ -1930,21 +1931,22 @@
{
MpegTSBase *base = (MpegTSBase *) demux;
PESHeader header;
+ GstBuffer *buf = stream->pendingbuffers[0];
GstFlowReturn res = GST_FLOW_OK;
gint offset = 0;
guint8 *data;
- guint32 length;
+ gsize length;
guint64 bufferoffset;
GstClockTime time;
PESParsingResult parseres;
- data = GST_BUFFER_DATA (stream->pendingbuffers[0]);
- length = GST_BUFFER_SIZE (stream->pendingbuffers[0]);
- bufferoffset = GST_BUFFER_OFFSET (stream->pendingbuffers[0]);
+ data = gst_buffer_map (buf, &length, 0, GST_MAP_READ);
+ bufferoffset = GST_BUFFER_OFFSET (buf);
GST_MEMDUMP ("Header buffer", data, MIN (length, 32));
parseres = mpegts_parse_pes_header (data, length, &header, &offset);
+
if (G_UNLIKELY (parseres == PES_PARSING_NEED_MORE))
goto discont;
if (G_UNLIKELY (parseres == PES_PARSING_BAD)) {
@@ -2008,30 +2010,25 @@
if (!GST_CLOCK_TIME_IS_VALID (base->in_gap))
base->in_gap = 0;
- GST_BUFFER_TIMESTAMP (stream->pendingbuffers[0]) = time + base->in_gap;
+ GST_BUFFER_TIMESTAMP (buf) = time + base->in_gap;
}
if (header.DTS != -1)
gst_ts_demux_record_dts (demux, stream, header.DTS, bufferoffset);
+ gst_buffer_unmap (buf, data, length);
+
/* Remove PES headers */
GST_DEBUG ("Moving data forward by %d bytes", header.header_size);
- GST_BUFFER_DATA (stream->pendingbuffers[0]) += header.header_size;
- GST_BUFFER_SIZE (stream->pendingbuffers[0]) -= header.header_size;
+ gst_buffer_resize (buf, header.header_size, length - header.header_size);
/* FIXME : responsible for switching to PENDING_PACKET_BUFFER and
* creating the bufferlist */
if (1) {
/* Append to the buffer list */
- if (G_UNLIKELY (stream->current == NULL)) {
+ if (G_UNLIKELY (stream->currentlist == NULL)) {
guint8 i;
- /* Create a new bufferlist */
- stream->current = gst_buffer_list_new ();
- stream->currentit = gst_buffer_list_iterate (stream->current);
- stream->currentlist = NULL;
- gst_buffer_list_iterator_add_group (stream->currentit);
-
/* Push pending buffers into the list */
for (i = stream->nbpending; i; i--)
stream->currentlist =
@@ -2058,14 +2055,20 @@
MpegTSPacketizerPacket * packet)
{
GstBuffer *buf;
+ guint8 *data;
+ gsize size;
GST_DEBUG ("state:%d", stream->state);
buf = packet->buffer;
- /* HACK : Instead of creating a new buffer, we just modify the data/size
- * of the buffer to point to the payload */
- GST_BUFFER_DATA (buf) = packet->payload;
- GST_BUFFER_SIZE (buf) = packet->data_end - packet->payload;
+ data = gst_buffer_map (buf, &size, 0, GST_MAP_READ);
+
+ GST_DEBUG ("Resizing buffer to %d (size:%d) (Was %d bytes long)",
+ packet->payload - data, packet->data_end - packet->payload, size);
+ gst_buffer_unmap (buf, data, size);
+
+ gst_buffer_resize (buf, packet->payload - data,
+ packet->data_end - packet->payload);
if (stream->state == PENDING_PACKET_EMPTY) {
if (G_UNLIKELY (!packet->payload_unit_start_indicator)) {
@@ -2074,10 +2077,6 @@
} else {
GST_LOG ("EMPTY=>HEADER");
stream->state = PENDING_PACKET_HEADER;
- if (stream->pad) {
- GST_DEBUG ("Setting pad caps on buffer %p", buf);
- gst_buffer_set_caps (buf, GST_PAD_CAPS (stream->pad));
- }
}
}
@@ -2170,9 +2169,8 @@
GST_DEBUG ("new segment: start: %" GST_TIME_FORMAT " stop: %"
GST_TIME_FORMAT " time: %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
GST_TIME_ARGS (stop), GST_TIME_ARGS (position));
- newsegmentevent =
- gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME, start, stop,
- position);
+
+ newsegmentevent = gst_event_new_segment (&demux->segment);
push_event ((MpegTSBase *) demux, newsegmentevent);
@@ -2183,13 +2181,15 @@
gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream)
{
GstFlowReturn res = GST_FLOW_OK;
+ GList *tmp;
MpegTSBaseStream *bs = (MpegTSBaseStream *) stream;
+ GstBuffer *buf;
GST_DEBUG ("stream:%p, pid:0x%04x stream_type:%d state:%d pad:%s:%s",
stream, bs->pid, bs->stream_type, stream->state,
GST_DEBUG_PAD_NAME (stream->pad));
- if (G_UNLIKELY (stream->current == NULL)) {
+ if (G_UNLIKELY (stream->currentlist == NULL)) {
GST_LOG ("stream->current == NULL");
goto beach;
}
@@ -2205,8 +2205,7 @@
if (G_UNLIKELY (stream->pad == NULL)) {
g_list_foreach (stream->currentlist, (GFunc) gst_buffer_unref, NULL);
g_list_free (stream->currentlist);
- gst_buffer_list_iterator_free (stream->currentit);
- gst_buffer_list_unref (stream->current);
+ stream->currentlist = NULL;
goto beach;
}
@@ -2215,16 +2214,19 @@
/* We have a confirmed buffer, let's push it out */
GST_LOG ("Putting pending data into GstBufferList");
+
stream->currentlist = g_list_reverse (stream->currentlist);
- gst_buffer_list_iterator_add_list (stream->currentit, stream->currentlist);
- gst_buffer_list_iterator_free (stream->currentit);
+ buf = (GstBuffer *) stream->currentlist->data;
+
+ for (tmp = stream->currentlist->next; tmp; tmp = tmp->next) {
+ buf = gst_buffer_join (buf, (GstBuffer *) tmp->data);
+ }
GST_DEBUG_OBJECT (stream->pad,
- "Pushing buffer list with timestamp: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (gst_buffer_list_get
- (stream->current, 0, 0))));
+ "Pushing buffer with timestamp: %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
- res = gst_pad_push_list (stream->pad, stream->current);
+ res = gst_pad_push (stream->pad, buf);
GST_DEBUG_OBJECT (stream->pad, "Returned %s", gst_flow_get_name (res));
res = tsdemux_combine_flows (demux, stream, res);
GST_DEBUG_OBJECT (stream->pad, "combined %s", gst_flow_get_name (res));
@@ -2235,7 +2237,9 @@
stream->state = PENDING_PACKET_EMPTY;
memset (stream->pendingbuffers, 0, TS_MAX_PENDING_BUFFERS);
stream->nbpending = 0;
- stream->current = NULL;
+ if (stream->currentlist)
+ g_list_free (stream->currentlist);
+ stream->currentlist = NULL;
return res;
}
@@ -2246,8 +2250,10 @@
{
GstFlowReturn res = GST_FLOW_OK;
+#if 0
GST_DEBUG ("buffer:%p, data:%p", GST_BUFFER_DATA (packet->buffer),
packet->data);
+#endif
GST_LOG ("pid 0x%04x pusi:%d, afc:%d, cont:%d, payload:%p",
packet->pid,
packet->payload_unit_start_indicator,
@@ -2256,7 +2262,7 @@
if (section) {
GST_DEBUG ("section complete:%d, buffer size %d",
- section->complete, GST_BUFFER_SIZE (section->buffer));
+ section->complete, gst_buffer_get_size (section->buffer));
gst_buffer_unref (packet->buffer);
return res;
}
@@ -2299,6 +2305,8 @@
TSDemuxStream *stream = NULL;
GstFlowReturn res = GST_FLOW_OK;
+ GST_DEBUG ("packet->buffer %p", packet->buffer);
+
if (G_LIKELY (demux->program)) {
stream = (TSDemuxStream *) demux->program->streams[packet->pid];
diff --git a/gst/mpegtsdemux/tsdemux.h b/gst/mpegtsdemux/tsdemux.h
index 395cf3e..c74d497 100644
--- a/gst/mpegtsdemux/tsdemux.h
+++ b/gst/mpegtsdemux/tsdemux.h
@@ -70,6 +70,7 @@
MpegTSBaseProgram *program; /* Current program */
guint current_program_number;
gboolean need_newsegment;
+
/* Downstream segment */
GstSegment segment;
GstClockTime duration; /* Total duration */
diff --git a/gst/mxf/mxfaes-bwf.c b/gst/mxf/mxfaes-bwf.c
index d8862d7..b9217ba 100644
--- a/gst/mxf/mxfaes-bwf.c
+++ b/gst/mxf/mxfaes-bwf.c
@@ -540,7 +540,7 @@
MXF_TYPE_METADATA_WAVE_AUDIO_ESSENCE_DESCRIPTOR);
static void
-mxf_metadata_aes3_audio_essence_descriptor_finalize (GstMiniObject * object)
+mxf_metadata_aes3_audio_essence_descriptor_finalize (GObject * object)
{
MXFMetadataAES3AudioEssenceDescriptor *self =
MXF_METADATA_AES3_AUDIO_ESSENCE_DESCRIPTOR (object);
@@ -554,7 +554,7 @@
g_free (self->fixed_user_data);
self->fixed_user_data = NULL;
- GST_MINI_OBJECT_CLASS
+ G_OBJECT_CLASS
(mxf_metadata_aes3_audio_essence_descriptor_parent_class)->finalize
(object);
}
@@ -1058,11 +1058,10 @@
(MXFMetadataAES3AudioEssenceDescriptorClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize =
- mxf_metadata_aes3_audio_essence_descriptor_finalize;
+ object_class->finalize = mxf_metadata_aes3_audio_essence_descriptor_finalize;
metadata_base_class->handle_tag =
mxf_metadata_aes3_audio_essence_descriptor_handle_tag;
metadata_base_class->name_quark = MXF_QUARK (AES3_AUDIO_ESSENCE_DESCRIPTOR);
@@ -1353,24 +1352,24 @@
if (!track->parent.descriptor[i])
continue;
- if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
- parent.descriptor[i])
+ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
+ descriptor[i])
&& (track->parent.descriptor[i]->essence_container.u[14] == 0x01
|| track->parent.descriptor[i]->essence_container.u[14] == 0x02
|| track->parent.descriptor[i]->essence_container.u[14] == 0x08)) {
- s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
- parent.descriptor[i];
+ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
+ descriptor[i];
bwf = TRUE;
break;
} else
- if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
- parent.descriptor[i])
+ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
+ descriptor[i])
&& (track->parent.descriptor[i]->essence_container.u[14] == 0x03
|| track->parent.descriptor[i]->essence_container.u[14] == 0x04
|| track->parent.descriptor[i]->essence_container.u[14] == 0x09)) {
- s = (MXFMetadataGenericSoundEssenceDescriptor *) track->
- parent.descriptor[i];
+ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent.
+ descriptor[i];
bwf = FALSE;
break;
}
@@ -1461,7 +1460,7 @@
}
ret = (MXFMetadataWaveAudioEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_WAVE_AUDIO_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_WAVE_AUDIO_ESSENCE_DESCRIPTOR, NULL);
memcpy (&ret->parent.parent.essence_container, &bwf_essence_container_ul, 16);
if (endianness == G_LITTLE_ENDIAN)
@@ -1477,7 +1476,7 @@
if (!mxf_metadata_generic_sound_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/mxf/mxfalaw.c b/gst/mxf/mxfalaw.c
index a711628..49b3723 100644
--- a/gst/mxf/mxfalaw.c
+++ b/gst/mxf/mxfalaw.c
@@ -210,14 +210,14 @@
}
ret = (MXFMetadataGenericSoundEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR, NULL);
memcpy (&ret->parent.essence_container, &alaw_essence_container_ul, 16);
memcpy (&ret->sound_essence_compression, &mxf_sound_essence_compression_alaw,
16);
if (!mxf_metadata_generic_sound_essence_descriptor_from_caps (ret, caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index a4fde1f..496ee38 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -611,11 +611,11 @@
for (i = 0; i < demux->preface->content_storage->n_packages; i++) {
if (demux->preface->content_storage->packages[i] &&
- MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->content_storage->
- packages[i])) {
+ MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->
+ content_storage->packages[i])) {
ret =
- MXF_METADATA_GENERIC_PACKAGE (demux->preface->content_storage->
- packages[i]);
+ MXF_METADATA_GENERIC_PACKAGE (demux->preface->
+ content_storage->packages[i]);
break;
}
}
@@ -775,8 +775,8 @@
essence_container);
if (track->parent.type == MXF_METADATA_TRACK_PICTURE_ESSENCE) {
- if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
- descriptor[0]))
+ if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->
+ parent.descriptor[0]))
mxf_ul_to_string (&MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR
(track->parent.descriptor[0])->picture_essence_coding,
essence_compression);
@@ -785,8 +785,8 @@
g_strdup_printf ("video/x-mxf-%s-%s", essence_container,
essence_compression);
} else if (track->parent.type == MXF_METADATA_TRACK_SOUND_ESSENCE) {
- if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent.
- descriptor[0]))
+ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->
+ parent.descriptor[0]))
mxf_ul_to_string (&MXF_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR
(track->parent.descriptor[0])->sound_essence_compression,
essence_compression);
@@ -795,8 +795,8 @@
g_strdup_printf ("audio/x-mxf-%s-%s", essence_container,
essence_compression);
} else if (track->parent.type == MXF_METADATA_TRACK_DATA_ESSENCE) {
- if (MXF_IS_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR (track->parent.
- descriptor[0]))
+ if (MXF_IS_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR (track->
+ parent.descriptor[0]))
mxf_ul_to_string (&MXF_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR
(track->parent.descriptor[0])->data_essence_coding,
essence_compression);
@@ -1261,7 +1261,7 @@
mxf_uuid_to_string (&MXF_METADATA_BASE (metadata)->instance_uid, str),
g_type_name (G_TYPE_FROM_INSTANCE (old)),
g_type_name (G_TYPE_FROM_INSTANCE (metadata)));
- gst_mini_object_unref (GST_MINI_OBJECT (metadata));
+ g_object_unref (metadata);
return GST_FLOW_ERROR;
} else if (old
&& MXF_METADATA_BASE (old)->offset >=
@@ -1273,7 +1273,7 @@
GST_DEBUG_OBJECT (demux,
"Metadata with instance uid %s already exists and is newer",
mxf_uuid_to_string (&MXF_METADATA_BASE (metadata)->instance_uid, str));
- gst_mini_object_unref (GST_MINI_OBJECT (metadata));
+ g_object_unref (metadata);
return GST_FLOW_OK;
}
@@ -1351,7 +1351,7 @@
mxf_uuid_to_string (&MXF_METADATA_BASE (m)->instance_uid, str),
g_type_name (G_TYPE_FROM_INSTANCE (old)),
g_type_name (G_TYPE_FROM_INSTANCE (m)));
- gst_mini_object_unref (GST_MINI_OBJECT (m));
+ g_object_unref (m);
return GST_FLOW_ERROR;
} else if (old
&& MXF_METADATA_BASE (old)->offset >= MXF_METADATA_BASE (m)->offset) {
@@ -1362,7 +1362,7 @@
GST_DEBUG_OBJECT (demux,
"Metadata with instance uid %s already exists and is newer",
mxf_uuid_to_string (&MXF_METADATA_BASE (m)->instance_uid, str));
- gst_mini_object_unref (GST_MINI_OBJECT (m));
+ g_object_unref (m);
return GST_FLOW_OK;
}
@@ -1421,8 +1421,8 @@
pad->current_component_index);
pad->current_component =
- MXF_METADATA_SOURCE_CLIP (sequence->structural_components[pad->
- current_component_index]);
+ MXF_METADATA_SOURCE_CLIP (sequence->
+ structural_components[pad->current_component_index]);
if (pad->current_component == NULL) {
GST_ERROR_OBJECT (demux, "No such structural component");
return GST_FLOW_ERROR;
@@ -1430,8 +1430,8 @@
if (!pad->current_component->source_package
|| !pad->current_component->source_package->top_level
- || !MXF_METADATA_GENERIC_PACKAGE (pad->current_component->
- source_package)->tracks) {
+ || !MXF_METADATA_GENERIC_PACKAGE (pad->
+ current_component->source_package)->tracks) {
GST_ERROR_OBJECT (demux, "Invalid component");
return GST_FLOW_ERROR;
}
@@ -2998,8 +2998,8 @@
for (i = 0; i < p->material_track->parent.sequence->n_structural_components;
i++) {
clip =
- MXF_METADATA_SOURCE_CLIP (p->material_track->parent.sequence->
- structural_components[i]);
+ MXF_METADATA_SOURCE_CLIP (p->material_track->parent.
+ sequence->structural_components[i]);
if (clip->parent.duration <= 0)
break;
@@ -3077,8 +3077,8 @@
if (format != GST_FORMAT_TIME)
goto wrong_format;
- flush = ! !(flags & GST_SEEK_FLAG_FLUSH);
- keyframe = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
+ flush = !!(flags & GST_SEEK_FLAG_FLUSH);
+ keyframe = !!(flags & GST_SEEK_FLAG_KEY_UNIT);
/* Work on a copy until we are sure the seek succeeded. */
memcpy (&seeksegment, &demux->segment, sizeof (GstSegment));
@@ -3210,8 +3210,8 @@
if (rate <= 0.0)
goto wrong_rate;
- flush = ! !(flags & GST_SEEK_FLAG_FLUSH);
- keyframe = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
+ flush = !!(flags & GST_SEEK_FLAG_FLUSH);
+ keyframe = !!(flags & GST_SEEK_FLAG_KEY_UNIT);
if (flush) {
GstEvent *e;
diff --git a/gst/mxf/mxfdms1.c b/gst/mxf/mxfdms1.c
index 7de27b7..c69e0e7 100644
--- a/gst/mxf/mxfdms1.c
+++ b/gst/mxf/mxfdms1.c
@@ -167,14 +167,14 @@
MXF_TYPE_DMS1_TEXT_LANGUAGE);
static void
-mxf_dms1_thesaurus_finalize (GstMiniObject * object)
+mxf_dms1_thesaurus_finalize (GObject * object)
{
MXFDMS1Thesaurus *self = MXF_DMS1_THESAURUS (object);
g_free (self->thesaurus_name);
self->thesaurus_name = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_thesaurus_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_thesaurus_parent_class)->finalize (object);
}
static gboolean
@@ -215,10 +215,10 @@
static void
mxf_dms1_thesaurus_class_init (MXFDMS1ThesaurusClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
- miniobject_class->finalize = mxf_dms1_thesaurus_finalize;
+ object_class->finalize = mxf_dms1_thesaurus_finalize;
metadatabase_class->handle_tag = mxf_dms1_thesaurus_handle_tag;
}
@@ -233,7 +233,7 @@
mxf_dms1_framework_interface_init));
static void
-mxf_dms1_framework_finalize (GstMiniObject * object)
+mxf_dms1_framework_finalize (GObject * object)
{
MXFDMS1Framework *self = MXF_DMS1_FRAMEWORK (object);
@@ -270,7 +270,7 @@
g_free (self->location_sets);
self->location_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_framework_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_framework_parent_class)->finalize (object);
}
static gboolean
@@ -545,10 +545,10 @@
static void
mxf_dms1_framework_class_init (MXFDMS1FrameworkClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
- miniobject_class->finalize = mxf_dms1_framework_finalize;
+ object_class->finalize = mxf_dms1_framework_finalize;
metadatabase_class->handle_tag = mxf_dms1_framework_handle_tag;
metadatabase_class->resolve = mxf_dms1_framework_resolve;
}
@@ -557,7 +557,7 @@
mxf_dms1_production_clip_framework, MXF_TYPE_DMS1_FRAMEWORK);
static void
-mxf_dms1_production_clip_framework_finalize (GstMiniObject * object)
+mxf_dms1_production_clip_framework_finalize (GObject * object)
{
MXFDMS1ProductionClipFramework *self =
MXF_DMS1_PRODUCTION_CLIP_FRAMEWORK (object);
@@ -574,7 +574,7 @@
g_free (self->contract_sets);
self->contract_sets = NULL;
- GST_MINI_OBJECT_CLASS
+ G_OBJECT_CLASS
(mxf_dms1_production_clip_framework_parent_class)->finalize (object);
}
@@ -737,10 +737,10 @@
mxf_dms1_production_clip_framework_class_init
(MXFDMS1ProductionClipFrameworkClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
- miniobject_class->finalize = mxf_dms1_production_clip_framework_finalize;
+ object_class->finalize = mxf_dms1_production_clip_framework_finalize;
metadatabase_class->handle_tag =
mxf_dms1_production_clip_framework_handle_tag;
metadatabase_class->resolve = mxf_dms1_production_clip_framework_resolve;
@@ -750,7 +750,7 @@
MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK);
static void
-mxf_dms1_production_framework_finalize (GstMiniObject * object)
+mxf_dms1_production_framework_finalize (GObject * object)
{
MXFDMS1ProductionFramework *self = MXF_DMS1_PRODUCTION_FRAMEWORK (object);
@@ -793,7 +793,7 @@
g_free (self->setting_period_sets);
self->setting_period_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_production_framework_parent_class)->finalize
+ G_OBJECT_CLASS (mxf_dms1_production_framework_parent_class)->finalize
(object);
}
@@ -1055,11 +1055,11 @@
mxf_dms1_production_framework_class_init (MXFDMS1ProductionFrameworkClass *
klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_production_framework_finalize;
+ object_class->finalize = mxf_dms1_production_framework_finalize;
metadatabase_class->handle_tag = mxf_dms1_production_framework_handle_tag;
metadatabase_class->resolve = mxf_dms1_production_framework_resolve;
@@ -1070,7 +1070,7 @@
MXF_TYPE_DMS1_PRODUCTION_CLIP_FRAMEWORK);
static void
-mxf_dms1_clip_framework_finalize (GstMiniObject * object)
+mxf_dms1_clip_framework_finalize (GObject * object)
{
MXFDMS1ClipFramework *self = MXF_DMS1_CLIP_FRAMEWORK (object);
@@ -1098,8 +1098,7 @@
g_free (self->device_parameters_sets);
self->device_parameters_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_clip_framework_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_clip_framework_parent_class)->finalize (object);
}
static gboolean
@@ -1329,11 +1328,11 @@
static void
mxf_dms1_clip_framework_class_init (MXFDMS1ClipFrameworkClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_clip_framework_finalize;
+ object_class->finalize = mxf_dms1_clip_framework_finalize;
metadatabase_class->handle_tag = mxf_dms1_clip_framework_handle_tag;
metadatabase_class->resolve = mxf_dms1_clip_framework_resolve;
dm_class->type = 0x010200;
@@ -1343,7 +1342,7 @@
MXF_TYPE_DMS1_FRAMEWORK);
static void
-mxf_dms1_scene_framework_finalize (GstMiniObject * object)
+mxf_dms1_scene_framework_finalize (GObject * object)
{
MXFDMS1SceneFramework *self = MXF_DMS1_SCENE_FRAMEWORK (object);
@@ -1359,8 +1358,7 @@
g_free (self->shot_scene_sets);
self->shot_scene_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_scene_framework_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_scene_framework_parent_class)->finalize (object);
}
static gboolean
@@ -1492,11 +1490,11 @@
static void
mxf_dms1_scene_framework_class_init (MXFDMS1SceneFrameworkClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_scene_framework_finalize;
+ object_class->finalize = mxf_dms1_scene_framework_finalize;
metadatabase_class->handle_tag = mxf_dms1_scene_framework_handle_tag;
metadatabase_class->resolve = mxf_dms1_scene_framework_resolve;
dm_class->type = 0x010300;
@@ -1505,7 +1503,7 @@
G_DEFINE_TYPE (MXFDMS1Titles, mxf_dms1_titles, MXF_TYPE_DMS1_TEXT_LANGUAGE);
static void
-mxf_dms1_titles_finalize (GstMiniObject * object)
+mxf_dms1_titles_finalize (GObject * object)
{
MXFDMS1Titles *self = MXF_DMS1_TITLES (object);
@@ -1524,7 +1522,7 @@
g_free (self->version_title);
self->version_title = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_titles_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_titles_parent_class)->finalize (object);
}
static gboolean
@@ -1592,11 +1590,11 @@
static void
mxf_dms1_titles_class_init (MXFDMS1TitlesClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_titles_finalize;
+ object_class->finalize = mxf_dms1_titles_finalize;
metadatabase_class->handle_tag = mxf_dms1_titles_handle_tag;
dm_class->type = 0x100100;
}
@@ -1605,7 +1603,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_identification_finalize (GstMiniObject * object)
+mxf_dms1_identification_finalize (GObject * object)
{
MXFDMS1Identification *self = MXF_DMS1_IDENTIFICATION (object);
@@ -1615,8 +1613,7 @@
g_free (self->identification_issuing_authority);
self->identification_issuing_authority = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_identification_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_identification_parent_class)->finalize (object);
}
static gboolean
@@ -1700,11 +1697,11 @@
static void
mxf_dms1_identification_class_init (MXFDMS1IdentificationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_identification_finalize;
+ object_class->finalize = mxf_dms1_identification_finalize;
metadatabase_class->handle_tag = mxf_dms1_identification_handle_tag;
dm_class->type = 0x110100;
}
@@ -1713,7 +1710,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_group_relationship_finalize (GstMiniObject * object)
+mxf_dms1_group_relationship_finalize (GObject * object)
{
MXFDMS1GroupRelationship *self = MXF_DMS1_GROUP_RELATIONSHIP (object);
@@ -1726,8 +1723,7 @@
g_free (self->group_synopsis);
self->group_synopsis = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_group_relationship_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_group_relationship_parent_class)->finalize (object);
}
static gboolean
@@ -1834,11 +1830,11 @@
static void
mxf_dms1_group_relationship_class_init (MXFDMS1GroupRelationshipClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_group_relationship_finalize;
+ object_class->finalize = mxf_dms1_group_relationship_finalize;
metadatabase_class->handle_tag = mxf_dms1_group_relationship_handle_tag;
dm_class->type = 0x120100;
}
@@ -1846,7 +1842,7 @@
G_DEFINE_TYPE (MXFDMS1Branding, mxf_dms1_branding, MXF_TYPE_DMS1_TEXT_LANGUAGE);
static void
-mxf_dms1_branding_finalize (GstMiniObject * object)
+mxf_dms1_branding_finalize (GObject * object)
{
MXFDMS1Branding *self = MXF_DMS1_BRANDING (object);
@@ -1856,7 +1852,7 @@
g_free (self->brand_original_title);
self->brand_original_title = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_branding_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_branding_parent_class)->finalize (object);
}
static gboolean
@@ -1906,11 +1902,11 @@
static void
mxf_dms1_branding_class_init (MXFDMS1BrandingClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_branding_finalize;
+ object_class->finalize = mxf_dms1_branding_finalize;
metadatabase_class->handle_tag = mxf_dms1_branding_handle_tag;
dm_class->type = 0x130100;
}
@@ -1918,7 +1914,7 @@
G_DEFINE_TYPE (MXFDMS1Event, mxf_dms1_event, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_event_finalize (GstMiniObject * object)
+mxf_dms1_event_finalize (GObject * object)
{
MXFDMS1Event *self = MXF_DMS1_EVENT (object);
@@ -1937,7 +1933,7 @@
g_free (self->annotation_sets);
self->annotation_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_event_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_event_parent_class)->finalize (object);
}
static gboolean
@@ -2083,11 +2079,11 @@
static void
mxf_dms1_event_class_init (MXFDMS1EventClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_event_finalize;
+ object_class->finalize = mxf_dms1_event_finalize;
metadatabase_class->handle_tag = mxf_dms1_event_handle_tag;
metadatabase_class->resolve = mxf_dms1_event_resolve;
dm_class->type = 0x140100;
@@ -2096,7 +2092,7 @@
G_DEFINE_TYPE (MXFDMS1Publication, mxf_dms1_publication, MXF_TYPE_DMS1);
static void
-mxf_dms1_publication_finalize (GstMiniObject * object)
+mxf_dms1_publication_finalize (GObject * object)
{
MXFDMS1Publication *self = MXF_DMS1_PUBLICATION (object);
@@ -2112,7 +2108,7 @@
g_free (self->publication_region);
self->publication_region = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_publication_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_publication_parent_class)->finalize (object);
}
static gboolean
@@ -2179,11 +2175,11 @@
static void
mxf_dms1_publication_class_init (MXFDMS1PublicationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_publication_finalize;
+ object_class->finalize = mxf_dms1_publication_finalize;
metadatabase_class->handle_tag = mxf_dms1_publication_handle_tag;
dm_class->type = 0x140200;
}
@@ -2191,7 +2187,7 @@
G_DEFINE_TYPE (MXFDMS1Award, mxf_dms1_award, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_award_finalize (GstMiniObject * object)
+mxf_dms1_award_finalize (GObject * object)
{
MXFDMS1Award *self = MXF_DMS1_AWARD (object);
@@ -2213,7 +2209,7 @@
g_free (self->participant_sets);
self->participant_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_award_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_award_parent_class)->finalize (object);
}
static gboolean
@@ -2339,11 +2335,11 @@
static void
mxf_dms1_award_class_init (MXFDMS1AwardClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_award_finalize;
+ object_class->finalize = mxf_dms1_award_finalize;
metadatabase_class->handle_tag = mxf_dms1_award_handle_tag;
metadatabase_class->resolve = mxf_dms1_award_resolve;
dm_class->type = 0x150100;
@@ -2353,14 +2349,14 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_captions_description_finalize (GstMiniObject * object)
+mxf_dms1_captions_description_finalize (GObject * object)
{
MXFDMS1CaptionsDescription *self = MXF_DMS1_CAPTIONS_DESCRIPTION (object);
g_free (self->caption_kind);
self->caption_kind = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_captions_description_parent_class)->finalize
+ G_OBJECT_CLASS (mxf_dms1_captions_description_parent_class)->finalize
(object);
}
@@ -2422,11 +2418,11 @@
mxf_dms1_captions_description_class_init (MXFDMS1CaptionsDescriptionClass *
klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_captions_description_finalize;
+ object_class->finalize = mxf_dms1_captions_description_finalize;
metadatabase_class->handle_tag = mxf_dms1_captions_description_handle_tag;
dm_class->type = 0x160100;
}
@@ -2434,7 +2430,7 @@
G_DEFINE_TYPE (MXFDMS1Annotation, mxf_dms1_annotation, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_annotation_finalize (GstMiniObject * object)
+mxf_dms1_annotation_finalize (GObject * object)
{
MXFDMS1Annotation *self = MXF_DMS1_ANNOTATION (object);
@@ -2465,7 +2461,7 @@
g_free (self->participant_sets);
self->participant_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_annotation_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_annotation_parent_class)->finalize (object);
}
static gboolean
@@ -2652,11 +2648,11 @@
static void
mxf_dms1_annotation_class_init (MXFDMS1AnnotationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_annotation_finalize;
+ object_class->finalize = mxf_dms1_annotation_finalize;
metadatabase_class->handle_tag = mxf_dms1_annotation_handle_tag;
metadatabase_class->resolve = mxf_dms1_annotation_resolve;
dm_class->type = 0x170100;
@@ -2666,7 +2662,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_setting_period_finalize (GstMiniObject * object)
+mxf_dms1_setting_period_finalize (GObject * object)
{
MXFDMS1SettingPeriod *self = MXF_DMS1_SETTING_PERIOD (object);
@@ -2676,8 +2672,7 @@
g_free (self->setting_period_description);
self->setting_period_description = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_setting_period_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_setting_period_parent_class)->finalize (object);
}
static gboolean
@@ -2748,11 +2743,11 @@
static void
mxf_dms1_setting_period_class_init (MXFDMS1SettingPeriodClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_setting_period_finalize;
+ object_class->finalize = mxf_dms1_setting_period_finalize;
metadatabase_class->handle_tag = mxf_dms1_setting_period_handle_tag;
dm_class->type = 0x170200;
}
@@ -2760,7 +2755,7 @@
G_DEFINE_TYPE (MXFDMS1Scripting, mxf_dms1_scripting, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_scripting_finalize (GstMiniObject * object)
+mxf_dms1_scripting_finalize (GObject * object)
{
MXFDMS1Scripting *self = MXF_DMS1_SCRIPTING (object);
@@ -2773,7 +2768,7 @@
g_free (self->scripting_locators);
self->scripting_locators = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_scripting_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_scripting_parent_class)->finalize (object);
}
static gboolean
@@ -2851,11 +2846,11 @@
static void
mxf_dms1_scripting_class_init (MXFDMS1ScriptingClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_scripting_finalize;
+ object_class->finalize = mxf_dms1_scripting_finalize;
metadatabase_class->handle_tag = mxf_dms1_scripting_handle_tag;
dm_class->type = 0x170300;
}
@@ -2864,7 +2859,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_classification_finalize (GstMiniObject * object)
+mxf_dms1_classification_finalize (GObject * object)
{
MXFDMS1Classification *self = MXF_DMS1_CLASSIFICATION (object);
@@ -2874,8 +2869,7 @@
g_free (self->name_value_sets);
self->name_value_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_classification_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_classification_parent_class)->finalize (object);
}
static gboolean
@@ -2974,11 +2968,11 @@
static void
mxf_dms1_classification_class_init (MXFDMS1ClassificationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_classification_finalize;
+ object_class->finalize = mxf_dms1_classification_finalize;
metadatabase_class->handle_tag = mxf_dms1_classification_handle_tag;
metadatabase_class->resolve = mxf_dms1_classification_resolve;
dm_class->type = 0x170400;
@@ -2987,7 +2981,7 @@
G_DEFINE_TYPE (MXFDMS1Shot, mxf_dms1_shot, MXF_TYPE_DMS1_TEXT_LANGUAGE);
static void
-mxf_dms1_shot_finalize (GstMiniObject * object)
+mxf_dms1_shot_finalize (GObject * object)
{
MXFDMS1Shot *self = MXF_DMS1_SHOT (object);
@@ -3009,7 +3003,7 @@
g_free (self->key_point_sets);
self->key_point_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_shot_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_shot_parent_class)->finalize (object);
}
static gboolean
@@ -3182,11 +3176,11 @@
static void
mxf_dms1_shot_class_init (MXFDMS1ShotClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_shot_finalize;
+ object_class->finalize = mxf_dms1_shot_finalize;
metadatabase_class->handle_tag = mxf_dms1_shot_handle_tag;
metadatabase_class->resolve = mxf_dms1_shot_resolve;
dm_class->type = 0x170500;
@@ -3195,7 +3189,7 @@
G_DEFINE_TYPE (MXFDMS1KeyPoint, mxf_dms1_key_point, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_key_point_finalize (GstMiniObject * object)
+mxf_dms1_key_point_finalize (GObject * object)
{
MXFDMS1KeyPoint *self = MXF_DMS1_KEY_POINT (object);
@@ -3205,7 +3199,7 @@
g_free (self->keypoint_value);
self->keypoint_value = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_key_point_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_key_point_parent_class)->finalize (object);
}
static gboolean
@@ -3271,11 +3265,11 @@
static void
mxf_dms1_key_point_class_init (MXFDMS1KeyPointClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_key_point_finalize;
+ object_class->finalize = mxf_dms1_key_point_finalize;
metadatabase_class->handle_tag = mxf_dms1_key_point_handle_tag;
dm_class->type = 0x170600;
}
@@ -3284,7 +3278,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_participant_finalize (GstMiniObject * object)
+mxf_dms1_participant_finalize (GObject * object)
{
MXFDMS1Participant *self = MXF_DMS1_PARTICIPANT (object);
@@ -3309,7 +3303,7 @@
g_free (self->organisation_sets);
self->organisation_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_participant_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_participant_parent_class)->finalize (object);
}
static gboolean
@@ -3471,11 +3465,11 @@
static void
mxf_dms1_participant_class_init (MXFDMS1ParticipantClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_participant_finalize;
+ object_class->finalize = mxf_dms1_participant_finalize;
metadatabase_class->handle_tag = mxf_dms1_participant_handle_tag;
metadatabase_class->resolve = mxf_dms1_participant_resolve;
dm_class->type = 0x180100;
@@ -3485,7 +3479,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_contact_finalize (GstMiniObject * object)
+mxf_dms1_contact_finalize (GObject * object)
{
MXFDMS1Contact *self = MXF_DMS1_CONTACT (object);
@@ -3501,7 +3495,7 @@
g_free (self->address_sets);
self->address_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_contact_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_contact_parent_class)->finalize (object);
}
static gboolean
@@ -3627,10 +3621,10 @@
static void
mxf_dms1_contact_class_init (MXFDMS1ContactClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
- miniobject_class->finalize = mxf_dms1_contact_finalize;
+ object_class->finalize = mxf_dms1_contact_finalize;
metadatabase_class->handle_tag = mxf_dms1_contact_handle_tag;
metadatabase_class->resolve = mxf_dms1_contact_resolve;
}
@@ -3638,7 +3632,7 @@
G_DEFINE_TYPE (MXFDMS1Person, mxf_dms1_person, MXF_TYPE_DMS1_CONTACT);
static void
-mxf_dms1_person_finalize (GstMiniObject * object)
+mxf_dms1_person_finalize (GObject * object)
{
MXFDMS1Person *self = MXF_DMS1_PERSON (object);
@@ -3684,7 +3678,7 @@
g_free (self->organisation_sets);
self->organisation_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_person_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_person_parent_class)->finalize (object);
}
static gboolean
@@ -3858,11 +3852,11 @@
static void
mxf_dms1_person_class_init (MXFDMS1PersonClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_person_finalize;
+ object_class->finalize = mxf_dms1_person_finalize;
metadatabase_class->handle_tag = mxf_dms1_person_handle_tag;
metadatabase_class->resolve = mxf_dms1_person_resolve;
dm_class->type = 0x1a0200;
@@ -3872,7 +3866,7 @@
MXF_TYPE_DMS1_CONTACT);
static void
-mxf_dms1_organisation_finalize (GstMiniObject * object)
+mxf_dms1_organisation_finalize (GObject * object)
{
MXFDMS1Organisation *self = MXF_DMS1_ORGANISATION (object);
@@ -3888,7 +3882,7 @@
g_free (self->contact_department);
self->contact_department = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_organisation_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_organisation_parent_class)->finalize (object);
}
static gboolean
@@ -3954,11 +3948,11 @@
static void
mxf_dms1_organisation_class_init (MXFDMS1OrganisationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_organisation_finalize;
+ object_class->finalize = mxf_dms1_organisation_finalize;
metadatabase_class->handle_tag = mxf_dms1_organisation_handle_tag;
dm_class->type = 0x1a0300;
}
@@ -3966,7 +3960,7 @@
G_DEFINE_TYPE (MXFDMS1Location, mxf_dms1_location, MXF_TYPE_DMS1_CONTACT);
static void
-mxf_dms1_location_finalize (GstMiniObject * object)
+mxf_dms1_location_finalize (GObject * object)
{
MXFDMS1Location *self = MXF_DMS1_LOCATION (object);
@@ -3976,7 +3970,7 @@
g_free (self->location_description);
self->location_description = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_location_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_location_parent_class)->finalize (object);
}
static gboolean
@@ -4025,11 +4019,11 @@
static void
mxf_dms1_location_class_init (MXFDMS1LocationClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_location_finalize;
+ object_class->finalize = mxf_dms1_location_finalize;
metadatabase_class->handle_tag = mxf_dms1_location_handle_tag;
dm_class->type = 0x1a0400;
}
@@ -4037,7 +4031,7 @@
G_DEFINE_TYPE (MXFDMS1Address, mxf_dms1_address, MXF_TYPE_DMS1);
static void
-mxf_dms1_address_finalize (GstMiniObject * object)
+mxf_dms1_address_finalize (GObject * object)
{
MXFDMS1Address *self = MXF_DMS1_ADDRESS (object);
@@ -4086,7 +4080,7 @@
g_free (self->name_value_sets);
self->name_value_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_address_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_address_parent_class)->finalize (object);
}
static gboolean
@@ -4303,11 +4297,11 @@
static void
mxf_dms1_address_class_init (MXFDMS1AddressClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_address_finalize;
+ object_class->finalize = mxf_dms1_address_finalize;
metadatabase_class->handle_tag = mxf_dms1_address_handle_tag;
metadatabase_class->resolve = mxf_dms1_address_resolve;
dm_class->type = 0x1b0100;
@@ -4316,7 +4310,7 @@
G_DEFINE_TYPE (MXFDMS1Communications, mxf_dms1_communications, MXF_TYPE_DMS1);
static void
-mxf_dms1_communications_finalize (GstMiniObject * object)
+mxf_dms1_communications_finalize (GObject * object)
{
MXFDMS1Communications *self = MXF_DMS1_COMMUNICATIONS (object);
@@ -4326,8 +4320,7 @@
g_free (self->web_page);
self->web_page = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_communications_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_communications_parent_class)->finalize (object);
}
static gboolean
@@ -4424,11 +4417,11 @@
static void
mxf_dms1_communications_class_init (MXFDMS1CommunicationsClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_communications_finalize;
+ object_class->finalize = mxf_dms1_communications_finalize;
metadatabase_class->handle_tag = mxf_dms1_communications_handle_tag;
dm_class->type = 0x1b0200;
}
@@ -4436,7 +4429,7 @@
G_DEFINE_TYPE (MXFDMS1Contract, mxf_dms1_contract, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_contract_finalize (GstMiniObject * object)
+mxf_dms1_contract_finalize (GObject * object)
{
MXFDMS1Contract *self = MXF_DMS1_CONTRACT (object);
@@ -4452,7 +4445,7 @@
g_free (self->participant_sets);
self->participant_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_contract_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_contract_parent_class)->finalize (object);
}
static gboolean
@@ -4579,11 +4572,11 @@
static void
mxf_dms1_contract_class_init (MXFDMS1ContractClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_contract_finalize;
+ object_class->finalize = mxf_dms1_contract_finalize;
metadatabase_class->handle_tag = mxf_dms1_contract_handle_tag;
metadatabase_class->resolve = mxf_dms1_contract_resolve;
dm_class->type = 0x1c0100;
@@ -4592,7 +4585,7 @@
G_DEFINE_TYPE (MXFDMS1Rights, mxf_dms1_rights, MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_rights_finalize (GstMiniObject * object)
+mxf_dms1_rights_finalize (GObject * object)
{
MXFDMS1Rights *self = MXF_DMS1_RIGHTS (object);
@@ -4620,7 +4613,7 @@
g_free (self->intellectual_property_right);
self->intellectual_property_right = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_rights_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_rights_parent_class)->finalize (object);
}
static gboolean
@@ -4755,11 +4748,11 @@
static void
mxf_dms1_rights_class_init (MXFDMS1RightsClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_rights_finalize;
+ object_class->finalize = mxf_dms1_rights_finalize;
metadatabase_class->handle_tag = mxf_dms1_rights_handle_tag;
dm_class->type = 0x1c0200;
}
@@ -4767,15 +4760,14 @@
G_DEFINE_TYPE (MXFDMS1PictureFormat, mxf_dms1_picture_format, MXF_TYPE_DMS1);
static void
-mxf_dms1_picture_format_finalize (GstMiniObject * object)
+mxf_dms1_picture_format_finalize (GObject * object)
{
MXFDMS1PictureFormat *self = MXF_DMS1_PICTURE_FORMAT (object);
g_free (self->colour_descriptor);
self->colour_descriptor = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_picture_format_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_picture_format_parent_class)->finalize (object);
}
static gboolean
@@ -4846,11 +4838,11 @@
static void
mxf_dms1_picture_format_class_init (MXFDMS1PictureFormatClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_picture_format_finalize;
+ object_class->finalize = mxf_dms1_picture_format_finalize;
metadatabase_class->handle_tag = mxf_dms1_picture_format_handle_tag;
dm_class->type = 0x1d0100;
}
@@ -4859,7 +4851,7 @@
MXF_TYPE_DMS1_THESAURUS);
static void
-mxf_dms1_device_parameters_finalize (GstMiniObject * object)
+mxf_dms1_device_parameters_finalize (GObject * object)
{
MXFDMS1DeviceParameters *self = MXF_DMS1_DEVICE_PARAMETERS (object);
@@ -4884,8 +4876,7 @@
g_free (self->name_value_sets);
self->name_value_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_device_parameters_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_device_parameters_parent_class)->finalize (object);
}
static gboolean
@@ -5050,11 +5041,11 @@
static void
mxf_dms1_device_parameters_class_init (MXFDMS1DeviceParametersClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_device_parameters_finalize;
+ object_class->finalize = mxf_dms1_device_parameters_finalize;
metadatabase_class->handle_tag = mxf_dms1_device_parameters_handle_tag;
metadatabase_class->resolve = mxf_dms1_device_parameters_resolve;
dm_class->type = 0x1e0100;
@@ -5063,7 +5054,7 @@
G_DEFINE_TYPE (MXFDMS1NameValue, mxf_dms1_name_value, MXF_TYPE_DMS1);
static void
-mxf_dms1_name_value_finalize (GstMiniObject * object)
+mxf_dms1_name_value_finalize (GObject * object)
{
MXFDMS1NameValue *self = MXF_DMS1_NAME_VALUE (object);
@@ -5073,7 +5064,7 @@
g_free (self->item_value);
self->item_value = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_name_value_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_name_value_parent_class)->finalize (object);
}
static gboolean
@@ -5142,11 +5133,11 @@
static void
mxf_dms1_name_value_class_init (MXFDMS1NameValueClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_name_value_finalize;
+ object_class->finalize = mxf_dms1_name_value_finalize;
metadatabase_class->handle_tag = mxf_dms1_name_value_handle_tag;
dm_class->type = 0x1f0100;
}
@@ -5154,7 +5145,7 @@
G_DEFINE_TYPE (MXFDMS1Processing, mxf_dms1_processing, MXF_TYPE_DMS1);
static void
-mxf_dms1_processing_finalize (GstMiniObject * object)
+mxf_dms1_processing_finalize (GObject * object)
{
MXFDMS1Processing *self = MXF_DMS1_PROCESSING (object);
@@ -5164,7 +5155,7 @@
g_free (self->graphic_usage_type);
self->graphic_usage_type = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_processing_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_processing_parent_class)->finalize (object);
}
static gboolean
@@ -5271,11 +5262,11 @@
static void
mxf_dms1_processing_class_init (MXFDMS1ProcessingClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_processing_finalize;
+ object_class->finalize = mxf_dms1_processing_finalize;
metadatabase_class->handle_tag = mxf_dms1_processing_handle_tag;
dm_class->type = 0x200100;
}
@@ -5283,14 +5274,14 @@
G_DEFINE_TYPE (MXFDMS1Project, mxf_dms1_project, MXF_TYPE_DMS1);
static void
-mxf_dms1_project_finalize (GstMiniObject * object)
+mxf_dms1_project_finalize (GObject * object)
{
MXFDMS1Project *self = MXF_DMS1_PROJECT (object);
g_free (self->project_name_or_title);
self->project_name_or_title = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_project_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_project_parent_class)->finalize (object);
}
static gboolean
@@ -5348,11 +5339,11 @@
static void
mxf_dms1_project_class_init (MXFDMS1ProjectClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_project_finalize;
+ object_class->finalize = mxf_dms1_project_finalize;
metadatabase_class->handle_tag = mxf_dms1_project_handle_tag;
dm_class->type = 0x200200;
}
@@ -5360,7 +5351,7 @@
G_DEFINE_TYPE (MXFDMS1ContactsList, mxf_dms1_contacts_list, MXF_TYPE_DMS1);
static void
-mxf_dms1_contacts_list_finalize (GstMiniObject * object)
+mxf_dms1_contacts_list_finalize (GObject * object)
{
MXFDMS1ContactsList *self = MXF_DMS1_CONTACTS_LIST (object);
@@ -5382,8 +5373,7 @@
g_free (self->location_sets);
self->location_sets = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_contacts_list_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_dms1_contacts_list_parent_class)->finalize (object);
}
static gboolean
@@ -5532,11 +5522,11 @@
static void
mxf_dms1_contacts_list_class_init (MXFDMS1ContactsListClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_contacts_list_finalize;
+ object_class->finalize = mxf_dms1_contacts_list_finalize;
metadatabase_class->handle_tag = mxf_dms1_contacts_list_handle_tag;
metadatabase_class->resolve = mxf_dms1_contacts_list_resolve;
dm_class->type = 0x190100;
@@ -5546,7 +5536,7 @@
MXF_TYPE_DMS1_TEXT_LANGUAGE);
static void
-mxf_dms1_cue_words_finalize (GstMiniObject * object)
+mxf_dms1_cue_words_finalize (GObject * object)
{
MXFDMS1CueWords *self = MXF_DMS1_CUE_WORDS (object);
@@ -5556,7 +5546,7 @@
g_free (self->out_cue_words);
self->out_cue_words = NULL;
- GST_MINI_OBJECT_CLASS (mxf_dms1_cue_words_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_dms1_cue_words_parent_class)->finalize (object);
}
static gboolean
@@ -5604,11 +5594,11 @@
static void
mxf_dms1_cue_words_class_init (MXFDMS1CueWordsClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataBaseClass *metadatabase_class = (MXFMetadataBaseClass *) klass;
MXFDescriptiveMetadataClass *dm_class = (MXFDescriptiveMetadataClass *) klass;
- miniobject_class->finalize = mxf_dms1_cue_words_finalize;
+ object_class->finalize = mxf_dms1_cue_words_finalize;
metadatabase_class->handle_tag = mxf_dms1_cue_words_handle_tag;
dm_class->type = 0x170800;
}
diff --git a/gst/mxf/mxfdv-dif.c b/gst/mxf/mxfdv-dif.c
index a239958..cf56c7f 100644
--- a/gst/mxf/mxfdv-dif.c
+++ b/gst/mxf/mxfdv-dif.c
@@ -175,14 +175,14 @@
MXFMetadataCDCIPictureEssenceDescriptor *ret;
ret = (MXFMetadataCDCIPictureEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR, NULL);
memcpy (&ret->parent.parent.essence_container, &dv_dif_essence_container_ul,
16);
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
*handler = mxf_dv_dif_write_func;
diff --git a/gst/mxf/mxfjpeg2000.c b/gst/mxf/mxfjpeg2000.c
index e9e947b..5ef7b84 100644
--- a/gst/mxf/mxfjpeg2000.c
+++ b/gst/mxf/mxfjpeg2000.c
@@ -239,7 +239,7 @@
}
ret = (MXFMetadataRGBAPictureEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR, NULL);
memcpy (&ret->parent.parent.essence_container, &jpeg2000_essence_container_ul,
16);
@@ -270,7 +270,7 @@
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/mxf/mxfmetadata.c b/gst/mxf/mxfmetadata.c
index ca05ad7..cf3ccb6 100644
--- a/gst/mxf/mxfmetadata.c
+++ b/gst/mxf/mxfmetadata.c
@@ -31,11 +31,10 @@
GST_DEBUG_CATEGORY_EXTERN (mxf_debug);
#define GST_CAT_DEFAULT mxf_debug
-G_DEFINE_ABSTRACT_TYPE (MXFMetadataBase, mxf_metadata_base,
- GST_TYPE_MINI_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (MXFMetadataBase, mxf_metadata_base, G_TYPE_OBJECT);
static void
-mxf_metadata_base_finalize (GstMiniObject * object)
+mxf_metadata_base_finalize (GObject * object)
{
MXFMetadataBase *self = MXF_METADATA_BASE (object);
@@ -44,7 +43,7 @@
self->other_tags = NULL;
}
- GST_MINI_OBJECT_CLASS (mxf_metadata_base_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_metadata_base_parent_class)->finalize (object);
}
static gboolean
@@ -131,9 +130,9 @@
static void
mxf_metadata_base_class_init (MXFMetadataBaseClass * klass)
{
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
- miniobject_class->finalize = mxf_metadata_base_finalize;
+ object_class->finalize = mxf_metadata_base_finalize;
klass->handle_tag = mxf_metadata_base_handle_tag;
klass->resolve = mxf_metadata_base_resolve_default;
klass->to_structure = mxf_metadata_base_to_structure_default;
@@ -490,7 +489,7 @@
ret = (MXFMetadata *) g_type_create_instance (t);
if (!mxf_metadata_base_parse (MXF_METADATA_BASE (ret), primer, data, size)) {
GST_ERROR ("Parsing metadata failed");
- gst_mini_object_unref ((GstMiniObject *) ret);
+ g_object_unref (ret);
return NULL;
}
@@ -501,7 +500,7 @@
G_DEFINE_TYPE (MXFMetadataPreface, mxf_metadata_preface, MXF_TYPE_METADATA);
static void
-mxf_metadata_preface_finalize (GstMiniObject * object)
+mxf_metadata_preface_finalize (GObject * object)
{
MXFMetadataPreface *self = MXF_METADATA_PREFACE (object);
@@ -517,7 +516,7 @@
g_free (self->dm_schemes);
self->dm_schemes = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_preface_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_metadata_preface_parent_class)->finalize (object);
}
static gboolean
@@ -947,10 +946,10 @@
mxf_metadata_preface_class_init (MXFMetadataPrefaceClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_preface_finalize;
+ object_class->finalize = mxf_metadata_preface_finalize;
metadata_base_class->handle_tag = mxf_metadata_preface_handle_tag;
metadata_base_class->resolve = mxf_metadata_preface_resolve;
metadata_base_class->to_structure = mxf_metadata_preface_to_structure;
@@ -963,7 +962,7 @@
MXF_TYPE_METADATA);
static void
-mxf_metadata_identification_finalize (GstMiniObject * object)
+mxf_metadata_identification_finalize (GObject * object)
{
MXFMetadataIdentification *self = MXF_METADATA_IDENTIFICATION (object);
@@ -979,8 +978,7 @@
g_free (self->platform);
self->platform = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_identification_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_identification_parent_class)->finalize (object);
}
static gboolean
@@ -1237,10 +1235,10 @@
mxf_metadata_identification_class_init (MXFMetadataIdentificationClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_identification_finalize;
+ object_class->finalize = mxf_metadata_identification_finalize;
metadata_base_class->handle_tag = mxf_metadata_identification_handle_tag;
metadata_base_class->name_quark = MXF_QUARK (IDENTIFICATION);
metadata_base_class->to_structure = mxf_metadata_identification_to_structure;
@@ -1252,7 +1250,7 @@
MXF_TYPE_METADATA);
static void
-mxf_metadata_content_storage_finalize (GstMiniObject * object)
+mxf_metadata_content_storage_finalize (GObject * object)
{
MXFMetadataContentStorage *self = MXF_METADATA_CONTENT_STORAGE (object);
@@ -1265,8 +1263,7 @@
g_free (self->essence_container_data_uids);
self->essence_container_data_uids = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_content_storage_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_content_storage_parent_class)->finalize (object);
}
static gboolean
@@ -1532,10 +1529,10 @@
mxf_metadata_content_storage_class_init (MXFMetadataContentStorageClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_content_storage_finalize;
+ object_class->finalize = mxf_metadata_content_storage_finalize;
metadata_base_class->handle_tag = mxf_metadata_content_storage_handle_tag;
metadata_base_class->resolve = mxf_metadata_content_storage_resolve;
metadata_base_class->name_quark = MXF_QUARK (CONTENT_STORAGE);
@@ -1729,7 +1726,7 @@
MXF_TYPE_METADATA);
static void
-mxf_metadata_generic_package_finalize (GstMiniObject * object)
+mxf_metadata_generic_package_finalize (GObject * object)
{
MXFMetadataGenericPackage *self = MXF_METADATA_GENERIC_PACKAGE (object);
@@ -1741,8 +1738,7 @@
g_free (self->tracks);
self->tracks = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_generic_package_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_generic_package_parent_class)->finalize (object);
}
static gboolean
@@ -2001,9 +1997,9 @@
mxf_metadata_generic_package_class_init (MXFMetadataGenericPackageClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
- miniobject_class->finalize = mxf_metadata_generic_package_finalize;
+ object_class->finalize = mxf_metadata_generic_package_finalize;
metadata_base_class->handle_tag = mxf_metadata_generic_package_handle_tag;
metadata_base_class->resolve = mxf_metadata_generic_package_resolve;
metadata_base_class->to_structure = mxf_metadata_generic_package_to_structure;
@@ -2070,8 +2066,8 @@
MXFMetadataTimelineTrack *tmp;
if (!sc->source_package->parent.tracks[k] ||
- !MXF_IS_METADATA_TIMELINE_TRACK (sc->source_package->parent.
- tracks[k]))
+ !MXF_IS_METADATA_TIMELINE_TRACK (sc->source_package->
+ parent.tracks[k]))
continue;
tmp =
@@ -2324,7 +2320,7 @@
MXF_TYPE_METADATA);
static void
-mxf_metadata_track_finalize (GstMiniObject * object)
+mxf_metadata_track_finalize (GObject * object)
{
MXFMetadataTrack *self = MXF_METADATA_TRACK (object);
@@ -2333,7 +2329,7 @@
g_free (self->descriptor);
self->descriptor = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_track_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_metadata_track_parent_class)->finalize (object);
}
static gboolean
@@ -2515,9 +2511,9 @@
mxf_metadata_track_class_init (MXFMetadataTrackClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
- miniobject_class->finalize = mxf_metadata_track_finalize;
+ object_class->finalize = mxf_metadata_track_finalize;
metadata_base_class->handle_tag = mxf_metadata_track_handle_tag;
metadata_base_class->resolve = mxf_metadata_track_resolve;
metadata_base_class->to_structure = mxf_metadata_track_to_structure;
@@ -2805,7 +2801,7 @@
G_DEFINE_TYPE (MXFMetadataSequence, mxf_metadata_sequence, MXF_TYPE_METADATA);
static void
-mxf_metadata_sequence_finalize (GstMiniObject * object)
+mxf_metadata_sequence_finalize (GObject * object)
{
MXFMetadataSequence *self = MXF_METADATA_SEQUENCE (object);
@@ -2814,7 +2810,7 @@
g_free (self->structural_components);
self->structural_components = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_sequence_parent_class)->finalize (object);
+ G_OBJECT_CLASS (mxf_metadata_sequence_parent_class)->finalize (object);
}
static gboolean
@@ -3022,10 +3018,10 @@
mxf_metadata_sequence_class_init (MXFMetadataSequenceClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_sequence_finalize;
+ object_class->finalize = mxf_metadata_sequence_finalize;
metadata_base_class->handle_tag = mxf_metadata_sequence_handle_tag;
metadata_base_class->resolve = mxf_metadata_sequence_resolve;
metadata_base_class->name_quark = MXF_QUARK (SEQUENCE);
@@ -3434,15 +3430,14 @@
MXF_TYPE_METADATA_SOURCE_CLIP);
static void
-mxf_metadata_dm_source_clip_finalize (GstMiniObject * object)
+mxf_metadata_dm_source_clip_finalize (GObject * object)
{
MXFMetadataDMSourceClip *self = MXF_METADATA_DM_SOURCE_CLIP (object);
g_free (self->track_ids);
self->track_ids = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_dm_source_clip_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_dm_source_clip_parent_class)->finalize (object);
}
static gboolean
@@ -3577,10 +3572,10 @@
mxf_metadata_dm_source_clip_class_init (MXFMetadataDMSourceClipClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_dm_source_clip_finalize;
+ object_class->finalize = mxf_metadata_dm_source_clip_finalize;
metadata_base_class->handle_tag = mxf_metadata_dm_source_clip_handle_tag;
metadata_base_class->name_quark = MXF_QUARK (DM_SOURCE_CLIP);
metadata_base_class->to_structure = mxf_metadata_dm_source_clip_to_structure;
@@ -3592,7 +3587,7 @@
MXF_TYPE_METADATA_STRUCTURAL_COMPONENT);
static void
-mxf_metadata_dm_segment_finalize (GstMiniObject * object)
+mxf_metadata_dm_segment_finalize (GObject * object)
{
MXFMetadataDMSegment *self = MXF_METADATA_DM_SEGMENT (object);
@@ -3602,8 +3597,7 @@
g_free (self->event_comment);
self->event_comment = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_dm_segment_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_dm_segment_parent_class)->finalize (object);
}
static gboolean
@@ -3830,10 +3824,10 @@
mxf_metadata_dm_segment_class_init (MXFMetadataDMSegmentClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_dm_segment_finalize;
+ object_class->finalize = mxf_metadata_dm_segment_finalize;
metadata_base_class->handle_tag = mxf_metadata_dm_segment_handle_tag;
metadata_base_class->resolve = mxf_metadata_dm_segment_resolve;
metadata_base_class->name_quark = MXF_QUARK (DM_SEGMENT);
@@ -3846,7 +3840,7 @@
mxf_metadata_generic_descriptor, MXF_TYPE_METADATA);
static void
-mxf_metadata_generic_descriptor_finalize (GstMiniObject * object)
+mxf_metadata_generic_descriptor_finalize (GObject * object)
{
MXFMetadataGenericDescriptor *self = MXF_METADATA_GENERIC_DESCRIPTOR (object);
@@ -3856,7 +3850,7 @@
g_free (self->locators);
self->locators = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_generic_descriptor_parent_class)->finalize
+ G_OBJECT_CLASS (mxf_metadata_generic_descriptor_parent_class)->finalize
(object);
}
@@ -4029,9 +4023,9 @@
klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
- miniobject_class->finalize = mxf_metadata_generic_descriptor_finalize;
+ object_class->finalize = mxf_metadata_generic_descriptor_finalize;
metadata_base_class->handle_tag = mxf_metadata_generic_descriptor_handle_tag;
metadata_base_class->resolve = mxf_metadata_generic_descriptor_resolve;
metadata_base_class->to_structure =
@@ -4401,8 +4395,8 @@
default:
ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_generic_picture_essence_descriptor_parent_class)->handle_tag
- (metadata, primer, tag, tag_data, tag_size);
+ (mxf_metadata_generic_picture_essence_descriptor_parent_class)->
+ handle_tag (metadata, primer, tag, tag_data, tag_size);
break;
}
@@ -4423,8 +4417,8 @@
{
GstStructure *ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_generic_picture_essence_descriptor_parent_class)->to_structure
- (m);
+ (mxf_metadata_generic_picture_essence_descriptor_parent_class)->
+ to_structure (m);
MXFMetadataGenericPictureEssenceDescriptor *self =
MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (m);
gchar str[48];
@@ -5018,8 +5012,8 @@
default:
ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_generic_sound_essence_descriptor_parent_class)->handle_tag
- (metadata, primer, tag, tag_data, tag_size);
+ (mxf_metadata_generic_sound_essence_descriptor_parent_class)->
+ handle_tag (metadata, primer, tag, tag_data, tag_size);
break;
}
@@ -5339,8 +5333,8 @@
default:
ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_cdci_picture_essence_descriptor_parent_class)->handle_tag
- (metadata, primer, tag, tag_data, tag_size);
+ (mxf_metadata_cdci_picture_essence_descriptor_parent_class)->
+ handle_tag (metadata, primer, tag, tag_data, tag_size);
break;
}
@@ -5561,7 +5555,7 @@
MXF_TYPE_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR);
static void
-mxf_metadata_rgba_picture_essence_descriptor_finalize (GstMiniObject * object)
+mxf_metadata_rgba_picture_essence_descriptor_finalize (GObject * object)
{
MXFMetadataRGBAPictureEssenceDescriptor *self =
MXF_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR (object);
@@ -5569,7 +5563,7 @@
g_free (self->pixel_layout);
self->pixel_layout = NULL;
- GST_MINI_OBJECT_CLASS
+ G_OBJECT_CLASS
(mxf_metadata_rgba_picture_essence_descriptor_parent_class)->finalize
(object);
}
@@ -5649,8 +5643,8 @@
default:
ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_rgba_picture_essence_descriptor_parent_class)->handle_tag
- (metadata, primer, tag, tag_data, tag_size);
+ (mxf_metadata_rgba_picture_essence_descriptor_parent_class)->
+ handle_tag (metadata, primer, tag, tag_data, tag_size);
break;
}
@@ -5804,10 +5798,10 @@
(MXFMetadataRGBAPictureEssenceDescriptorClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize =
+ object_class->finalize =
mxf_metadata_rgba_picture_essence_descriptor_finalize;
metadata_base_class->handle_tag =
mxf_metadata_rgba_picture_essence_descriptor_handle_tag;
@@ -5846,8 +5840,8 @@
default:
ret =
MXF_METADATA_BASE_CLASS
- (mxf_metadata_generic_data_essence_descriptor_parent_class)->handle_tag
- (metadata, primer, tag, tag_data, tag_size);
+ (mxf_metadata_generic_data_essence_descriptor_parent_class)->
+ handle_tag (metadata, primer, tag, tag_data, tag_size);
break;
}
@@ -5936,7 +5930,7 @@
MXF_TYPE_METADATA_FILE_DESCRIPTOR);
static void
-mxf_metadata_multiple_descriptor_finalize (GstMiniObject * object)
+mxf_metadata_multiple_descriptor_finalize (GObject * object)
{
MXFMetadataMultipleDescriptor *self =
MXF_METADATA_MULTIPLE_DESCRIPTOR (object);
@@ -5946,7 +5940,7 @@
g_free (self->sub_descriptors);
self->sub_descriptors = NULL;
- GST_MINI_OBJECT_CLASS
+ G_OBJECT_CLASS
(mxf_metadata_multiple_descriptor_parent_class)->finalize (object);
}
@@ -6119,10 +6113,10 @@
* klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_multiple_descriptor_finalize;
+ object_class->finalize = mxf_metadata_multiple_descriptor_finalize;
metadata_base_class->handle_tag = mxf_metadata_multiple_descriptor_handle_tag;
metadata_base_class->resolve = mxf_metadata_multiple_descriptor_resolve;
metadata_base_class->name_quark = MXF_QUARK (MULTIPLE_DESCRIPTOR);
@@ -6149,15 +6143,14 @@
MXF_TYPE_METADATA_LOCATOR);
static void
-mxf_metadata_text_locator_finalize (GstMiniObject * object)
+mxf_metadata_text_locator_finalize (GObject * object)
{
MXFMetadataTextLocator *self = MXF_METADATA_TEXT_LOCATOR (object);
g_free (self->locator_name);
self->locator_name = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_text_locator_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_text_locator_parent_class)->finalize (object);
}
static gboolean
@@ -6229,10 +6222,10 @@
mxf_metadata_text_locator_class_init (MXFMetadataTextLocatorClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_text_locator_finalize;
+ object_class->finalize = mxf_metadata_text_locator_finalize;
metadata_base_class->handle_tag = mxf_metadata_text_locator_handle_tag;
metadata_base_class->name_quark = MXF_QUARK (TEXT_LOCATOR);
metadata_base_class->to_structure = mxf_metadata_text_locator_to_structure;
@@ -6244,15 +6237,14 @@
MXF_TYPE_METADATA_LOCATOR);
static void
-mxf_metadata_network_locator_finalize (GstMiniObject * object)
+mxf_metadata_network_locator_finalize (GObject * object)
{
MXFMetadataNetworkLocator *self = MXF_METADATA_NETWORK_LOCATOR (object);
g_free (self->url_string);
self->url_string = NULL;
- GST_MINI_OBJECT_CLASS (mxf_metadata_network_locator_parent_class)->finalize
- (object);
+ G_OBJECT_CLASS (mxf_metadata_network_locator_parent_class)->finalize (object);
}
static gboolean
@@ -6323,10 +6315,10 @@
mxf_metadata_network_locator_class_init (MXFMetadataNetworkLocatorClass * klass)
{
MXFMetadataBaseClass *metadata_base_class = (MXFMetadataBaseClass *) klass;
- GstMiniObjectClass *miniobject_class = (GstMiniObjectClass *) klass;
+ GObjectClass *object_class = (GObjectClass *) klass;
MXFMetadataClass *metadata_class = (MXFMetadataClass *) klass;
- miniobject_class->finalize = mxf_metadata_network_locator_finalize;
+ object_class->finalize = mxf_metadata_network_locator_finalize;
metadata_base_class->handle_tag = mxf_metadata_network_locator_handle_tag;
metadata_base_class->name_quark = MXF_QUARK (NETWORK_LOCATOR);
metadata_base_class->to_structure = mxf_metadata_network_locator_to_structure;
@@ -6429,7 +6421,7 @@
ret = (MXFDescriptiveMetadata *) g_type_create_instance (t);
if (!mxf_metadata_base_parse (MXF_METADATA_BASE (ret), primer, data, size)) {
GST_ERROR ("Parsing metadata failed");
- gst_mini_object_unref ((GstMiniObject *) ret);
+ g_object_unref (ret);
return NULL;
}
@@ -6471,5 +6463,5 @@
{
return g_hash_table_new_full ((GHashFunc) mxf_uuid_hash,
(GEqualFunc) mxf_uuid_is_equal, (GDestroyNotify) NULL,
- (GDestroyNotify) gst_mini_object_unref);
+ (GDestroyNotify) g_object_unref);
}
diff --git a/gst/mxf/mxfmetadata.h b/gst/mxf/mxfmetadata.h
index b5e45b1..2f32d98 100644
--- a/gst/mxf/mxfmetadata.h
+++ b/gst/mxf/mxfmetadata.h
@@ -368,7 +368,7 @@
} MXFMetadataBaseResolveState;
struct _MXFMetadataBase {
- GstMiniObject parent;
+ GObject parent;
MXFUUID instance_uid;
MXFUUID generation_uid;
@@ -381,7 +381,7 @@
};
struct _MXFMetadataBaseClass {
- GstMiniObjectClass parent;
+ GObjectClass parent;
gboolean (*handle_tag) (MXFMetadataBase *self, MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint tag_size);
gboolean (*resolve) (MXFMetadataBase *self, GHashTable *metadata);
@@ -739,7 +739,7 @@
};
struct _MXFDescriptiveMetadataClass {
- MXFMetadataBase parent;
+ MXFMetadataBaseClass parent;
guint8 scheme;
guint32 type;
diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c
index 08b1a27..f1b74f9 100644
--- a/gst/mxf/mxfmpeg.c
+++ b/gst/mxf/mxfmpeg.c
@@ -894,7 +894,7 @@
*mapping_data = md;
ret = (MXFMetadataGenericSoundEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR, NULL);
s = gst_caps_get_structure (caps, 0);
if (strcmp (gst_structure_get_name (s), "audio/mpeg") == 0) {
@@ -902,7 +902,7 @@
if (!gst_structure_get_int (s, "mpegversion", &mpegversion)) {
GST_ERROR ("Invalid caps %" GST_PTR_FORMAT, caps);
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -946,7 +946,7 @@
if (!gst_structure_get_int (s, "rate", &rate)) {
GST_ERROR ("Invalid rate");
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
md->rate = rate;
@@ -954,7 +954,7 @@
memcpy (&ret->parent.essence_container, &mpeg_essence_container_ul, 16);
if (!mxf_metadata_generic_sound_essence_descriptor_from_caps (ret, caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -1154,7 +1154,7 @@
GstStructure *s;
ret = (MXFMetadataMPEGVideoDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_MPEG_VIDEO_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_MPEG_VIDEO_DESCRIPTOR, NULL);
s = gst_caps_get_structure (caps, 0);
@@ -1167,7 +1167,7 @@
if (!gst_structure_get_int (s, "mpegversion", &mpegversion)) {
GST_ERROR ("Invalid caps %" GST_PTR_FORMAT, caps);
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -1214,7 +1214,7 @@
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->
parent.parent, caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/mxf/mxfmux.c b/gst/mxf/mxfmux.c
index 403fff8..6b0e795 100644
--- a/gst/mxf/mxfmux.c
+++ b/gst/mxf/mxfmux.c
@@ -477,7 +477,7 @@
/* Preface */
mux->preface =
- (MXFMetadataPreface *) gst_mini_object_new (MXF_TYPE_METADATA_PREFACE);
+ (MXFMetadataPreface *) g_object_new (MXF_TYPE_METADATA_PREFACE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (mux->preface)->instance_uid,
mux->metadata);
g_hash_table_insert (mux->metadata,
@@ -533,7 +533,7 @@
mux->preface->identifications = g_new0 (MXFMetadataIdentification *, 1);
identification = mux->preface->identifications[0] =
(MXFMetadataIdentification *)
- gst_mini_object_new (MXF_TYPE_METADATA_IDENTIFICATION);
+ g_object_new (MXF_TYPE_METADATA_IDENTIFICATION, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (identification)->instance_uid,
mux->metadata);
@@ -592,7 +592,7 @@
guint i;
cstorage = mux->preface->content_storage = (MXFMetadataContentStorage *)
- gst_mini_object_new (MXF_TYPE_METADATA_CONTENT_STORAGE);
+ g_object_new (MXF_TYPE_METADATA_CONTENT_STORAGE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (cstorage)->instance_uid, mux->metadata);
g_hash_table_insert (mux->metadata,
&MXF_METADATA_BASE (cstorage)->instance_uid, cstorage);
@@ -606,7 +606,7 @@
MXFMetadataSourcePackage *p;
cstorage->packages[1] = (MXFMetadataGenericPackage *)
- gst_mini_object_new (MXF_TYPE_METADATA_SOURCE_PACKAGE);
+ g_object_new (MXF_TYPE_METADATA_SOURCE_PACKAGE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (cstorage->packages[1])->instance_uid,
mux->metadata);
g_hash_table_insert (mux->metadata,
@@ -630,7 +630,7 @@
MXFMetadataMultipleDescriptor *d;
p->descriptor = (MXFMetadataGenericDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_MULTIPLE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_MULTIPLE_DESCRIPTOR, NULL);
d = (MXFMetadataMultipleDescriptor *) p->descriptor;
d->n_sub_descriptors = p->parent.n_tracks;
d->sub_descriptors =
@@ -654,7 +654,7 @@
MXFMetadataSourceClip *clip;
p->parent.tracks[n] = (MXFMetadataTrack *)
- gst_mini_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK);
+ g_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK, NULL);
track = (MXFMetadataTimelineTrack *) p->parent.tracks[n];
mxf_uuid_init (&MXF_METADATA_BASE (track)->instance_uid,
mux->metadata);
@@ -672,7 +672,7 @@
cpad->collect.buffer, p, track, &track->edit_rate);
sequence = track->parent.sequence = (MXFMetadataSequence *)
- gst_mini_object_new (MXF_TYPE_METADATA_SEQUENCE);
+ g_object_new (MXF_TYPE_METADATA_SEQUENCE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (sequence)->instance_uid,
mux->metadata);
g_hash_table_insert (mux->metadata,
@@ -687,7 +687,7 @@
g_new0 (MXFMetadataStructuralComponent *, 1);
clip = (MXFMetadataSourceClip *)
- gst_mini_object_new (MXF_TYPE_METADATA_SOURCE_CLIP);
+ g_object_new (MXF_TYPE_METADATA_SOURCE_CLIP, NULL);
sequence->structural_components[0] =
(MXFMetadataStructuralComponent *) clip;
mxf_uuid_init (&MXF_METADATA_BASE (clip)->instance_uid,
@@ -723,7 +723,7 @@
gdouble min_edit_rate_d = G_MAXDOUBLE;
cstorage->packages[0] = (MXFMetadataGenericPackage *)
- gst_mini_object_new (MXF_TYPE_METADATA_MATERIAL_PACKAGE);
+ g_object_new (MXF_TYPE_METADATA_MATERIAL_PACKAGE, NULL);
memcpy (&MXF_METADATA_BASE (cstorage->packages[0])->instance_uid,
&mux->preface->primary_package_uid, 16);
g_hash_table_insert (mux->metadata,
@@ -762,7 +762,7 @@
1]);
p->tracks[n] = (MXFMetadataTrack *)
- gst_mini_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK);
+ g_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK, NULL);
track = (MXFMetadataTimelineTrack *) p->tracks[n];
mxf_uuid_init (&MXF_METADATA_BASE (track)->instance_uid,
mux->metadata);
@@ -797,7 +797,7 @@
}
sequence = track->parent.sequence = (MXFMetadataSequence *)
- gst_mini_object_new (MXF_TYPE_METADATA_SEQUENCE);
+ g_object_new (MXF_TYPE_METADATA_SEQUENCE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (sequence)->instance_uid,
mux->metadata);
g_hash_table_insert (mux->metadata,
@@ -811,7 +811,7 @@
g_new0 (MXFMetadataStructuralComponent *, 1);
clip = (MXFMetadataSourceClip *)
- gst_mini_object_new (MXF_TYPE_METADATA_SOURCE_CLIP);
+ g_object_new (MXF_TYPE_METADATA_SOURCE_CLIP, NULL);
sequence->structural_components[0] =
(MXFMetadataStructuralComponent *) clip;
mxf_uuid_init (&MXF_METADATA_BASE (clip)->instance_uid,
@@ -839,7 +839,7 @@
MXFMetadataTimecodeComponent *component;
p->tracks[n] = (MXFMetadataTrack *)
- gst_mini_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK);
+ g_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK, NULL);
track = (MXFMetadataTimelineTrack *) p->tracks[n];
mxf_uuid_init (&MXF_METADATA_BASE (track)->instance_uid,
mux->metadata);
@@ -854,7 +854,7 @@
memcpy (&track->edit_rate, &min_edit_rate, sizeof (MXFFraction));
sequence = track->parent.sequence = (MXFMetadataSequence *)
- gst_mini_object_new (MXF_TYPE_METADATA_SEQUENCE);
+ g_object_new (MXF_TYPE_METADATA_SEQUENCE, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (sequence)->instance_uid,
mux->metadata);
g_hash_table_insert (mux->metadata,
@@ -870,7 +870,7 @@
g_new0 (MXFMetadataStructuralComponent *, 1);
component = (MXFMetadataTimecodeComponent *)
- gst_mini_object_new (MXF_TYPE_METADATA_TIMECODE_COMPONENT);
+ g_object_new (MXF_TYPE_METADATA_TIMECODE_COMPONENT, NULL);
sequence->structural_components[0] =
(MXFMetadataStructuralComponent *) component;
mxf_uuid_init (&MXF_METADATA_BASE (component)->instance_uid,
@@ -928,7 +928,7 @@
cstorage->essence_container_data =
g_new0 (MXFMetadataEssenceContainerData *, 1);
cstorage->essence_container_data[0] = (MXFMetadataEssenceContainerData *)
- gst_mini_object_new (MXF_TYPE_METADATA_ESSENCE_CONTAINER_DATA);
+ g_object_new (MXF_TYPE_METADATA_ESSENCE_CONTAINER_DATA, NULL);
mxf_uuid_init (&MXF_METADATA_BASE (cstorage->essence_container_data[0])->
instance_uid, mux->metadata);
g_hash_table_insert (mux->metadata,
diff --git a/gst/mxf/mxfup.c b/gst/mxf/mxfup.c
index 7d01725..cbe7af9 100644
--- a/gst/mxf/mxfup.c
+++ b/gst/mxf/mxfup.c
@@ -404,7 +404,7 @@
*mapping_data = md;
ret = (MXFMetadataRGBAPictureEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR, NULL);
for (i = 0; i < G_N_ELEMENTS (_rgba_mapping_table); i++) {
tmp = gst_caps_from_string (_rgba_mapping_table[i].caps);
@@ -426,7 +426,7 @@
if (md->fourcc == 0) {
GST_ERROR ("Invalid caps %" GST_PTR_FORMAT, caps);
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -435,7 +435,7 @@
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -459,7 +459,7 @@
*mapping_data = md;
ret = (MXFMetadataCDCIPictureEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR, NULL);
for (i = 0; i < G_N_ELEMENTS (_cdci_mapping_table); i++) {
tmp = gst_caps_from_string (_cdci_mapping_table[i].caps);
@@ -481,7 +481,7 @@
if (md->fourcc == 0) {
GST_ERROR ("Invalid caps %" GST_PTR_FORMAT, caps);
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
@@ -489,7 +489,7 @@
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/mxf/mxfvc3.c b/gst/mxf/mxfvc3.c
index e4136d1..b8cb6ec 100644
--- a/gst/mxf/mxfvc3.c
+++ b/gst/mxf/mxfvc3.c
@@ -185,13 +185,13 @@
}
ret = (MXFMetadataCDCIPictureEssenceDescriptor *)
- gst_mini_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR);
+ g_object_new (MXF_TYPE_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR, NULL);
memcpy (&ret->parent.parent.essence_container, &vc3_essence_container_ul, 16);
if (!mxf_metadata_generic_picture_essence_descriptor_from_caps (&ret->parent,
caps)) {
- gst_mini_object_unref (GST_MINI_OBJECT_CAST (ret));
+ g_object_unref (ret);
return NULL;
}
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index 004d190..59a3093 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -436,10 +436,10 @@
gst_raw_parse_sink_activate (GstPad * sinkpad)
{
if (gst_pad_check_pull_range (sinkpad)) {
- GST_RAW_PARSE (GST_PAD_PARENT (sinkpad))->mode = GST_ACTIVATE_PULL;
+ GST_RAW_PARSE (GST_PAD_PARENT (sinkpad))->mode = GST_PAD_ACTIVATE_PULL;
return gst_pad_activate_pull (sinkpad, TRUE);
} else {
- GST_RAW_PARSE (GST_PAD_PARENT (sinkpad))->mode = GST_ACTIVATE_PUSH;
+ GST_RAW_PARSE (GST_PAD_PARENT (sinkpad))->mode = GST_PAD_ACTIVATE_PUSH;
return gst_pad_activate_push (sinkpad, TRUE);
}
}
@@ -887,7 +887,7 @@
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
- if (rp->mode == GST_ACTIVATE_PUSH)
+ if (rp->mode == GST_PAD_ACTIVATE_PUSH)
ret = gst_raw_parse_handle_seek_push (rp, event);
else
ret = gst_raw_parse_handle_seek_pull (rp, event);
@@ -996,7 +996,7 @@
if (fmt != GST_FORMAT_TIME && fmt != GST_FORMAT_DEFAULT
&& fmt != GST_FORMAT_BYTES) {
gst_query_set_seeking (query, fmt, FALSE, -1, -1);
- } else if (rp->mode == GST_ACTIVATE_PUSH) {
+ } else if (rp->mode == GST_PAD_ACTIVATE_PUSH) {
GstQuery *peerquery = gst_query_new_seeking (GST_FORMAT_BYTES);
gboolean seekable;
diff --git a/gst/rawparse/gstrawparse.h b/gst/rawparse/gstrawparse.h
index 0a2c01b..53862b0 100644
--- a/gst/rawparse/gstrawparse.h
+++ b/gst/rawparse/gstrawparse.h
@@ -52,7 +52,7 @@
GstPad *sinkpad;
GstPad *srcpad;
- GstActivateMode mode;
+ GstPadActivateMode mode;
GstAdapter *adapter;
gint framesize;
diff --git a/gst/rtpvp8/gstrtpvp8.c b/gst/rtpvp8/gstrtpvp8.c
index baafd1f..e27db18 100644
--- a/gst/rtpvp8/gstrtpvp8.c
+++ b/gst/rtpvp8/gstrtpvp8.c
@@ -6,7 +6,7 @@
#include "gstrtpvp8depay.h"
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
gst_rtp_vp8_depay_plugin_init (plugin);
gst_rtp_vp8_pay_plugin_init (plugin);
diff --git a/gst/sdi/gstsdidemux.c b/gst/sdi/gstsdidemux.c
index 7af936b..36b54f0 100644
--- a/gst/sdi/gstsdidemux.c
+++ b/gst/sdi/gstsdidemux.c
@@ -364,7 +364,6 @@
if (sdidemux->output_buffer == NULL) {
gst_sdi_demux_get_output_buffer (sdidemux);
}
-
#if 0
if (sdidemux->offset) {
int n;
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c
index e03fb7e..8f7bbc8 100644
--- a/gst/sdp/gstsdpdemux.c
+++ b/gst/sdp/gstsdpdemux.c
@@ -138,30 +138,8 @@
/*static guint gst_sdp_demux_signals[LAST_SIGNAL] = { 0 }; */
-static void
-_do_init (GType sdp_demux_type)
-{
- GST_DEBUG_CATEGORY_INIT (sdpdemux_debug, "sdpdemux", 0, "SDP demux");
-}
-
-GST_BOILERPLATE_FULL (GstSDPDemux, gst_sdp_demux, GstBin, GST_TYPE_BIN,
- _do_init);
-
-static void
-gst_sdp_demux_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtptemplate));
-
- gst_element_class_set_details_simple (element_class, "SDP session setup",
- "Codec/Demuxer/Network/RTP",
- "Receive data over the network via SDP",
- "Wim Taymans <wim.taymans@gmail.com>");
-}
+#define gst_sdp_demux_parent_class parent_class
+G_DEFINE_TYPE (GstSDPDemux, gst_sdp_demux, GST_TYPE_BIN);
static void
gst_sdp_demux_class_init (GstSDPDemuxClass * klass)
@@ -202,13 +180,25 @@
DEFAULT_REDIRECT,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&rtptemplate));
+
+ gst_element_class_set_details_simple (gstelement_class, "SDP session setup",
+ "Codec/Demuxer/Network/RTP",
+ "Receive data over the network via SDP",
+ "Wim Taymans <wim.taymans@gmail.com>");
+
gstelement_class->change_state = gst_sdp_demux_change_state;
gstbin_class->handle_message = gst_sdp_demux_handle_message;
+
+ GST_DEBUG_CATEGORY_INIT (sdpdemux_debug, "sdpdemux", 0, "SDP demux");
}
static void
-gst_sdp_demux_init (GstSDPDemux * demux, GstSDPDemuxClass * g_class)
+gst_sdp_demux_init (GstSDPDemux * demux)
{
demux->sinkpad = gst_pad_new_from_static_template (&sinktemplate, "sink");
gst_pad_set_event_function (demux->sinkpad,
diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c
index e7c3caf..c61e34e 100644
--- a/gst/y4m/gsty4mdec.c
+++ b/gst/y4m/gsty4mdec.c
@@ -82,17 +82,25 @@
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{I420,Y42B,Y444}"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{I420,Y42B,Y444}"))
);
/* class initialization */
-
-GST_BOILERPLATE (GstY4mDec, gst_y4m_dec, GstElement, GST_TYPE_ELEMENT);
+#define gst_y4m_dec_parent_class parent_class
+G_DEFINE_TYPE (GstY4mDec, gst_y4m_dec, GST_TYPE_ELEMENT);
static void
-gst_y4m_dec_base_init (gpointer g_class)
+gst_y4m_dec_class_init (GstY4mDecClass * klass)
{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+ gobject_class->set_property = gst_y4m_dec_set_property;
+ gobject_class->get_property = gst_y4m_dec_get_property;
+ gobject_class->dispose = gst_y4m_dec_dispose;
+ gobject_class->finalize = gst_y4m_dec_finalize;
+
+ element_class->change_state = GST_DEBUG_FUNCPTR (gst_y4m_dec_change_state);
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&gst_y4m_dec_src_template));
@@ -105,21 +113,7 @@
}
static void
-gst_y4m_dec_class_init (GstY4mDecClass * klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gobject_class->set_property = gst_y4m_dec_set_property;
- gobject_class->get_property = gst_y4m_dec_get_property;
- gobject_class->dispose = gst_y4m_dec_dispose;
- gobject_class->finalize = gst_y4m_dec_finalize;
- element_class->change_state = GST_DEBUG_FUNCPTR (gst_y4m_dec_change_state);
-
-}
-
-static void
-gst_y4m_dec_init (GstY4mDec * y4mdec, GstY4mDecClass * y4mdec_class)
+gst_y4m_dec_init (GstY4mDec * y4mdec)
{
y4mdec->adapter = gst_adapter_new ();
@@ -232,15 +226,15 @@
static GstClockTime
gst_y4m_dec_frames_to_timestamp (GstY4mDec * y4mdec, int frame_index)
{
- return gst_util_uint64_scale (frame_index, GST_SECOND * y4mdec->fps_d,
- y4mdec->fps_n);
+ return gst_util_uint64_scale (frame_index, GST_SECOND * y4mdec->info.fps_d,
+ y4mdec->info.fps_n);
}
static int
gst_y4m_dec_timestamp_to_frames (GstY4mDec * y4mdec, GstClockTime timestamp)
{
- return gst_util_uint64_scale (timestamp, y4mdec->fps_n,
- GST_SECOND * y4mdec->fps_d);
+ return gst_util_uint64_scale (timestamp, y4mdec->info.fps_n,
+ GST_SECOND * y4mdec->info.fps_d);
}
static int
@@ -248,13 +242,13 @@
{
if (bytes < y4mdec->header_size)
return 0;
- return (bytes - y4mdec->header_size) / (y4mdec->frame_size + 6);
+ return (bytes - y4mdec->header_size) / (y4mdec->info.size + 6);
}
static gint64
gst_y4m_dec_frames_to_bytes (GstY4mDec * y4mdec, int frame_index)
{
- return y4mdec->header_size + (y4mdec->frame_size + 6) * frame_index;
+ return y4mdec->header_size + (y4mdec->info.size + 6) * frame_index;
}
static GstClockTime
@@ -269,8 +263,12 @@
gst_y4m_dec_parse_header (GstY4mDec * y4mdec, char *header)
{
char *end;
- int format = 420;
+ int iformat = 420;
int interlaced_char = 0;
+ gint fps_n = 0, fps_d = 0;
+ gint par_n = 0, par_d = 0;
+ gint width = 0, height = 0;
+ GstVideoFormat format;
if (memcmp (header, "YUV4MPEG2 ", 10) != 0) {
return FALSE;
@@ -285,21 +283,21 @@
break;
case 'C':
header++;
- format = strtoul (header, &end, 10);
+ iformat = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
break;
case 'W':
header++;
- y4mdec->width = strtoul (header, &end, 10);
+ width = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
break;
case 'H':
header++;
- y4mdec->height = strtoul (header, &end, 10);
+ height = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
@@ -315,7 +313,7 @@
break;
case 'F':
header++;
- y4mdec->fps_n = strtoul (header, &end, 10);
+ fps_n = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
@@ -324,14 +322,14 @@
return FALSE;
}
header++;
- y4mdec->fps_d = strtoul (header, &end, 10);
+ fps_d = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
break;
case 'A':
header++;
- y4mdec->par_n = strtoul (header, &end, 10);
+ par_n = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
@@ -340,7 +338,7 @@
return FALSE;
}
header++;
- y4mdec->par_d = strtoul (header, &end, 10);
+ par_d = strtoul (header, &end, 10);
if (end == header)
goto error;
header = end;
@@ -354,41 +352,39 @@
}
}
- switch (format) {
+ switch (iformat) {
case 420:
- y4mdec->format = GST_VIDEO_FORMAT_I420;
+ format = GST_VIDEO_FORMAT_I420;
break;
case 422:
- y4mdec->format = GST_VIDEO_FORMAT_Y42B;
+ format = GST_VIDEO_FORMAT_Y42B;
break;
case 444:
- y4mdec->format = GST_VIDEO_FORMAT_Y444;
+ format = GST_VIDEO_FORMAT_Y444;
break;
default:
- GST_WARNING_OBJECT (y4mdec, "unknown y4m format %d", format);
+ GST_WARNING_OBJECT (y4mdec, "unknown y4m format %d", iformat);
return FALSE;
}
- if (y4mdec->width <= 0 || y4mdec->width > MAX_SIZE ||
- y4mdec->height <= 0 || y4mdec->height > MAX_SIZE) {
- GST_WARNING_OBJECT (y4mdec, "Dimensions %dx%d out of range",
- y4mdec->width, y4mdec->height);
+ if (width <= 0 || width > MAX_SIZE || height <= 0 || height > MAX_SIZE) {
+ GST_WARNING_OBJECT (y4mdec, "Dimensions %dx%d out of range", width, height);
return FALSE;
}
- y4mdec->frame_size = gst_video_format_get_size (y4mdec->format,
- y4mdec->width, y4mdec->height);
+ gst_video_info_set_format (&y4mdec->info, format, width, height);
switch (interlaced_char) {
case 0:
case '?':
case 'p':
- y4mdec->interlaced = FALSE;
+ y4mdec->info.flags &= ~GST_VIDEO_FLAG_INTERLACED;
break;
case 't':
case 'b':
- y4mdec->interlaced = TRUE;
- y4mdec->tff = (interlaced_char == 't');
+ y4mdec->info.flags |= GST_VIDEO_FLAG_INTERLACED;
+ if (interlaced_char == 't')
+ y4mdec->info.flags |= GST_VIDEO_FLAG_TFF;
break;
default:
GST_WARNING_OBJECT (y4mdec, "Unknown interlaced char '%c'",
@@ -397,14 +393,19 @@
break;
}
- if (y4mdec->fps_n == 0)
- y4mdec->fps_n = 1;
- if (y4mdec->fps_d == 0)
- y4mdec->fps_d = 1;
- if (y4mdec->par_n == 0)
- y4mdec->par_n = 1;
- if (y4mdec->par_d == 0)
- y4mdec->par_d = 1;
+ if (fps_n == 0)
+ fps_n = 1;
+ if (fps_d == 0)
+ fps_d = 1;
+ if (par_n == 0)
+ par_n = 1;
+ if (par_d == 0)
+ par_d = 1;
+
+ y4mdec->info.fps_n = fps_n;
+ y4mdec->info.fps_d = fps_d;
+ y4mdec->info.par_n = par_n;
+ y4mdec->info.par_d = par_d;
return TRUE;
error:
@@ -460,10 +461,7 @@
y4mdec->header_size = strlen (header) + 1;
gst_adapter_flush (y4mdec->adapter, y4mdec->header_size);
- caps = gst_video_format_new_caps_interlaced (y4mdec->format,
- y4mdec->width, y4mdec->height,
- y4mdec->fps_n, y4mdec->fps_d,
- y4mdec->par_n, y4mdec->par_d, y4mdec->interlaced);
+ caps = gst_video_info_to_caps (&y4mdec->info);
ret = gst_pad_set_caps (y4mdec->srcpad, caps);
gst_caps_unref (caps);
if (!ret) {
@@ -477,21 +475,25 @@
if (y4mdec->have_new_segment) {
GstEvent *event;
GstClockTime start = gst_y4m_dec_bytes_to_timestamp (y4mdec,
- y4mdec->segment_start);
+ y4mdec->segment.start);
GstClockTime stop = gst_y4m_dec_bytes_to_timestamp (y4mdec,
- y4mdec->segment_stop);
- GstClockTime position = gst_y4m_dec_bytes_to_timestamp (y4mdec,
- y4mdec->segment_position);
+ y4mdec->segment.stop);
+ GstClockTime time = gst_y4m_dec_bytes_to_timestamp (y4mdec,
+ y4mdec->segment.time);
+ GstSegment seg;
- event = gst_event_new_new_segment (FALSE, 1.0,
- GST_FORMAT_TIME, start, stop, position);
+ gst_segment_init (&seg, GST_FORMAT_TIME);
+ seg.start = start;
+ seg.stop = stop;
+ seg.time = time;
+ event = gst_event_new_segment (&seg);
gst_pad_push_event (y4mdec->srcpad, event);
//gst_event_unref (event);
y4mdec->have_new_segment = FALSE;
y4mdec->frame_index = gst_y4m_dec_bytes_to_frames (y4mdec,
- y4mdec->segment_position);
+ y4mdec->segment.time);
GST_DEBUG ("new frame_index %d", y4mdec->frame_index);
}
@@ -515,25 +517,24 @@
}
len = strlen (header);
- if (n_avail < y4mdec->frame_size + len + 1) {
+ if (n_avail < y4mdec->info.size + len + 1) {
/* not enough data */
GST_DEBUG ("not enough data for frame %d < %d",
- n_avail, y4mdec->frame_size + len + 1);
+ n_avail, y4mdec->info.size + len + 1);
break;
}
gst_adapter_flush (y4mdec->adapter, len + 1);
- buffer = gst_adapter_take_buffer (y4mdec->adapter, y4mdec->frame_size);
+ buffer = gst_adapter_take_buffer (y4mdec->adapter, y4mdec->info.size);
- GST_BUFFER_CAPS (buffer) = gst_caps_ref (GST_PAD_CAPS (y4mdec->srcpad));
GST_BUFFER_TIMESTAMP (buffer) =
gst_y4m_dec_frames_to_timestamp (y4mdec, y4mdec->frame_index);
GST_BUFFER_DURATION (buffer) =
gst_y4m_dec_frames_to_timestamp (y4mdec, y4mdec->frame_index + 1) -
GST_BUFFER_TIMESTAMP (buffer);
- if (y4mdec->interlaced && y4mdec->tff) {
- GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_TFF);
+ if (y4mdec->info.flags & GST_VIDEO_FLAG_TFF) {
+ GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
}
y4mdec->frame_index++;
@@ -565,28 +566,16 @@
case GST_EVENT_FLUSH_STOP:
res = gst_pad_push_event (y4mdec->srcpad, event);
break;
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
{
- gboolean update;
- gdouble rate;
- gdouble applied_rate;
- GstFormat format;
- gint64 start;
- gint64 stop;
- gint64 position;
+ GstSegment seg;
- gst_event_parse_new_segment_full (event, &update, &rate,
- &applied_rate, &format, &start, &stop, &position);
+ gst_event_copy_segment (event, &seg);
- GST_DEBUG ("new_segment: update: %d rate: %g applied_rate: %g "
- "format: %d start: %" G_GUINT64_FORMAT " stop: %" G_GUINT64_FORMAT
- " position %" G_GUINT64_FORMAT,
- update, rate, applied_rate, format, start, stop, position);
+ GST_DEBUG ("segment: %" GST_SEGMENT_FORMAT, &seg);
- if (format == GST_FORMAT_BYTES) {
- y4mdec->segment_start = start;
- y4mdec->segment_stop = stop;
- y4mdec->segment_position = position;
+ if (seg.format == GST_FORMAT_BYTES) {
+ y4mdec->segment = seg;
y4mdec->have_new_segment = TRUE;
}
diff --git a/gst/y4m/gsty4mdec.h b/gst/y4m/gsty4mdec.h
index 6ea6ca1..97a7858 100644
--- a/gst/y4m/gsty4mdec.h
+++ b/gst/y4m/gsty4mdec.h
@@ -48,20 +48,9 @@
int header_size;
gboolean have_new_segment;
- gint64 segment_start;
- gint64 segment_stop;
- gint64 segment_position;
+ GstSegment segment;
- int width;
- int height;
- GstVideoFormat format;
- gboolean interlaced;
- gboolean tff;
- int fps_n;
- int fps_d;
- int par_n;
- int par_d;
- int frame_size;
+ GstVideoInfo info;
};
struct _GstY4mDecClass
diff --git a/sys/Makefile.am b/sys/Makefile.am
index 5df060c..b7a9912 100644
--- a/sys/Makefile.am
+++ b/sys/Makefile.am
@@ -95,11 +95,11 @@
ACM_DIR=
endif
-if USE_VDPAU
-VDPAU_DIR=vdpau
-else
-VDPAU_DIR=
-endif
+#if USE_VDPAU
+#VDPAU_DIR=vdpau
+#else
+#VDPAU_DIR=
+#endif
if USE_SHM
SHM_DIR=shm
diff --git a/sys/decklink/win/DeckLinkAPI_i.c b/sys/decklink/win/DeckLinkAPI_i.c
index e9346db..ca14206 100644
--- a/sys/decklink/win/DeckLinkAPI_i.c
+++ b/sys/decklink/win/DeckLinkAPI_i.c
@@ -18,12 +18,13 @@
*/
//@@MIDL_FILE_HEADING( )
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
#ifdef __cplusplus
-extern "C"{
-#endif
+extern "C"
+{
+#endif
#include <rpc.h>
@@ -42,218 +43,277 @@
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-#else // !_MIDL_USE_GUIDDEF_
+#else // !_MIDL_USE_GUIDDEF_
#ifndef __IID_DEFINED__
#define __IID_DEFINED__
-typedef struct _IID
-{
+ typedef struct _IID
+ {
unsigned long x;
unsigned short s1;
unsigned short s2;
- unsigned char c[8];
-} IID;
+ unsigned char c[8];
+ } IID;
-#endif // __IID_DEFINED__
+#endif // __IID_DEFINED__
#ifndef CLSID_DEFINED
#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
+ typedef IID CLSID;
+#endif // CLSID_DEFINED
#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-#endif !_MIDL_USE_GUIDDEF_
+#endif /* !_MIDL_USE_GUIDDEF_ */
-MIDL_DEFINE_GUID(IID, LIBID_DeckLinkAPI,0xD864517A,0xEDD5,0x466D,0x86,0x7D,0xC8,0x19,0xF1,0xC0,0x52,0xBB);
+ MIDL_DEFINE_GUID (IID, LIBID_DeckLinkAPI, 0xD864517A, 0xEDD5, 0x466D, 0x86,
+ 0x7D, 0xC8, 0x19, 0xF1, 0xC0, 0x52, 0xBB);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback,0x20AA5225,0x1958,0x47CB,0x82,0x0B,0x80,0xA8,0xD5,0x21,0xA6,0xEE);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoOutputCallback, 0x20AA5225, 0x1958,
+ 0x47CB, 0x82, 0x0B, 0x80, 0xA8, 0xD5, 0x21, 0xA6, 0xEE);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback,0xDD04E5EC,0x7415,0x42AB,0xAE,0x4A,0xE8,0x0C,0x4D,0xFC,0x04,0x4A);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInputCallback, 0xDD04E5EC, 0x7415,
+ 0x42AB, 0xAE, 0x4A, 0xE8, 0x0C, 0x4D, 0xFC, 0x04, 0x4A);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkMemoryAllocator,0xB36EB6E7,0x9D29,0x4AA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkMemoryAllocator, 0xB36EB6E7, 0x9D29,
+ 0x4AA8, 0x92, 0xEF, 0x84, 0x3B, 0x87, 0xA2, 0x89, 0xE8);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioOutputCallback,0x403C681B,0x7F46,0x4A12,0xB9,0x93,0x2B,0xB1,0x27,0x08,0x4E,0xE6);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkAudioOutputCallback, 0x403C681B, 0x7F46,
+ 0x4A12, 0xB9, 0x93, 0x2B, 0xB1, 0x27, 0x08, 0x4E, 0xE6);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkIterator,0x74E936FC,0xCC28,0x4A67,0x81,0xA0,0x1E,0x94,0xE5,0x2D,0x4E,0x69);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkIterator, 0x74E936FC, 0xCC28, 0x4A67,
+ 0x81, 0xA0, 0x1E, 0x94, 0xE5, 0x2D, 0x4E, 0x69);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAPIInformation,0x7BEA3C68,0x730D,0x4322,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkAPIInformation, 0x7BEA3C68, 0x730D,
+ 0x4322, 0xAF, 0x34, 0x8A, 0x71, 0x52, 0xB5, 0x32, 0xA4);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator,0x9C88499F,0xF601,0x4021,0xB8,0x0B,0x03,0x2E,0x4E,0xB4,0x1C,0x35);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayModeIterator, 0x9C88499F, 0xF601,
+ 0x4021, 0xB8, 0x0B, 0x03, 0x2E, 0x4E, 0xB4, 0x1C, 0x35);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x3EB2C1AB,0x0A3D,0x4523,0xA3,0xAD,0xF4,0x0D,0x7F,0xB1,0x4E,0x78);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayMode, 0x3EB2C1AB, 0x0A3D, 0x4523,
+ 0xA3, 0xAD, 0xF4, 0x0D, 0x7F, 0xB1, 0x4E, 0x78);
-MIDL_DEFINE_GUID(IID, IID_IDeckLink,0x62BFF75D,0x6569,0x4E55,0x8D,0x4D,0x66,0xAA,0x03,0x82,0x9A,0xBC);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLink, 0x62BFF75D, 0x6569, 0x4E55, 0x8D,
+ 0x4D, 0x66, 0xAA, 0x03, 0x82, 0x9A, 0xBC);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput,0xA3EF0963,0x0862,0x44ED,0x92,0xA9,0xEE,0x89,0xAB,0xF4,0x31,0xC7);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkOutput, 0xA3EF0963, 0x0862, 0x44ED,
+ 0x92, 0xA9, 0xEE, 0x89, 0xAB, 0xF4, 0x31, 0xC7);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0x6D40EF78,0x28B9,0x4E21,0x99,0x0D,0x95,0xBB,0x77,0x50,0xA0,0x4F);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInput, 0x6D40EF78, 0x28B9, 0x4E21, 0x99,
+ 0x0D, 0x95, 0xBB, 0x77, 0x50, 0xA0, 0x4F);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode,0xBC6CFBD3,0x8317,0x4325,0xAC,0x1C,0x12,0x16,0x39,0x1E,0x93,0x40);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkTimecode, 0xBC6CFBD3, 0x8317, 0x4325,
+ 0xAC, 0x1C, 0x12, 0x16, 0x39, 0x1E, 0x93, 0x40);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame,0x3F716FE0,0xF023,0x4111,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoFrame, 0x3F716FE0, 0xF023, 0x4111,
+ 0xBE, 0x5D, 0xEF, 0x44, 0x14, 0xC0, 0x5B, 0x17);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame,0x69E2639F,0x40DA,0x4E19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkMutableVideoFrame, 0x69E2639F, 0x40DA,
+ 0x4E19, 0xB6, 0xF2, 0x20, 0xAC, 0xE8, 0x15, 0xC3, 0x90);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame3DExtensions,0xDA0F7E4A,0xEDC7,0x48A8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoFrame3DExtensions, 0xDA0F7E4A,
+ 0xEDC7, 0x48A8, 0x9C, 0xDD, 0x2D, 0xB5, 0x1C, 0x72, 0x9C, 0xD7);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0x05CFE374,0x537C,0x4094,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoInputFrame, 0x05CFE374, 0x537C,
+ 0x4094, 0x9A, 0x57, 0x68, 0x05, 0x25, 0x11, 0x8F, 0x44);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillary,0x732E723C,0xD1A4,0x4E29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoFrameAncillary, 0x732E723C, 0xD1A4,
+ 0x4E29, 0x9E, 0x8E, 0x4A, 0x88, 0x79, 0x7A, 0x00, 0x04);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket,0xE43D5870,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkAudioInputPacket, 0xE43D5870, 0x2894,
+ 0x11DE, 0x8C, 0x30, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback,0xB1D3F49A,0x85FE,0x4C5D,0x95,0xC8,0x0B,0x5D,0x5D,0xCC,0xD4,0x38);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkScreenPreviewCallback, 0xB1D3F49A,
+ 0x85FE, 0x4C5D, 0x95, 0xC8, 0x0B, 0x5D, 0x5D, 0xCC, 0xD4, 0x38);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper,0x504E2209,0xCAC7,0x4C1A,0x9F,0xB4,0xC5,0xBB,0x62,0x74,0xD2,0x2F);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkGLScreenPreviewHelper, 0x504E2209,
+ 0xCAC7, 0x4C1A, 0x9F, 0xB4, 0xC5, 0xBB, 0x62, 0x74, 0xD2, 0x2F);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xC679A35B,0x610C,0x4D09,0xB7,0x48,0x1D,0x04,0x78,0x10,0x0F,0xC0);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkConfiguration, 0xC679A35B, 0x610C,
+ 0x4D09, 0xB7, 0x48, 0x1D, 0x04, 0x78, 0x10, 0x0F, 0xC0);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAttributes,0xABC11843,0xD966,0x44CB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkAttributes, 0xABC11843, 0xD966, 0x44CB,
+ 0x96, 0xE2, 0xA1, 0xCB, 0x5D, 0x31, 0x35, 0xC4);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkKeyer,0x89AFCAF5,0x65F8,0x421E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkKeyer, 0x89AFCAF5, 0x65F8, 0x421E, 0x98,
+ 0xF7, 0x96, 0xFE, 0x5F, 0x5B, 0xFB, 0xA3);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion,0x3BBCB8A2,0xDA2C,0x42D9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoConversion, 0x3BBCB8A2, 0xDA2C,
+ 0x42D9, 0xB5, 0xD8, 0x88, 0x08, 0x36, 0x44, 0xE9, 0x9A);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControlStatusCallback,0xE5F693C1,0x4283,0x4716,0xB1,0x8F,0xC1,0x43,0x15,0x21,0x95,0x5B);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDeckControlStatusCallback, 0xE5F693C1,
+ 0x4283, 0x4716, 0xB1, 0x8F, 0xC1, 0x43, 0x15, 0x21, 0x95, 0x5B);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControl,0x522A9E39,0x0F3C,0x4742,0x94,0xEE,0xD8,0x0D,0xE3,0x35,0xDA,0x1D);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDeckControl, 0x522A9E39, 0x0F3C, 0x4742,
+ 0x94, 0xEE, 0xD8, 0x0D, 0xE3, 0x35, 0xDA, 0x1D);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator,0xD9EDA3B3,0x2887,0x41FA,0xB7,0x24,0x01,0x7C,0xF1,0xEB,0x1D,0x37);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkIterator, 0xD9EDA3B3, 0x2887,
+ 0x41FA, 0xB7, 0x24, 0x01, 0x7C, 0xF1, 0xEB, 0x1D, 0x37);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkAPIInformation,0x263CA19F,0xED09,0x482E,0x9F,0x9D,0x84,0x00,0x57,0x83,0xA2,0x37);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkAPIInformation, 0x263CA19F, 0xED09,
+ 0x482E, 0x9F, 0x9D, 0x84, 0x00, 0x57, 0x83, 0xA2, 0x37);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper,0xF63E77C7,0xB655,0x4A4A,0x9A,0xD0,0x3C,0xA8,0x5D,0x39,0x43,0x43);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkGLScreenPreviewHelper, 0xF63E77C7,
+ 0xB655, 0x4A4A, 0x9A, 0xD0, 0x3C, 0xA8, 0x5D, 0x39, 0x43, 0x43);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0x7DBBBB11,0x5B7B,0x467D,0xAE,0xA4,0xCE,0xA4,0x68,0xFD,0x36,0x8C);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkVideoConversion, 0x7DBBBB11, 0x5B7B,
+ 0x467D, 0xAE, 0xA4, 0xCE, 0xA4, 0x68, 0xFD, 0x36, 0x8C);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControl_v7_9,0xA4D81043,0x0619,0x42B7,0x8E,0xD6,0x60,0x2D,0x29,0x04,0x1D,0xF7);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDeckControl_v7_9, 0xA4D81043, 0x0619,
+ 0x42B7, 0x8E, 0xD6, 0x60, 0x2D, 0x29, 0x04, 0x1D, 0xF7);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator_v7_6,0x455D741F,0x1779,0x4800,0x86,0xF5,0x0B,0x5D,0x13,0xD7,0x97,0x51);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayModeIterator_v7_6, 0x455D741F,
+ 0x1779, 0x4800, 0x86, 0xF5, 0x0B, 0x5D, 0x13, 0xD7, 0x97, 0x51);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode_v7_6,0x87451E84,0x2B7E,0x439E,0xA6,0x29,0x43,0x93,0xEA,0x4A,0x85,0x50);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayMode_v7_6, 0x87451E84, 0x2B7E,
+ 0x439E, 0xA6, 0x29, 0x43, 0x93, 0xEA, 0x4A, 0x85, 0x50);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_6,0x29228142,0xEB8C,0x4141,0xA6,0x21,0xF7,0x40,0x26,0x45,0x09,0x55);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkOutput_v7_6, 0x29228142, 0xEB8C, 0x4141,
+ 0xA6, 0x21, 0xF7, 0x40, 0x26, 0x45, 0x09, 0x55);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_6,0x300C135A,0x9F43,0x48E2,0x99,0x06,0x6D,0x79,0x11,0xD9,0x3C,0xF1);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInput_v7_6, 0x300C135A, 0x9F43, 0x48E2,
+ 0x99, 0x06, 0x6D, 0x79, 0x11, 0xD9, 0x3C, 0xF1);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode_v7_6,0xEFB9BCA6,0xA521,0x44F7,0xBD,0x69,0x23,0x32,0xF2,0x4D,0x9E,0xE6);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkTimecode_v7_6, 0xEFB9BCA6, 0xA521,
+ 0x44F7, 0xBD, 0x69, 0x23, 0x32, 0xF2, 0x4D, 0x9E, 0xE6);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v7_6,0xA8D8238E,0x6B18,0x4196,0x99,0xE1,0x5A,0xF7,0x17,0xB8,0x3D,0x32);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoFrame_v7_6, 0xA8D8238E, 0x6B18,
+ 0x4196, 0x99, 0xE1, 0x5A, 0xF7, 0x17, 0xB8, 0x3D, 0x32);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame_v7_6,0x46FCEE00,0xB4E6,0x43D0,0x91,0xC0,0x02,0x3A,0x7F,0xCE,0xB3,0x4F);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkMutableVideoFrame_v7_6, 0x46FCEE00,
+ 0xB4E6, 0x43D0, 0x91, 0xC0, 0x02, 0x3A, 0x7F, 0xCE, 0xB3, 0x4F);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_6,0x9A74FA41,0xAE9F,0x47AC,0x8C,0xF4,0x01,0xF4,0x2D,0xD5,0x99,0x65);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoInputFrame_v7_6, 0x9A74FA41,
+ 0xAE9F, 0x47AC, 0x8C, 0xF4, 0x01, 0xF4, 0x2D, 0xD5, 0x99, 0x65);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback_v7_6,0x373F499D,0x4B4D,0x4518,0xAD,0x22,0x63,0x54,0xE5,0xA5,0x82,0x5E);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkScreenPreviewCallback_v7_6, 0x373F499D,
+ 0x4B4D, 0x4518, 0xAD, 0x22, 0x63, 0x54, 0xE5, 0xA5, 0x82, 0x5E);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper_v7_6,0xBA575CD9,0xA15E,0x497B,0xB2,0xC2,0xF9,0xAF,0xE7,0xBE,0x4E,0xBA);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkGLScreenPreviewHelper_v7_6, 0xBA575CD9,
+ 0xA15E, 0x497B, 0xB2, 0xC2, 0xF9, 0xAF, 0xE7, 0xBE, 0x4E, 0xBA);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion_v7_6,0x3EB504C9,0xF97D,0x40FE,0xA1,0x58,0xD4,0x07,0xD4,0x8C,0xB5,0x3B);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoConversion_v7_6, 0x3EB504C9,
+ 0xF97D, 0x40FE, 0xA1, 0x58, 0xD4, 0x07, 0xD4, 0x8C, 0xB5, 0x3B);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v7_6,0xB8EAD569,0xB764,0x47F0,0xA7,0x3F,0xAE,0x40,0xDF,0x6C,0xBF,0x10);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkConfiguration_v7_6, 0xB8EAD569, 0xB764,
+ 0x47F0, 0xA7, 0x3F, 0xAE, 0x40, 0xDF, 0x6C, 0xBF, 0x10);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v7_6,0xE763A626,0x4A3C,0x49D1,0xBF,0x13,0xE7,0xAD,0x36,0x92,0xAE,0x52);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoOutputCallback_v7_6, 0xE763A626,
+ 0x4A3C, 0x49D1, 0xBF, 0x13, 0xE7, 0xAD, 0x36, 0x92, 0xAE, 0x52);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_6,0x31D28EE7,0x88B6,0x4CB1,0x89,0x7A,0xCD,0xBF,0x79,0xA2,0x64,0x14);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInputCallback_v7_6, 0x31D28EE7, 0x88B6,
+ 0x4CB1, 0x89, 0x7A, 0xCD, 0xBF, 0x79, 0xA2, 0x64, 0x14);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper_v7_6,0xD398CEE7,0x4434,0x4CA3,0x9B,0xA6,0x5A,0xE3,0x45,0x56,0xB9,0x05);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkGLScreenPreviewHelper_v7_6,
+ 0xD398CEE7, 0x4434, 0x4CA3, 0x9B, 0xA6, 0x5A, 0xE3, 0x45, 0x56, 0xB9,
+ 0x05);
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion_v7_6,0xFFA84F77,0x73BE,0x4FB7,0xB0,0x3E,0xB5,0xE4,0x4B,0x9F,0x75,0x9B);
+ MIDL_DEFINE_GUID (CLSID, CLSID_CDeckLinkVideoConversion_v7_6, 0xFFA84F77,
+ 0x73BE, 0x4FB7, 0xB0, 0x3E, 0xB5, 0xE4, 0x4B, 0x9F, 0x75, 0x9B);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_3,0xFD6F311D,0x4D00,0x444B,0x9E,0xD4,0x1F,0x25,0xB5,0x73,0x0A,0xD0);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInputCallback_v7_3, 0xFD6F311D, 0x4D00,
+ 0x444B, 0x9E, 0xD4, 0x1F, 0x25, 0xB5, 0x73, 0x0A, 0xD0);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_3,0x271C65E3,0xC323,0x4344,0xA3,0x0F,0xD9,0x08,0xBC,0xB2,0x0A,0xA3);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkOutput_v7_3, 0x271C65E3, 0xC323, 0x4344,
+ 0xA3, 0x0F, 0xD9, 0x08, 0xBC, 0xB2, 0x0A, 0xA3);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_3,0x4973F012,0x9925,0x458C,0x87,0x1C,0x18,0x77,0x4C,0xDB,0xBE,0xCB);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInput_v7_3, 0x4973F012, 0x9925, 0x458C,
+ 0x87, 0x1C, 0x18, 0x77, 0x4C, 0xDB, 0xBE, 0xCB);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_3,0xCF317790,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoInputFrame_v7_3, 0xCF317790,
+ 0x2894, 0x11DE, 0x8C, 0x30, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator_v7_1,0xB28131B6,0x59AC,0x4857,0xB5,0xAC,0xCD,0x75,0xD5,0x88,0x3E,0x2F);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayModeIterator_v7_1, 0xB28131B6,
+ 0x59AC, 0x4857, 0xB5, 0xAC, 0xCD, 0x75, 0xD5, 0x88, 0x3E, 0x2F);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode_v7_1,0xAF0CD6D5,0x8376,0x435E,0x84,0x33,0x54,0xF9,0xDD,0x53,0x0A,0xC3);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkDisplayMode_v7_1, 0xAF0CD6D5, 0x8376,
+ 0x435E, 0x84, 0x33, 0x54, 0xF9, 0xDD, 0x53, 0x0A, 0xC3);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v7_1,0x333F3A10,0x8C2D,0x43CF,0xB7,0x9D,0x46,0x56,0x0F,0xEE,0xA1,0xCE);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoFrame_v7_1, 0x333F3A10, 0x8C2D,
+ 0x43CF, 0xB7, 0x9D, 0x46, 0x56, 0x0F, 0xEE, 0xA1, 0xCE);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_1,0xC8B41D95,0x8848,0x40EE,0x9B,0x37,0x6E,0x34,0x17,0xFB,0x11,0x4B);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoInputFrame_v7_1, 0xC8B41D95,
+ 0x8848, 0x40EE, 0x9B, 0x37, 0x6E, 0x34, 0x17, 0xFB, 0x11, 0x4B);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket_v7_1,0xC86DE4F6,0xA29F,0x42E3,0xAB,0x3A,0x13,0x63,0xE2,0x9F,0x07,0x88);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkAudioInputPacket_v7_1, 0xC86DE4F6,
+ 0xA29F, 0x42E3, 0xAB, 0x3A, 0x13, 0x63, 0xE2, 0x9F, 0x07, 0x88);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v7_1,0xEBD01AFA,0xE4B0,0x49C6,0xA0,0x1D,0xED,0xB9,0xD1,0xB5,0x5F,0xD9);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkVideoOutputCallback_v7_1, 0xEBD01AFA,
+ 0xE4B0, 0x49C6, 0xA0, 0x1D, 0xED, 0xB9, 0xD1, 0xB5, 0x5F, 0xD9);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_1,0x7F94F328,0x5ED4,0x4E9F,0x97,0x29,0x76,0xA8,0x6B,0xDC,0x99,0xCC);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInputCallback_v7_1, 0x7F94F328, 0x5ED4,
+ 0x4E9F, 0x97, 0x29, 0x76, 0xA8, 0x6B, 0xDC, 0x99, 0xCC);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_1,0xAE5B3E9B,0x4E1E,0x4535,0xB6,0xE8,0x48,0x0F,0xF5,0x2F,0x6C,0xE5);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkOutput_v7_1, 0xAE5B3E9B, 0x4E1E, 0x4535,
+ 0xB6, 0xE8, 0x48, 0x0F, 0xF5, 0x2F, 0x6C, 0xE5);
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_1,0x2B54EDEF,0x5B32,0x429F,0xBA,0x11,0xBB,0x99,0x05,0x96,0xEA,0xCD);
+ MIDL_DEFINE_GUID (IID, IID_IDeckLinkInput_v7_1, 0x2B54EDEF, 0x5B32, 0x429F,
+ 0xBA, 0x11, 0xBB, 0x99, 0x05, 0x96, 0xEA, 0xCD);
#undef MIDL_DEFINE_GUID
#ifdef __cplusplus
}
#endif
-
-
-
diff --git a/sys/dvb/dvbbasebin.c b/sys/dvb/dvbbasebin.c
index 79e61c3..150326b 100644
--- a/sys/dvb/dvbbasebin.c
+++ b/sys/dvb/dvbbasebin.c
@@ -99,21 +99,21 @@
static void dvb_base_bin_dispose (GObject * object);
static void dvb_base_bin_finalize (GObject * object);
-static gboolean dvb_base_bin_ts_pad_probe_cb (GstPad * pad,
- GstBuffer * buf, gpointer user_data);
+static GstPadProbeReturn dvb_base_bin_ts_pad_probe_cb (GstPad * pad,
+ GstPadProbeType type, gpointer data, gpointer user_data);
static GstStateChangeReturn dvb_base_bin_change_state (GstElement * element,
GstStateChange transition);
static void dvb_base_bin_handle_message (GstBin * bin, GstMessage * message);
static void dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin,
- GstStructure * pat);
+ const GstStructure * pat);
static void dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin,
- GstStructure * pmt);
+ const GstStructure * pmt);
static void dvb_base_bin_pad_added_cb (GstElement * mpegtsparse,
GstPad * pad, DvbBaseBin * dvbbasebin);
static void dvb_base_bin_pad_removed_cb (GstElement * mpegtsparse,
GstPad * pad, DvbBaseBin * dvbbasebin);
static GstPad *dvb_base_bin_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * name);
+ GstPadTemplate * templ, const gchar * name, const GstCaps * caps);
static void dvb_base_bin_release_pad (GstElement * element, GstPad * pad);
static void dvb_base_bin_rebuild_filter (DvbBaseBin * dvbbasebin);
@@ -122,18 +122,6 @@
static void dvb_base_bin_program_destroy (gpointer data);
-static void
-dvb_base_bin_setup_interfaces (GType type)
-{
- static const GInterfaceInfo urihandler_info = {
- dvb_base_bin_uri_handler_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &urihandler_info);
-}
-
static DvbBaseBinStream *
dvb_base_bin_add_stream (DvbBaseBin * dvbbasebin, guint16 pid)
{
@@ -187,27 +175,10 @@
static guint signals [LAST_SIGNAL] = { 0 };
*/
-GST_BOILERPLATE_FULL (DvbBaseBin, dvb_base_bin, GstBin, GST_TYPE_BIN,
- dvb_base_bin_setup_interfaces);
-
-static void
-dvb_base_bin_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- element_class->request_new_pad = dvb_base_bin_request_new_pad;
- element_class->release_pad = dvb_base_bin_release_pad;
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&program_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
-
- gst_element_class_set_details_simple (element_class, "DVB bin",
- "Source/Bin/Video",
- "Access descramble and split DVB streams",
- "Alessandro Decina <alessandro@nnva.org>");
-}
+#define dvb_base_bin_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (DvbBaseBin, dvb_base_bin, GST_TYPE_BIN,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER,
+ dvb_base_bin_uri_handler_init));
static void
dvb_base_bin_class_init (DvbBaseBinClass * klass)
@@ -247,6 +218,18 @@
element_class = GST_ELEMENT_CLASS (klass);
element_class->change_state = dvb_base_bin_change_state;
+ element_class->request_new_pad = dvb_base_bin_request_new_pad;
+ element_class->release_pad = dvb_base_bin_release_pad;
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&program_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template));
+
+ gst_element_class_set_details_simple (element_class, "DVB bin",
+ "Source/Bin/Video",
+ "Access descramble and split DVB streams",
+ "Alessandro Decina <alessandro@nnva.org>");
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->set_property = dvb_base_bin_set_property;
@@ -311,6 +294,7 @@
g_param_spec_string ("program-numbers",
"Program Numbers",
"Colon separated list of programs", "", G_PARAM_READWRITE));
+
}
static void
@@ -332,7 +316,7 @@
static gint16 initial_pids[] = { 0, 1, 0x10, 0x11, 0x12, 0x14, -1 };
static void
-dvb_base_bin_init (DvbBaseBin * dvbbasebin, DvbBaseBinClass * klass)
+dvb_base_bin_init (DvbBaseBin * dvbbasebin)
{
DvbBaseBinStream *stream;
int i;
@@ -473,7 +457,7 @@
static GstPad *
dvb_base_bin_request_new_pad (GstElement * element,
- GstPadTemplate * templ, const gchar * name)
+ GstPadTemplate * templ, const gchar * name, const GstCaps * caps)
{
GstPad *pad;
GstPad *ghost;
@@ -543,8 +527,9 @@
dvbbasebin->pmtlist_changed = FALSE;
}
-static gboolean
-dvb_base_bin_ts_pad_probe_cb (GstPad * pad, GstBuffer * buf, gpointer user_data)
+static GstPadProbeReturn
+dvb_base_bin_ts_pad_probe_cb (GstPad * pad, GstPadProbeType type,
+ gpointer data, gpointer user_data)
{
DvbBaseBin *dvbbasebin = GST_DVB_BASE_BIN (user_data);
@@ -561,7 +546,7 @@
}
}
- return TRUE;
+ return GST_PAD_PROBE_OK;
}
static void
@@ -579,8 +564,8 @@
/* HACK: poll the cam in a buffer probe */
dvbbasebin->ts_pad =
gst_element_get_request_pad (dvbbasebin->mpegtsparse, "src%d");
- gst_pad_add_buffer_probe (dvbbasebin->ts_pad,
- G_CALLBACK (dvb_base_bin_ts_pad_probe_cb), dvbbasebin);
+ gst_pad_add_probe (dvbbasebin->ts_pad, GST_PAD_PROBE_TYPE_BLOCK,
+ dvb_base_bin_ts_pad_probe_cb, dvbbasebin, NULL);
} else {
GST_ERROR_OBJECT (dvbbasebin, "could not open %s", ca_file);
cam_device_free (dvbbasebin->hwcam);
@@ -797,12 +782,13 @@
if (message->type == GST_MESSAGE_ELEMENT &&
GST_ELEMENT (message->src) == GST_ELEMENT (dvbbasebin->mpegtsparse)) {
- const gchar *structure_name = gst_structure_get_name (message->structure);
+ const GstStructure *s = gst_message_get_structure (message);
+ const gchar *structure_name = gst_structure_get_name (s);
if (strcmp (structure_name, "pat") == 0)
- dvb_base_bin_pat_info_cb (dvbbasebin, message->structure);
+ dvb_base_bin_pat_info_cb (dvbbasebin, s);
else if (strcmp (structure_name, "pmt") == 0)
- dvb_base_bin_pmt_info_cb (dvbbasebin, message->structure);
+ dvb_base_bin_pmt_info_cb (dvbbasebin, s);
/*else if (strcmp (structure_name, "nit") == 0)
dvb_base_bin_nit_info_cb (dvbbasebin, message->structure);
@@ -822,7 +808,8 @@
static void
-dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin, GstStructure * pat_info)
+dvb_base_bin_pat_info_cb (DvbBaseBin * dvbbasebin,
+ const GstStructure * pat_info)
{
DvbBaseBinProgram *program;
DvbBaseBinStream *stream;
@@ -870,7 +857,7 @@
}
static void
-dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin, GstStructure * pmt)
+dvb_base_bin_pmt_info_cb (DvbBaseBin * dvbbasebin, const GstStructure * pmt)
{
DvbBaseBinProgram *program;
guint program_number;
@@ -965,13 +952,13 @@
}
static guint
-dvb_base_bin_uri_get_type (void)
+dvb_base_bin_uri_get_type (GType type)
{
return GST_URI_SRC;
}
static gchar **
-dvb_base_bin_uri_get_protocols (void)
+dvb_base_bin_uri_get_protocols (GType type)
{
static gchar *protocols[] = { (char *) "dvb", NULL };
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index d0bd1d4..1562908 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -305,24 +305,8 @@
******************************
*/
-GST_BOILERPLATE (GstDvbSrc, gst_dvbsrc, GstPushSrc, GST_TYPE_PUSH_SRC);
-
-static void
-gst_dvbsrc_base_init (gpointer gclass)
-{
- GstDvbSrcClass *klass = (GstDvbSrcClass *) gclass;
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&ts_src_factory));
-
- gst_element_class_set_details_simple (element_class, "DVB Source",
- "Source/Video",
- "Digital Video Broadcast Source",
- "P2P-VCR, C-Lab, University of Paderborn,"
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-}
-
+#define gst_dvbsrc_parent_class parent_class
+G_DEFINE_TYPE (GstDvbSrc, gst_dvbsrc, GST_TYPE_PUSH_SRC);
/* initialize the plugin's class */
static void
@@ -343,6 +327,16 @@
gobject_class->finalize = gst_dvbsrc_finalize;
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_dvbsrc_change_state);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&ts_src_factory));
+
+ gst_element_class_set_details_simple (gstelement_class, "DVB Source",
+ "Source/Video",
+ "Digital Video Broadcast Source",
+ "P2P-VCR, C-Lab, University of Paderborn,"
+ "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
+
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_dvbsrc_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dvbsrc_stop);
gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_dvbsrc_unlock);
@@ -459,7 +453,7 @@
* initialize structure
*/
static void
-gst_dvbsrc_init (GstDvbSrc * object, GstDvbSrcClass * klass)
+gst_dvbsrc_init (GstDvbSrc * object)
{
int i = 0;
@@ -907,12 +901,14 @@
gint ret_val = 0;
GstBuffer *buf = gst_buffer_new_and_alloc (size);
GstClockTime timeout = object->timeout * GST_USECOND;
+ guint8 *data;
g_return_val_if_fail (GST_IS_BUFFER (buf), NULL);
if (object->fd_dvr < 0)
return NULL;
+ data = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
while (count < size) {
ret_val = gst_poll_wait (object->poll, timeout);
GST_LOG_OBJECT (object, "select returned %d", ret_val);
@@ -925,10 +921,9 @@
/* timeout, post element message */
gst_element_post_message (GST_ELEMENT_CAST (object),
gst_message_new_element (GST_OBJECT (object),
- gst_structure_empty_new ("dvb-read-failure")));
+ gst_structure_new_empty ("dvb-read-failure")));
} else {
- int nread =
- read (object->fd_dvr, GST_BUFFER_DATA (buf) + count, size - count);
+ int nread = read (object->fd_dvr, data + count, size - count);
if (G_UNLIKELY (nread < 0)) {
GST_WARNING_OBJECT
@@ -937,24 +932,25 @@
object->adapter_number, object->frontend_number, errno);
gst_element_post_message (GST_ELEMENT_CAST (object),
gst_message_new_element (GST_OBJECT (object),
- gst_structure_empty_new ("dvb-read-failure")));
+ gst_structure_new_empty ("dvb-read-failure")));
} else
count = count + nread;
}
}
-
- GST_BUFFER_SIZE (buf) = count;
+ gst_buffer_unmap (buf, data, count);
GST_BUFFER_TIMESTAMP (buf) = GST_CLOCK_TIME_NONE;
return buf;
stopped:
GST_DEBUG_OBJECT (object, "stop called");
+ gst_buffer_unmap (buf, data, 0);
gst_buffer_unref (buf);
return NULL;
select_error:
GST_ELEMENT_ERROR (object, RESOURCE, READ, (NULL),
("select error %d: %s (%d)", ret_val, g_strerror (errno), errno));
+ gst_buffer_unmap (buf, data, 0);
gst_buffer_unref (buf);
return NULL;
}
@@ -981,13 +977,7 @@
GST_DEBUG_OBJECT (object, "Reading from DVR device");
*buf = gst_dvbsrc_read_device (object, buffer_size);
if (*buf != NULL) {
- GstCaps *caps;
-
retval = GST_FLOW_OK;
-
- caps = gst_pad_get_caps (GST_BASE_SRC_PAD (object));
- gst_buffer_set_caps (*buf, caps);
- gst_caps_unref (caps);
}
if (object->stats_interval != 0 &&
diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c
index 6de7b12..b2d3aef 100644
--- a/sys/dvb/parsechannels.c
+++ b/sys/dvb/parsechannels.c
@@ -156,8 +156,8 @@
guint major, minor, micro, nano;
gst_version (&major, &minor, µ, &nano);
- filename = g_strdup_printf ("%s/.gstreamer-%d.%d/dvb-channels.conf",
- g_get_home_dir (), major, minor);
+ filename = g_strdup_printf ("%s/gstreamer-%d.%d/dvb-channels.conf",
+ g_get_user_config_dir (), major, minor);
}
channels = parse_channels_conf_from_file (filename);
g_free (filename);
diff --git a/sys/qtwrapper/audiodecoders.c b/sys/qtwrapper/audiodecoders.c
index 5a29c47..32f8e1d 100644
--- a/sys/qtwrapper/audiodecoders.c
+++ b/sys/qtwrapper/audiodecoders.c
@@ -747,7 +747,8 @@
return noErr;
}
- GST_LOG_OBJECT (qtwrapper, "No remaining input data, returning NO_MORE_INPUT_DATA");
+ GST_LOG_OBJECT (qtwrapper,
+ "No remaining input data, returning NO_MORE_INPUT_DATA");
return NO_MORE_INPUT_DATA;
}
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 75750ea..1720521 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -197,7 +197,7 @@
TESTS = $(check_PROGRAMS)
-AM_CFLAGS = $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS) \
+AM_CFLAGS = $(GST_CFLAGS) $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS) \
-DGST_TEST_FILES_PATH="\"$(TEST_FILES_DIRECTORY)\"" \
-UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
LDADD = $(GST_CHECK_LIBS)
@@ -207,7 +207,7 @@
libparser_la_SOURCES = elements/parser.c elements/parser.h
libparser_la_CFLAGS = \
-I$(top_srcdir)/tests/check \
- $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS)
+ $(GST_CFLAGS) $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS)
elements_mpegvideoparse_LDADD = libparser.la $(LDADD)
diff --git a/tests/check/elements/parser.c b/tests/check/elements/parser.c
index 392f3ce..0d5d0ba 100644
--- a/tests/check/elements/parser.c
+++ b/tests/check/elements/parser.c
@@ -55,16 +55,19 @@
buffer = gst_buffer_new_and_alloc (size);
if (buffer_data) {
- memcpy (GST_BUFFER_DATA (buffer), buffer_data, size);
+ gst_buffer_fill (buffer, 0, buffer_data, size);
} else {
guint i;
+ guint8 *data;
+
/* Create a recognizable pattern (loop 0x00 -> 0xff) in the data block */
+ data = gst_buffer_map (buffer, NULL, NULL, GST_MAP_WRITE);
for (i = 0; i < size; i++) {
- GST_BUFFER_DATA (buffer)[i] = i % 0x100;
+ data[i] = i % 0x100;
}
+ gst_buffer_unmap (buffer, data, size);
}
- gst_buffer_set_caps (buffer, GST_PAD_CAPS (srcpad));
GST_BUFFER_OFFSET (buffer) = dataoffset;
dataoffset += size;
return buffer;
@@ -77,7 +80,7 @@
buffer_count_size (void *buffer, void *user_data)
{
guint *sum = (guint *) user_data;
- *sum += GST_BUFFER_SIZE (buffer);
+ *sum += gst_buffer_get_size (buffer);
}
/*
@@ -99,7 +102,7 @@
if (ctx_verify_buffer)
ctx_verify_buffer (vdata, buffer);
vdata->buffer_counter++;
- vdata->offset_counter += GST_BUFFER_SIZE (buffer);
+ vdata->offset_counter += gst_buffer_get_size (buffer);
if (vdata->buffer_counter == vdata->discard) {
vdata->buffer_counter = 0;
vdata->discard = 0;
@@ -108,8 +111,8 @@
}
if (!ctx_verify_buffer || !ctx_verify_buffer (vdata, buffer)) {
- fail_unless (GST_BUFFER_SIZE (buffer) == vdata->data_to_verify_size);
- fail_unless (memcmp (GST_BUFFER_DATA (buffer), vdata->data_to_verify,
+ fail_unless (gst_buffer_get_size (buffer) == vdata->data_to_verify_size);
+ fail_unless (gst_buffer_memcmp (buffer, 0, vdata->data_to_verify,
vdata->data_to_verify_size) == 0);
}
@@ -125,14 +128,8 @@
fail_unless (GST_BUFFER_OFFSET (buffer) == vdata->offset_counter);
}
- if (vdata->caps) {
- GST_LOG ("%" GST_PTR_FORMAT " = %" GST_PTR_FORMAT " ?",
- GST_BUFFER_CAPS (buffer), vdata->caps);
- fail_unless (gst_caps_is_equal (GST_BUFFER_CAPS (buffer), vdata->caps));
- }
-
vdata->ts_counter += GST_BUFFER_DURATION (buffer);
- vdata->offset_counter += GST_BUFFER_SIZE (buffer);
+ vdata->offset_counter += gst_buffer_get_size (buffer);
vdata->buffer_counter++;
}
@@ -246,14 +243,8 @@
if (!k)
buffer = buffer_new (test->series[j].data, test->series[j].size);
else {
- GstCaps *caps = gst_buffer_get_caps (buffer);
-
buffer = gst_buffer_join (buffer,
buffer_new (test->series[j].data, test->series[j].size));
- if (caps) {
- gst_buffer_set_caps (buffer, caps);
- gst_caps_unref (caps);
- }
}
}
fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK);
@@ -292,7 +283,7 @@
fail_unless_equals_int (datasum, size);
}
- src_caps = gst_pad_get_negotiated_caps (sinkpad);
+ src_caps = gst_pad_get_current_caps (sinkpad);
GST_LOG ("output caps: %" GST_PTR_FORMAT, src_caps);
if (test->sink_caps) {
diff --git a/tests/examples/camerabin/gst-camera-perf.c b/tests/examples/camerabin/gst-camera-perf.c
index c5554a0..04793ef 100644
--- a/tests/examples/camerabin/gst-camera-perf.c
+++ b/tests/examples/camerabin/gst-camera-perf.c
@@ -171,15 +171,16 @@
static void print_result (void);
static gboolean run_test (gpointer user_data);
static gboolean setup_add_pad_probe (GstElement * elem, const gchar * pad_name,
- GCallback handler, gpointer data);
+ GstPadProbeCallback handler, gpointer data);
/*
* Callbacks
*/
-static gboolean
-pad_has_buffer (GstPad * pad, GstBuffer * buf, gpointer user_data)
+static GstPadProbeReturn
+pad_has_buffer (GstPad * pad, GstPadProbeType type, gpointer type_data,
+ gpointer user_data)
{
gboolean *signal_sink = (gboolean *) user_data;
gboolean print_and_restart = FALSE;
@@ -209,7 +210,7 @@
print_result ();
g_idle_add ((GSourceFunc) run_test, NULL);
}
- return TRUE;
+ return GST_PAD_PROBE_OK;
}
static void
@@ -227,8 +228,7 @@
if (elem) {
need_vmux_pad_probe = FALSE;
GST_INFO_OBJECT (elem, "got default video muxer");
- if (setup_add_pad_probe (elem, "src", (GCallback) pad_has_buffer,
- &signal_vid_sink)) {
+ if (setup_add_pad_probe (elem, "src", pad_has_buffer, &signal_vid_sink)) {
/* enable test */
target[8] = test_09_taget;
}
@@ -239,8 +239,7 @@
if (elem) {
need_ienc_pad_probe = FALSE;
GST_INFO_OBJECT (elem, "got default image encoder");
- if (setup_add_pad_probe (elem, "src", (GCallback) pad_has_buffer,
- &signal_img_enc)) {
+ if (setup_add_pad_probe (elem, "src", pad_has_buffer, &signal_img_enc)) {
/* enable test */
target[5] = test_06_taget;
}
@@ -480,7 +479,7 @@
static gboolean
setup_add_pad_probe (GstElement * elem, const gchar * pad_name,
- GCallback handler, gpointer data)
+ GstPadProbeCallback handler, gpointer data)
{
GstPad *pad = NULL;
@@ -489,7 +488,8 @@
return FALSE;
}
- gst_pad_add_buffer_probe (pad, (GCallback) handler, data);
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER,
+ handler, data, NULL);
gst_object_unref (pad);
return TRUE;
@@ -567,13 +567,12 @@
/* set properties */
g_object_set (camera_bin, "filename", filename->str, NULL);
- if (src_csp && strlen (src_csp) == 4) {
+ if (src_csp) {
GstCaps *filter_caps;
/* FIXME: why do we need to set this? */
- filter_caps = gst_caps_new_simple ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC,
- GST_MAKE_FOURCC (src_csp[0], src_csp[1], src_csp[2], src_csp[3]), NULL);
+ filter_caps = gst_caps_new_simple ("video/x-raw",
+ "format", G_TYPE_STRING, src_csp, NULL);
if (filter_caps) {
g_object_set (camera_bin, "filter-caps", filter_caps, NULL);
gst_caps_unref (filter_caps);
@@ -589,8 +588,7 @@
/* connect signal handlers */
g_assert (sink);
- if (!setup_add_pad_probe (sink, "sink", (GCallback) pad_has_buffer,
- &signal_vf_sink)) {
+ if (!setup_add_pad_probe (sink, "sink", pad_has_buffer, &signal_vf_sink)) {
goto error;
}
if (!vmux) {
@@ -603,8 +601,7 @@
}
}
if (vmux) {
- if (!setup_add_pad_probe (vmux, "src", (GCallback) pad_has_buffer,
- &signal_vid_sink)) {
+ if (!setup_add_pad_probe (vmux, "src", pad_has_buffer, &signal_vid_sink)) {
goto error;
}
}
@@ -618,8 +615,7 @@
}
}
if (ienc) {
- if (!setup_add_pad_probe (ienc, "src", (GCallback) pad_has_buffer,
- &signal_img_enc)) {
+ if (!setup_add_pad_probe (ienc, "src", pad_has_buffer, &signal_img_enc)) {
goto error;
}
}
diff --git a/tests/examples/camerabin/gst-camera.c b/tests/examples/camerabin/gst-camera.c
index 80a3121..5b33f54 100644
--- a/tests/examples/camerabin/gst-camera.c
+++ b/tests/examples/camerabin/gst-camera.c
@@ -32,7 +32,7 @@
#include "gst-camera.h"
#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
+#include <gst/interfaces/videooverlay.h>
#include <gst/interfaces/colorbalance.h>
#include <gst/interfaces/photography.h>
#include <gtk/gtk.h>
diff --git a/tests/examples/camerabin/gst-camerabin-test.c b/tests/examples/camerabin/gst-camerabin-test.c
index 27037fa..e4fb5bc 100644
--- a/tests/examples/camerabin/gst-camerabin-test.c
+++ b/tests/examples/camerabin/gst-camerabin-test.c
@@ -89,7 +89,7 @@
#define GST_USE_UNSTABLE_API 1
#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
+#include <gst/interfaces/videooverlay.h>
#include <gst/interfaces/photography.h>
#include <string.h>
#include <sys/time.h>
@@ -240,8 +240,7 @@
const GValue *image;
GstBuffer *buf = NULL;
guint8 *data_buf = NULL;
- gchar *caps_string;
- guint size = 0;
+ gsize size = 0;
gchar *preview_filename = NULL;
FILE *f = NULL;
size_t written;
@@ -250,10 +249,10 @@
case GST_MESSAGE_ELEMENT:{
st = gst_message_get_structure (message);
if (st) {
- if (gst_structure_has_name (message->structure, "prepare-xwindow-id")) {
+ if (gst_structure_has_name (st, "prepare-xwindow-id")) {
if (!no_xwindow && window) {
- gst_x_overlay_set_window_handle (GST_X_OVERLAY (GST_MESSAGE_SRC
- (message)), window);
+ gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY
+ (GST_MESSAGE_SRC (message)), window);
gst_message_unref (message);
message = NULL;
return GST_BUS_DROP;
@@ -266,13 +265,10 @@
image = gst_structure_get_value (st, "buffer");
if (image) {
buf = gst_value_get_buffer (image);
- data_buf = GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
+ data_buf = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
preview_filename = g_strdup_printf ("test_vga.rgb");
- caps_string = gst_caps_to_string (GST_BUFFER_CAPS (buf));
- g_print ("writing buffer to %s, elapsed: %.2fs, buffer caps: %s\n",
- preview_filename, g_timer_elapsed (timer, NULL), caps_string);
- g_free (caps_string);
+ g_print ("writing buffer to %s, elapsed: %.2fs\n",
+ preview_filename, g_timer_elapsed (timer, NULL));
f = g_fopen (preview_filename, "w");
if (f) {
written = fwrite (data_buf, size, 1, f);
@@ -284,6 +280,7 @@
g_print ("error opening file for raw image writing\n");
}
g_free (preview_filename);
+ gst_buffer_unmap (buf, data_buf, size);
}
}
}
@@ -526,12 +523,11 @@
/* set properties */
if (src_format) {
filter_caps = gst_caps_from_string (src_format);
- } else if (src_csp && strlen (src_csp) == 4) {
+ } else if (src_csp) {
/* Set requested colorspace format, this is needed if the default
colorspace negotiated for viewfinder doesn't match with e.g. encoders. */
- filter_caps = gst_caps_new_simple ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC,
- GST_MAKE_FOURCC (src_csp[0], src_csp[1], src_csp[2], src_csp[3]), NULL);
+ filter_caps = gst_caps_new_simple ("video/x-raw",
+ "format", G_TYPE_STRING, src_csp, NULL);
}
if (filter_caps) {
@@ -646,8 +642,7 @@
g_object_get (camera_bin, "video-source", &video_source, NULL);
if (video_source) {
- if (GST_IS_ELEMENT (video_source) &&
- gst_element_implements_interface (video_source, GST_TYPE_PHOTOGRAPHY)) {
+ if (GST_IS_ELEMENT (video_source) && GST_IS_PHOTOGRAPHY (video_source)) {
/* Set GstPhotography interface options. If option not given as
command-line parameter use default of the source element. */
if (scene_mode != SCENE_MODE_NONE)
diff --git a/tests/examples/opencv/gst_element_print_properties.c b/tests/examples/opencv/gst_element_print_properties.c
index 4192fe8..e91188b 100644
--- a/tests/examples/opencv/gst_element_print_properties.c
+++ b/tests/examples/opencv/gst_element_print_properties.c
@@ -403,8 +403,8 @@
pfraction->def_num, pfraction->def_den);
}
- else if (GST_IS_PARAM_SPEC_MINI_OBJECT (param)) {
- g_print ("%-*.*s | MiniObject of type \"%s\"",
+ else if (G_IS_PARAM_SPEC_BOXED (param)) {
+ g_print ("%-*.*s | Boxed of type \"%s\"",
c3w, c3w,
g_type_name (param->value_type), g_type_name (param->value_type));
}
diff --git a/win32/common/config.h b/win32/common/config.h
index 16f0ed2..dd84f00 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -6,7 +6,7 @@
#undef ENABLE_NLS
/* gettext package name */
-#define GETTEXT_PACKAGE "gst-plugins-bad-0.10"
+#define GETTEXT_PACKAGE "gst-plugins-bad-0.11"
/* PREFIX - specifically added for Windows for easier moving */
#define PREFIX "C:\\gstreamer"
@@ -199,7 +199,7 @@
#undef USE_POISONING
/* Version number of package */
-#define VERSION "0.10.22.1"
+#define VERSION "0.11.0.1"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */