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, &timestamp,
-              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, &timestamp);
+      gst_event_parse_qos (event, &type, &proportion, &diff, &timestamp);
 
       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;&quot;../../gst-libs&quot;;../../../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;&quot;../../gst-libs&quot;;../../../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, &section);
+
       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, &section);
+
+        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, &section);
-
     } 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, &micro, &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). */