Previously, I submitted a patch "[PATCH v2][packages]gst-plugins-base: disable 
building ivorbis plugin" that disables ivorbis plugin build. Michel Stempin 
pointed out an upstream patch that fixes the issue directly in the vorbis 
decoder header. I had missed this patch in my previous searches.

This patch reverts the disabling of ivorbis and adds the upstream fix. I have 
tested this patch and it fixes the build issue. Thanks to Michel Stempin for 
bringing this to my attention and pointing me to the upstream fix.

Signed-off-by John Vogel <[email protected]>

--
diff --git a/multimedia/gst-plugins-base/Makefile 
b/multimedia/gst-plugins-base/Makefile
index 9951c3f..9c16586 100644
--- a/multimedia/gst-plugins-base/Makefile
+++ b/multimedia/gst-plugins-base/Makefile
@@ -86,7 +86,6 @@ CONFIGURE_ARGS += \
        $(call GST_COND_SELECT,gio) \
        --disable-gnome_vfs \
        --disable-gst_v4l \
-       --disable-ivorbis \
        --disable-libvisual \
        $(call GST_COND_SELECT,ogg) \
        --disable-oggtest \
diff --git 
a/multimedia/gst-plugins-base/patches/004-vorbisdec-support_modern_Tremor_versions.patch
 
b/multimedia/gst-plugins-base/patches/004-vorbisdec-support_modern_Tremor_versions.patch
new file mode 100644
index 0000000..be357e3
--- /dev/null
+++ 
b/multimedia/gst-plugins-base/patches/004-vorbisdec-support_modern_Tremor_versions.patch
@@ -0,0 +1,135 @@
+From 787e896bdeb6c67d13a918ec55d3826fa010fb90 Mon Sep 17 00:00:00 2001
+From: Peter Korsgaard <[email protected]>
+Date: Wed, 25 Jan 2012 22:53:04 +0000
+Subject: vorbisdec: support modern Tremor versions
+
+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 int/float logic is seperate from the ogg handling,
+and only use the legacy _ogg_packet_wrapper code for Tremolo.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=668726
+---
+(limited to 'ext/vorbis/gstvorbisdeclib.h')
+
+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);
+--
+cgit v0.9.0.2-2-gbebe
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to