From 7443cbb3d9e2f891cfbf0994837e1452dca06d10 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 15 Dec 2014 21:01:33 +0000
Subject: gstreamer0.10-base: update to 0.10.36-3

---
 abs/extra/community/gstreamer0.10-base/PKGBUILD    |  51 +++--
 abs/extra/community/gstreamer0.10-base/__changelog |   1 -
 .../gstreamer0.10-base/ayuv64-lanczos.patch        | 236 +++++++++++++++++++++
 .../gstreamer0.10-base/colorbalance-fix-abi.patch  |  23 ++
 .../gstreamer0.10-base/fix-crash-0-byte-ogg.patch  |  22 ++
 .../gstreamer0.10-base/gstaudio-symbols.patch      |  10 +
 .../revert-decodebin-playbin-removal.patch         | 122 +++++++++++
 .../videoscale-fix-negotiation.patch               | 171 +++++++++++++++
 8 files changed, 620 insertions(+), 16 deletions(-)
 delete mode 100644 abs/extra/community/gstreamer0.10-base/__changelog
 create mode 100644 abs/extra/community/gstreamer0.10-base/ayuv64-lanczos.patch
 create mode 100644 abs/extra/community/gstreamer0.10-base/colorbalance-fix-abi.patch
 create mode 100644 abs/extra/community/gstreamer0.10-base/fix-crash-0-byte-ogg.patch
 create mode 100644 abs/extra/community/gstreamer0.10-base/gstaudio-symbols.patch
 create mode 100644 abs/extra/community/gstreamer0.10-base/revert-decodebin-playbin-removal.patch
 create mode 100644 abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch

diff --git a/abs/extra/community/gstreamer0.10-base/PKGBUILD b/abs/extra/community/gstreamer0.10-base/PKGBUILD
index 5bfea48..bc63724 100644
--- a/abs/extra/community/gstreamer0.10-base/PKGBUILD
+++ b/abs/extra/community/gstreamer0.10-base/PKGBUILD
@@ -1,41 +1,62 @@
-# $Id: PKGBUILD 153257 2012-03-12 15:48:41Z jgc $
+# $Id$
 # Maintainer: Jan de Groot <jgc@archlinux.org>
 
 pkgbase=('gstreamer0.10-base')
 pkgname=('gstreamer0.10-base' 'gstreamer0.10-base-plugins')
 pkgver=0.10.36
-pkgrel=1
+pkgrel=3
 arch=('i686' 'x86_64')
 license=('LGPL')
