--- /dev/null
+From 0088753651350de3060ece22c1be4153b6009515 Mon Sep 17 00:00:00 2001
+From: Peter Korsgaard <jacmet@sunsite.dk>
+Date: Wed, 25 Jan 2012 23:53:04 +0100
+Subject: [PATCH] base: vorbisdeclib: support modern Tremor versions
+
+Reported upstream as https://bugzilla.gnome.org/show_bug.cgi?id=668726
+
+Tremor changed to use standard libogg rather than its own incompatible
+copy back in Aug 2010 (r17375), causing gst-plugin-base build to fail.
+
+Tremolo so far unfortunately hasn't been updated. Restructure
+vorbisdeclib.h so the legacy _ogg_packet_wrapper code is only used for
+Tremolo.
+
+Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
+---
+ ext/vorbis/gstvorbisdeclib.h | 77 ++++++++++++++++++++++-------------------
+ 1 files changed, 41 insertions(+), 36 deletions(-)
+
+diff --git a/ext/vorbis/gstvorbisdeclib.h b/ext/vorbis/gstvorbisdeclib.h
+index ca00af9..e147591 100644
+--- a/ext/vorbis/gstvorbisdeclib.h
++++ b/ext/vorbis/gstvorbisdeclib.h
+@@ -29,11 +29,6 @@
+
+ #ifndef TREMOR
+
+-#include <vorbis/codec.h>
+-
+-typedef float vorbis_sample_t;
+-typedef ogg_packet ogg_packet_wrapper;
+-
+ #define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to float audio"
+
+ #define GST_VORBIS_DEC_SRC_CAPS \
+@@ -47,6 +42,42 @@ typedef ogg_packet ogg_packet_wrapper;
+
+ #define GST_VORBIS_DEC_GLIB_TYPE_NAME GstVorbisDec
+
++#else /* TREMOR */
++
++#define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to integer audio"
++
++#define GST_VORBIS_DEC_SRC_CAPS \
++ GST_STATIC_CAPS ("audio/x-raw-int, " \
++ "rate = (int) [ 1, MAX ], " \
++ "channels = (int) [ 1, 6 ], " \
++ "endianness = (int) BYTE_ORDER, " \
++ "width = (int) { 16, 32 }, " \
++ "depth = (int) 16, " \
++ "signed = (boolean) true")
++
++#define GST_VORBIS_DEC_DEFAULT_SAMPLE_WIDTH (16)
++
++/* we need a different type name here */
++#define GST_VORBIS_DEC_GLIB_TYPE_NAME GstIVorbisDec
++
++/* and still have it compile */
++typedef struct _GstVorbisDec GstIVorbisDec;
++typedef struct _GstVorbisDecClass GstIVorbisDecClass;
++
++#endif /* TREMOR */
++
++#ifndef USE_TREMOLO
++
++#ifdef TREMOR
++ #include <tremor/ivorbiscodec.h>
++ typedef ogg_int32_t vorbis_sample_t;
++#else
++ #include <vorbis/codec.h>
++ typedef float vorbis_sample_t;
++#endif
++
++typedef ogg_packet ogg_packet_wrapper;
++
+ static inline guint8 *
+ gst_ogg_packet_data (ogg_packet * p)
+ {
+@@ -72,17 +103,11 @@ gst_ogg_packet_from_wrapper (ogg_packet_wrapper * packet)
+ return packet;
+ }
+
+-#else
+-
+-#ifdef USE_TREMOLO
+- #include <Tremolo/ivorbiscodec.h>
+- #include <Tremolo/codec_internal.h>
+- typedef ogg_int16_t vorbis_sample_t;
+-#else
+- #include <tremor/ivorbiscodec.h>
+- typedef ogg_int32_t vorbis_sample_t;
+-#endif
++#else /* USE_TREMOLO */
+
++#include <Tremolo/ivorbiscodec.h>
++#include <Tremolo/codec_internal.h>
++typedef ogg_int16_t vorbis_sample_t;
+ typedef struct _ogg_packet_wrapper ogg_packet_wrapper;
+
+ struct _ogg_packet_wrapper {
+@@ -91,26 +116,6 @@ struct _ogg_packet_wrapper {
+ ogg_buffer buf;
+ };
+
+-#define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to integer audio"
+-
+-#define GST_VORBIS_DEC_SRC_CAPS \
+- GST_STATIC_CAPS ("audio/x-raw-int, " \
+- "rate = (int) [ 1, MAX ], " \
+- "channels = (int) [ 1, 6 ], " \
+- "endianness = (int) BYTE_ORDER, " \
+- "width = (int) { 16, 32 }, " \
+- "depth = (int) 16, " \
+- "signed = (boolean) true")
+-
+-#define GST_VORBIS_DEC_DEFAULT_SAMPLE_WIDTH (16)
+-
+-/* we need a different type name here */
+-#define GST_VORBIS_DEC_GLIB_TYPE_NAME GstIVorbisDec
+-
+-/* and still have it compile */
+-typedef struct _GstVorbisDec GstIVorbisDec;
+-typedef struct _GstVorbisDecClass GstIVorbisDecClass;
+-
+ /* compensate minor variation */
+ #define vorbis_synthesis(a, b) vorbis_synthesis (a, b, 1)
+
+@@ -154,7 +159,7 @@ gst_ogg_packet_from_wrapper (ogg_packet_wrapper * packet)
+ return &(packet->packet);
+ }
+
+-#endif
++#endif /* USE_TREMOLO */
+
+ typedef void (*CopySampleFunc)(vorbis_sample_t *out, vorbis_sample_t **in,
+ guint samples, gint channels, gint width);
+--
+1.7.8.3
+