-makedepends=('pkgconfig' 'gstreamer0.10>=0.10.35' 'orc' 'libxv' 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango' 'gobject-introspection')
-options=(!libtool !emptydirs)
+makedepends=('pkgconfig' 'gstreamer0.10>=0.10.36' 'orc' 'libxv' 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango' 'gobject-introspection' 'git')
+options=(!emptydirs)
 url="http://gstreamer.freedesktop.org/"
-source=(${url}/src/gst-plugins-base/gst-plugins-base-${pkgver}.tar.xz)
-sha256sums=('1fe45c3894903001d4d008b0713dab089f53726dcb5842d5b40c2595a984e64a')
+source=("git://anongit.freedesktop.org/gstreamer-sdk/gst-plugins-base#commit=48d5966f12d4e6b71c96db0600cf76ef0ef14b3a"
+        fix-crash-0-byte-ogg.patch
+        colorbalance-fix-abi.patch
+        revert-decodebin-playbin-removal.patch
+        videoscale-fix-negotiation.patch
+        ayuv64-lanczos.patch
+        gstaudio-symbols.patch)
+sha256sums=('SKIP'
+            'a6a01035ea9627737f9c17f72919857ed43ccc7c2cb08b645b43ed89f78d0f4f'
+            '7442c5c68068428b8c7ac1d3825ce29f1bb152b75b77047b9e806c7d322b780c'
+            'ba20659fafea73db016ddaecd128f12087e0957ce35cf2c3ce29f72c51551ef3'
+            'ae27f7be58997217f67898b37b138a485c203389e56b65e6b31c23f769ef39ca'
+            '3792dfe80c69f51c0db98533e8fb16707b5dd2ee6933ea6098583af873ceb44a'
+            '56e7a988df39d2ec4befa265536ad8c30d3c8d18d136cebef64e8d6baac1abae')
+
+prepare() {
+  cd gst-plugins-base
+  sed -i -e '/AC_PATH_XTRA/d' -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac
+  patch -Np1 -i ../fix-crash-0-byte-ogg.patch
+  patch -Np1 -i ../colorbalance-fix-abi.patch
+  patch -Np1 -i ../ayuv64-lanczos.patch
+  patch -Np1 -i ../videoscale-fix-negotiation.patch
+  patch -Np1 -i ../gstaudio-symbols.patch
+  patch -Np1 -R -i ../revert-decodebin-playbin-removal.patch
+}
 
 build() {
-  cd "${srcdir}/gst-plugins-base-${pkgver}"
-  sed -i '/AC_PATH_XTRA/d' configure.ac
-  autoreconf
+  cd gst-plugins-base
+  NOCONFIGURE=1 ./autogen.sh
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
-    --disable-static --enable-experimental --disable-gnome_vfs \
+    --disable-static --enable-experimental --disable-gnome_vfs --disable-gtk-doc \
     --with-package-name="GStreamer Base Plugins (Archlinux)" \
     --with-package-origin="http://www.archlinux.org/"
-
   make
   sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile
 }
 
 check() {
-  cd "${srcdir}/gst-plugins-base-${pkgver}"
+  cd gst-plugins-base
   make check
 }
 
 package_gstreamer0.10-base() {
   pkgdesc="GStreamer Multimedia Framework Base plugin libraries"
-  depends=('gstreamer0.10>=0.10.35' 'orc' 'libxv')
+  depends=('gstreamer0.10>=0.10.36' 'orc' 'libxv')
 
-  cd "${srcdir}/gst-plugins-base-${pkgver}"
+  cd gst-plugins-base
   make DESTDIR="${pkgdir}" install
 }
 
@@ -46,7 +67,7 @@ package_gstreamer0.10-base-plugins() {
   conflicts=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-ogg')
   groups=('gstreamer0.10-plugins')
 
-  cd "${srcdir}/gst-plugins-base-${pkgver}"
+  cd gst-plugins-base
   make -C gst-libs DESTDIR="${pkgdir}" install
   make -C ext DESTDIR="${pkgdir}" install
   make -C gst-libs DESTDIR="${pkgdir}" uninstall
diff --git a/abs/extra/community/gstreamer0.10-base/__changelog b/abs/extra/community/gstreamer0.10-base/__changelog
deleted file mode 100644
index 05c3a3b..0000000
--- a/abs/extra/community/gstreamer0.10-base/__changelog
+++ /dev/null
@@ -1 +0,0 @@
-removed jack and libpulse
diff --git a/abs/extra/community/gstreamer0.10-base/ayuv64-lanczos.patch b/abs/extra/community/gstreamer0.10-base/ayuv64-lanczos.patch
new file mode 100644
index 0000000..64106e4
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/ayuv64-lanczos.patch
@@ -0,0 +1,236 @@
+From e4f01106d08f3c2a65897bfe919bd65ce55545a8 Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Wed, 25 Jan 2012 23:49:00 +0000
+Subject: videoscale: Add AYUV64 path to Lanczos
+
+---
+diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
+index 7b44647..6df4ba6 100644
+--- a/gst/videoscale/gstvideoscale.c
++++ b/gst/videoscale/gstvideoscale.c
+@@ -1199,6 +1199,11 @@ gst_video_scale_transform (GstBaseTransform * trans, GstBuffer * in,
+         case GST_VIDEO_SCALE_4TAP:
+           vs_image_scale_4tap_AYUV64 (&dest, &src, videoscale->tmp_buf);
+           break;
++        case GST_VIDEO_SCALE_LANCZOS:
++          vs_image_scale_lanczos_AYUV64 (&dest, &src, videoscale->tmp_buf,
++              videoscale->sharpness, videoscale->dither, videoscale->submethod,
++              videoscale->envelope, videoscale->sharpen);
++          break;
+         default:
+           goto unknown_mode;
+       }
+diff --git a/gst/videoscale/vs_image.h b/gst/videoscale/vs_image.h
+index 2312acc..7b34991 100644
+--- a/gst/videoscale/vs_image.h
++++ b/gst/videoscale/vs_image.h
+@@ -52,6 +52,9 @@ void vs_image_scale_linear_RGBA (const VSImage *dest, const VSImage *src,
+ void vs_image_scale_lanczos_AYUV (const VSImage * dest, const VSImage * src,
+     uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
+     double a, double sharpen);
++void vs_image_scale_lanczos_AYUV64 (const VSImage * dest, const VSImage * src,
++    uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
++    double a, double sharpen);
+ 
+ void vs_image_scale_nearest_RGB (const VSImage *dest, const VSImage *src,
+     uint8_t *tmpbuf);
+diff --git a/gst/videoscale/vs_lanczos.c b/gst/videoscale/vs_lanczos.c
+index 1c87ba3..d141a01 100644
+--- a/gst/videoscale/vs_lanczos.c
++++ b/gst/videoscale/vs_lanczos.c
+@@ -204,6 +204,9 @@ static void vs_image_scale_lanczos_AYUV_float (const VSImage * dest,
+ static void vs_image_scale_lanczos_AYUV_double (const VSImage * dest,
+     const VSImage * src, uint8_t * tmpbuf, double sharpness, gboolean dither,
+     double a, double sharpen);
++static void vs_image_scale_lanczos_AYUV64_double (const VSImage * dest,
++    const VSImage * src, uint8_t * tmpbuf, double sharpness, gboolean dither,
++    double a, double sharpen);
+ 
+ static double
+ sinc (double x)
+@@ -590,6 +593,15 @@ vs_image_scale_lanczos_AYUV (const VSImage * dest, const VSImage * src,
+   }
+ }
+ 
++void
++vs_image_scale_lanczos_AYUV64 (const VSImage * dest, const VSImage * src,
++    uint8_t * tmpbuf, double sharpness, gboolean dither, int submethod,
++    double a, double sharpen)
++{
++  vs_image_scale_lanczos_AYUV64_double (dest, src, tmpbuf, sharpness, dither,
++      a, sharpen);
++}
++
+ 
+ 
+ #define RESAMPLE_HORIZ_FLOAT(function, dest_type, tap_type, src_type, _n_taps) \
+@@ -813,9 +825,9 @@ RESAMPLE_VERT_DITHER (resample_vert_dither_int16_generic, gint16, gint16,
+     n_taps, shift)
+ /* *INDENT-ON* */
+ 
+-#define RESAMPLE_VERT_FLOAT(function, tap_type, src_type, _n_taps, _shift) \
++#define RESAMPLE_VERT_FLOAT(function, dest_type, clamp, tap_type, src_type, _n_taps, _shift) \
+ static void \
+-function (guint8 *dest, \
++function (dest_type *dest, \
+     const tap_type *taps, const src_type *src, int stride, int n_taps, \
+     int shift, int n) \
+ { \
+@@ -828,13 +840,13 @@ function (guint8 *dest, \
+       const src_type *line = PTR_OFFSET(src, stride * l); \
+       sum_y += line[i] * taps[l]; \
+     } \
+-    dest[i] = CLAMP (floor(0.5 + sum_y), 0, 255); \
++    dest[i] = CLAMP (floor(0.5 + sum_y), 0, clamp); \
+   } \
+ }
+ 
+-#define RESAMPLE_VERT_FLOAT_DITHER(function, tap_type, src_type, _n_taps, _shift) \
++#define RESAMPLE_VERT_FLOAT_DITHER(function, dest_type, clamp, tap_type, src_type, _n_taps, _shift) \
+ static void \
+-function (guint8 *dest, \
++function (dest_type *dest, \
+     const tap_type *taps, const src_type *src, int stride, int n_taps, \
+     int shift, int n) \
+ { \
+@@ -849,19 +861,24 @@ function (guint8 *dest, \
+       sum_y += line[i] * taps[l]; \
+     } \
+     err_y += sum_y; \
+-    dest[i] = CLAMP (floor (err_y), 0, 255); \
++    dest[i] = CLAMP (floor (err_y), 0, clamp); \
+     err_y -= floor (err_y); \
+   } \
+ }
+ 
+ /* *INDENT-OFF* */
+-RESAMPLE_VERT_FLOAT (resample_vert_double_generic, double, double, n_taps,
++RESAMPLE_VERT_FLOAT (resample_vert_double_generic, guint8, 255, double, double, n_taps,
+     shift)
+-RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic, double, double,
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic, guint8, 255, double, double,
+     n_taps, shift)
+ 
+-RESAMPLE_VERT_FLOAT (resample_vert_float_generic, float, float, n_taps, shift)
+-RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_float_generic, float, float,
++RESAMPLE_VERT_FLOAT (resample_vert_double_generic_u16, guint16, 65535, double, double, n_taps,
++    shift)
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_double_generic_u16, guint16, 65535, double, double,
++    n_taps, shift)
++
++RESAMPLE_VERT_FLOAT (resample_vert_float_generic, guint8, 255, float, float, n_taps, shift)
++RESAMPLE_VERT_FLOAT_DITHER (resample_vert_dither_float_generic, guint8, 255, float, float,
+     n_taps, shift)
+ /* *INDENT-ON* */
+ 
+@@ -1556,3 +1573,77 @@ vs_image_scale_lanczos_AYUV_float (const VSImage * dest, const VSImage * src,
+   scale1d_cleanup (&scale->y_scale1d);
+   g_free (scale->tmpdata);
+ }
++
++static void
++vs_scale_lanczos_AYUV64_double (Scale * scale)
++{
++  int j;
++  int yi;
++  int tmp_yi;
++
++  tmp_yi = 0;
++
++  for (j = 0; j < scale->dest->height; j++) {
++    guint16 *destline;
++    double *taps;
++
++    destline = (guint16 *) (scale->dest->pixels + scale->dest->stride * j);
++
++    yi = scale->y_scale1d.offsets[j];
++
++    while (tmp_yi < yi + scale->y_scale1d.n_taps) {
++      scale->horiz_resample_func (TMP_LINE_DOUBLE_AYUV (tmp_yi),
++          scale->x_scale1d.offsets, scale->x_scale1d.taps, SRC_LINE (tmp_yi),
++          scale->x_scale1d.n_taps, 0, scale->dest->width);
++      tmp_yi++;
++    }
++
++    taps = (double *) scale->y_scale1d.taps + j * scale->y_scale1d.n_taps;
++    if (scale->dither) {
++      resample_vert_dither_double_generic_u16 (destline,
++          taps, TMP_LINE_DOUBLE_AYUV (scale->y_scale1d.offsets[j]),
++          sizeof (double) * 4 * scale->dest->width,
++          scale->y_scale1d.n_taps, 0, scale->dest->width * 4);
++    } else {
++      resample_vert_double_generic_u16 (destline,
++          taps, TMP_LINE_DOUBLE_AYUV (scale->y_scale1d.offsets[j]),
++          sizeof (double) * 4 * scale->dest->width,
++          scale->y_scale1d.n_taps, 0, scale->dest->width * 4);
++    }
++  }
++}
++
++void
++vs_image_scale_lanczos_AYUV64_double (const VSImage * dest, const VSImage * src,
++    uint8_t * tmpbuf, double sharpness, gboolean dither, double a,
++    double sharpen)
++{
++  Scale s = { 0 };
++  Scale *scale = &s;
++  int n_taps;
++
++  scale->dest = dest;
++  scale->src = src;
++
++  n_taps = scale1d_get_n_taps (src->width, dest->width, a, sharpness);
++  scale1d_calculate_taps (&scale->x_scale1d,
++      src->width, dest->width, n_taps, a, sharpness, sharpen);
++
++  n_taps = scale1d_get_n_taps (src->height, dest->height, a, sharpness);
++  scale1d_calculate_taps (&scale->y_scale1d,
++      src->height, dest->height, n_taps, a, sharpness, sharpen);
++
++  scale->dither = dither;
++
++  scale->horiz_resample_func =
++      (HorizResampleFunc) resample_horiz_double_ayuv_generic;
++
++  scale->tmpdata =
++      g_malloc (sizeof (double) * scale->dest->width * scale->src->height * 4);
++
++  vs_scale_lanczos_AYUV64_double (scale);
++
++  scale1d_cleanup (&scale->x_scale1d);
++  scale1d_cleanup (&scale->y_scale1d);
++  g_free (scale->tmpdata);
++}
+--
+cgit v0.9.0.2-2-gbebe
+From f8dc679ca7e9542e6f410062df5e332fc8e0ba9d Mon Sep 17 00:00:00 2001
+From: David Schleef <ds@schleef.org>
+Date: Sun, 19 Feb 2012 08:03:03 +0000
+Subject: videoscale: fix AYUV64 scaling
+
+---
+diff --git a/gst/videoscale/vs_lanczos.c b/gst/videoscale/vs_lanczos.c
+index d141a01..67cd401 100644
+--- a/gst/videoscale/vs_lanczos.c
++++ b/gst/videoscale/vs_lanczos.c
+@@ -728,6 +728,9 @@ RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_double_ayuv_generic, double, double,
+ RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_float_ayuv_generic, float, float,
+     guint8, n_taps)
+ 
++RESAMPLE_HORIZ_AYUV_FLOAT (resample_horiz_double_ayuv_generic_s16, double, double,
++    guint16, n_taps)
++
+ RESAMPLE_HORIZ (resample_horiz_int32_int32_u8_generic, gint32, gint32,
+     guint8, n_taps, shift)
+ RESAMPLE_HORIZ (resample_horiz_int16_int16_u8_generic, gint16, gint16,
+@@ -1636,7 +1639,7 @@ vs_image_scale_lanczos_AYUV64_double (const VSImage * dest, const VSImage * src,
+   scale->dither = dither;
+ 
+   scale->horiz_resample_func =
+-      (HorizResampleFunc) resample_horiz_double_ayuv_generic;
++      (HorizResampleFunc) resample_horiz_double_ayuv_generic_s16;
+ 
+   scale->tmpdata =
+       g_malloc (sizeof (double) * scale->dest->width * scale->src->height * 4);
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/abs/extra/community/gstreamer0.10-base/colorbalance-fix-abi.patch b/abs/extra/community/gstreamer0.10-base/colorbalance-fix-abi.patch
new file mode 100644
index 0000000..1e7b8f2
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/colorbalance-fix-abi.patch
@@ -0,0 +1,23 @@
+From 0cb4ccb1f09d39820682e052fc106f5fd7fa1309 Mon Sep 17 00:00:00 2001
+From: Stefan Sauer <ensonic@users.sf.net>
+Date: Fri, 24 Feb 2012 20:37:00 +0000
+Subject: interfaces: fix ABI class padding after the recent changes
+
+---
+(limited to 'gst-libs/gst/interfaces/colorbalance.h')
+
+diff --git a/gst-libs/gst/interfaces/colorbalance.h b/gst-libs/gst/interfaces/colorbalance.h
+index fd8ceaa..9f0a1cd 100644
+--- a/gst-libs/gst/interfaces/colorbalance.h
++++ b/gst-libs/gst/interfaces/colorbalance.h
+@@ -102,7 +102,7 @@ struct _GstColorBalanceClass {
+   GstColorBalanceType (*get_balance_type)  (GstColorBalance *balance);
+ 
+   /*< private >*/
+-  gpointer _gst_reserved[GST_PADDING];
++  gpointer _gst_reserved[GST_PADDING-1];
+ };
+ 
+ GType   gst_color_balance_get_type      (void);
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/abs/extra/community/gstreamer0.10-base/fix-crash-0-byte-ogg.patch b/abs/extra/community/gstreamer0.10-base/fix-crash-0-byte-ogg.patch
new file mode 100644
index 0000000..2c03e82
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/fix-crash-0-byte-ogg.patch
@@ -0,0 +1,22 @@
+From 7f22e3ea7f713867e1fbf2ef71b6a6e36e1f0531 Mon Sep 17 00:00:00 2001
+From: Jonathan Liu <net147@gmail.com>
+Date: Sun, 28 Oct 2012 10:07:16 +0000
+Subject: oggstream: fix crash with 0 byte ogg packets
+
+https://bugzilla.gnome.org/show_bug.cgi?id=687030
+---
+diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
+index c79f088..fe28f2e 100644
+--- a/ext/ogg/gstoggstream.c
++++ b/ext/ogg/gstoggstream.c
+@@ -790,7 +790,7 @@ setup_vorbis_mapper (GstOggStream * pad, ogg_packet * packet)
+ static gboolean
+ is_header_vorbis (GstOggStream * pad, ogg_packet * packet)
+ {
+-  if (packet->bytes > 0 && (packet->packet[0] & 0x01) == 0)
++  if (packet->bytes == 0 || (packet->packet[0] & 0x01) == 0)
+     return FALSE;
+ 
+   if (packet->packet[0] == 5) {
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/abs/extra/community/gstreamer0.10-base/gstaudio-symbols.patch b/abs/extra/community/gstreamer0.10-base/gstaudio-symbols.patch
new file mode 100644
index 0000000..7e2ad0f
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/gstaudio-symbols.patch
@@ -0,0 +1,10 @@
+--- gst-plugins-base/win32/common/libgstaudio.def.orig	2013-12-10 12:09:41.280012610 +0000
++++ gst-plugins-base/win32/common/libgstaudio.def	2013-12-10 12:10:12.253127720 +0000
+@@ -24,6 +24,7 @@
+ 	gst_audio_decoder_get_plc_aware
+ 	gst_audio_decoder_get_tolerance
+ 	gst_audio_decoder_get_type
++	gst_audio_decoder_merge_tags
+ 	gst_audio_decoder_set_byte_time
+ 	gst_audio_decoder_set_drainable
+ 	gst_audio_decoder_set_latency
diff --git a/abs/extra/community/gstreamer0.10-base/revert-decodebin-playbin-removal.patch b/abs/extra/community/gstreamer0.10-base/revert-decodebin-playbin-removal.patch
new file mode 100644
index 0000000..2e59139
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/revert-decodebin-playbin-removal.patch
@@ -0,0 +1,122 @@
+From fece626254e3b250e4514d1c92ac8289421d9511 Mon Sep 17 00:00:00 2001
+From: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+Date: Thu, 15 Mar 2012 11:34:22 +0000
+Subject: Disable old playbin and decodebin
+
+---
+diff --git a/gst/playback/Makefile.am b/gst/playback/Makefile.am
+index a0f1abc..700f581 100644
+--- a/gst/playback/Makefile.am
++++ b/gst/playback/Makefile.am
+@@ -6,19 +6,15 @@ glib_gen_basename = gstplay
+ built_sources = gstplay-marshal.c
+ built_headers = gstplay-marshal.h
+ 
+-plugin_LTLIBRARIES = libgstplaybin.la libgstdecodebin.la libgstdecodebin2.la
++plugin_LTLIBRARIES = libgstplaybin.la libgstdecodebin2.la
+ 
+ csp_cflags = -DCOLORSPACE=\"ffmpegcolorspace\"
+ 
+ libgstplaybin_la_SOURCES = \
+ 	gstplayback.c \
+-	gstplaybin.c \
+ 	gstplaybin2.c \
+ 	gstplaysink.c \
+-	gstplaybasebin.c \
+ 	gstplay-enum.c \
+-	gststreaminfo.c \
+-	gststreamselector.c \
+ 	gstsubtitleoverlay.c \
+ 	gstplaysinkvideoconvert.c \
+ 	gstplaysinkaudioconvert.c \
+@@ -37,17 +33,6 @@ if !GST_PLUGIN_BUILD_STATIC
+ libgstplaybin_la_LIBTOOLFLAGS = --tag=disable-static
+ endif
+ 
+-libgstdecodebin_la_SOURCES = gstdecodebin.c
+-nodist_libgstdecodebin_la_SOURCES = $(built_sources)
+-libgstdecodebin_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(csp_cflags)
+-libgstdecodebin_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+-libgstdecodebin_la_LIBADD = \
+-	$(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_MAJORMINOR@.la \
+-	$(GST_LIBS)
+-if !GST_PLUGIN_BUILD_STATIC
+-libgstdecodebin_la_LIBTOOLFLAGS = --tag=disable-static
+-endif
+-
+ libgstdecodebin2_la_SOURCES = gstdecodebin2.c gsturidecodebin.c gstplay-enum.c
+ nodist_libgstdecodebin2_la_SOURCES = $(built_sources)
+ libgstdecodebin2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(csp_cflags)
+@@ -61,11 +46,8 @@ endif
+ 
+ noinst_HEADERS = \
+ 	gstplayback.h \
+-	gstplaybasebin.h \
+ 	gstplaysink.h \
+-	gststreaminfo.h \
+ 	gstplay-enum.h \
+-	gststreamselector.h \
+ 	gstrawcaps.h \
+ 	gstsubtitleoverlay.h \
+ 	gstplaysinkvideoconvert.h \
+@@ -83,18 +65,6 @@ include $(top_srcdir)/common/gst-glib-gen.mak
+ 
+ Android.mk: Makefile.am $(BUILT_SOURCES)
+ 	androgenizer \
+-	-:PROJECT libgstdecodebin -:SHARED libgstdecodebin \
+-	 -:TAGS eng debug \
+-         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+-	 -:SOURCES $(libgstdecodebin_la_SOURCES) \
+-	           $(nodist_libgstdecodebin_la_SOURCES) \
+-	 -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdecodebin_la_CFLAGS) $(csp_cflags) \
+-	 -:LDFLAGS $(libgstdecodebin_la_LDFLAGS) \
+-	           $(libgstdecodebin_la_LIBADD) \
+-	           -ldl \
+-	 -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+-		       LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+-	 \
+ 	-:PROJECT libgstdecodebin2 -:SHARED libgstdecodebin2 \
+ 	 -:TAGS eng debug \
+          -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+diff --git a/gst/playback/gstplayback.c b/gst/playback/gstplayback.c
+index 5b74786..f99df6e 100644
+--- a/gst/playback/gstplayback.c
++++ b/gst/playback/gstplayback.c
+@@ -29,8 +29,6 @@
+ 
+ #include "gstplayback.h"
+ #include "gstplaysink.h"
+-#include "gststreamselector.h"
+-#include "gststreaminfo.h"
+ #include "gstsubtitleoverlay.h"
+ 
+ static gboolean
+@@ -47,13 +45,7 @@ plugin_init (GstPlugin * plugin)
+   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ #endif /* ENABLE_NLS */
+ 
+-  /* ref class from a thread-safe context to work around missing bit of
+-   * thread-safety in GObject */
+-  g_type_class_ref (GST_TYPE_STREAM_INFO);
+-  g_type_class_ref (GST_TYPE_STREAM_SELECTOR);
+-
+-  res = gst_play_bin_plugin_init (plugin);
+-  res &= gst_play_bin2_plugin_init (plugin);
++  res = gst_play_bin2_plugin_init (plugin);
+   res &= gst_play_sink_plugin_init (plugin);
+   res &= gst_subtitle_overlay_plugin_init (plugin);
+ 
+diff --git a/gst/playback/gstplayback.h b/gst/playback/gstplayback.h
+index 4be121c..5981cdd 100644
+--- a/gst/playback/gstplayback.h
++++ b/gst/playback/gstplayback.h
+@@ -24,7 +24,6 @@
+ #include <gst/gst.h>
+ 
+ gboolean gst_decode_bin_plugin_init (GstPlugin * plugin);
+-gboolean gst_play_bin_plugin_init (GstPlugin * plugin);
+ gboolean gst_play_bin2_plugin_init (GstPlugin * plugin);
+ 
+ 
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch b/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch
new file mode 100644
index 0000000..6e34d41
--- /dev/null
+++ b/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch
@@ -0,0 +1,171 @@
+From 63d1316c0fd4ce22cf4a53f4aa7cb1ca16a07aa8 Mon Sep 17 00:00:00 2001
+From: Tim-Philipp Müller <tim.muller@collabora.co.uk>
+Date: Sun, 26 Feb 2012 18:19:57 +0000
+Subject: videoscale: fix negotiation after addition of new formats and methods
+
+Now that we no longer support all methods for all formats, we
+need to cater for that in the transform function: we can't
+transform formats not supported by the currently-selected
+mehod.
+
+make check, folks. It's da bomb.
+---
+diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
+index 9f072a3..60dd5ff 100644
+--- a/gst/videoscale/gstvideoscale.c
++++ b/gst/videoscale/gstvideoscale.c
+@@ -424,10 +424,118 @@ gst_video_scale_get_property (GObject * object, guint prop_id, GValue * value,
+   }
+ }
+ 
++#define NEAREST  (1 << GST_VIDEO_SCALE_NEAREST)
++#define BILINEAR (1 << GST_VIDEO_SCALE_BILINEAR)
++#define FOURTAP  (1 << GST_VIDEO_SCALE_4TAP)
++#define LANCZOS  (1 << GST_VIDEO_SCALE_LANCZOS)
++
++/* or we could just do lookups via table[format] if we could be bothered..  */
++static const struct
++{
++  GstVideoFormat format;
++  guint8 methods;
++} formats_methods_table[] = {
++  {
++  GST_VIDEO_FORMAT_RGBx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_xRGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_BGRx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_xBGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_RGBA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_ARGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_BGRA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_ABGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_AYUV, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_ARGB64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_AYUV64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_RGB, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_BGR, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_v308, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_YUY2, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_YVYU, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_UYVY, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_Y800, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_GRAY8, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_GRAY16_LE, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_GRAY16_BE, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_Y16, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_I420, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_YV12, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_Y444, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_Y42B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_Y41B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
++  GST_VIDEO_FORMAT_NV12, NEAREST | BILINEAR}, {
++  GST_VIDEO_FORMAT_RGB16, NEAREST | BILINEAR | FOURTAP}, {
++  GST_VIDEO_FORMAT_RGB15, NEAREST | BILINEAR | FOURTAP}
++};
++
++static gboolean
++gst_video_scale_format_supported_for_method (GstVideoFormat format,
++    GstVideoScaleMethod method)
++{
++  int i;
++
++  for (i = 0; i < G_N_ELEMENTS (formats_methods_table); ++i) {
++    if (formats_methods_table[i].format == format)
++      return ((formats_methods_table[i].methods & (1 << method)) != 0);
++  }
++  return FALSE;
++}
++
++static gboolean
++gst_video_scale_transform_supported (GstVideoScale * videoscale,
++    GstVideoScaleMethod method, GstStructure * structure)
++{
++  const GValue *val;
++  GstVideoFormat fmt;
++  gboolean supported = TRUE;
++  GstStructure *s;
++  GstCaps *c;
++
++  /* we support these methods for all formats */
++  if (method == GST_VIDEO_SCALE_NEAREST || method == GST_VIDEO_SCALE_BILINEAR)
++    return TRUE;
++
++  /* we need fixed caps if we want to use gst_video_parse_caps() */
++  s = gst_structure_new (gst_structure_get_name (structure),
++      "width", G_TYPE_INT, 1, "height", G_TYPE_INT, 1, NULL);
++
++  if ((val = gst_structure_get_value (structure, "format"))) {
++    gst_structure_set_value (s, "format", val);
++  } else {
++    if ((val = gst_structure_get_value (structure, "endianness")))
++      gst_structure_set_value (s, "endianness", val);
++    if ((val = gst_structure_get_value (structure, "red_mask")))
++      gst_structure_set_value (s, "red_mask", val);
++    if ((val = gst_structure_get_value (structure, "blue_mask")))
++      gst_structure_set_value (s, "blue_mask", val);
++    if ((val = gst_structure_get_value (structure, "green_mask")))
++      gst_structure_set_value (s, "green_mask", val);
++    if ((val = gst_structure_get_value (structure, "alpha_mask")))
++      gst_structure_set_value (s, "alpha_mask", val);
++    if ((val = gst_structure_get_value (structure, "depth")))
++      gst_structure_set_value (s, "depth", val);
++    if ((val = gst_structure_get_value (structure, "bpp")))
++      gst_structure_set_value (s, "bpp", val);
++  }
++  c = gst_caps_new_full (s, NULL);
++  if (!gst_video_format_parse_caps (c, &fmt, NULL, NULL)) {
++    GST_ERROR_OBJECT (videoscale, "couldn't parse %" GST_PTR_FORMAT, c);
++  } else if (!gst_video_scale_format_supported_for_method (fmt, method)) {
++    supported = FALSE;
++  }
++  GST_LOG_OBJECT (videoscale, "method %d %ssupported for format %d",
++      method, (supported) ? "" : "not ", fmt);
++  gst_caps_unref (c);
++
++  return supported;
++}
++
+ static GstCaps *
+ gst_video_scale_transform_caps (GstBaseTransform * trans,
+     GstPadDirection direction, GstCaps * caps)
+ {
++  GstVideoScale *videoscale = GST_VIDEO_SCALE (trans);
++  GstVideoScaleMethod method;
+   GstCaps *ret;
+   GstStructure *structure;
+ 
+@@ -441,6 +549,13 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
+   ret = gst_caps_copy (caps);
+   structure = gst_structure_copy (gst_caps_get_structure (ret, 0));
+ 
++  GST_OBJECT_LOCK (videoscale);
++  method = videoscale->method;
++  GST_OBJECT_UNLOCK (videoscale);
++
++  if (!gst_video_scale_transform_supported (videoscale, method, structure))
++    goto format_not_supported;
++
+   gst_structure_set (structure,
+       "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+       "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
+@@ -452,9 +567,19 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
+   }
+   gst_caps_append_structure (ret, structure);
+ 
++done:
++
+   GST_DEBUG_OBJECT (trans, "returning caps: %" GST_PTR_FORMAT, ret);
+ 
+   return ret;
++
++format_not_supported:
++  {
++    gst_structure_free (structure);
++    gst_caps_unref (ret);
++    ret = gst_caps_new_empty ();
++    goto done;
++  }
+ }
+ 
+ static gboolean
+--
+cgit v0.9.0.2-2-gbebe
-- 
cgit v0.12