summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--configure.ac11
-rw-r--r--ext/speex/gstspeexdec.h41
-rw-r--r--ext/speex/gstspeexenc.h72
4 files changed, 76 insertions, 56 deletions
diff --git a/ChangeLog b/ChangeLog
index f3f1ce86..bb732618 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-12-23 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * configure.ac:
+ * ext/speex/gstspeexdec.h:
+ * ext/speex/gstspeexenc.h:
+ Fixes #158382. Make speex plugin compatible with both 1.0 and 1.1.
+ Fix detection code in configure.ac
+
2004-12-23 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/matroska/matroska-demux.c:
diff --git a/configure.ac b/configure.ac
index 97064bbe..00f99652 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1575,10 +1575,10 @@ GST_CHECK_FEATURE(SPEEX, [speex plug-in], speex, [
AC_SUBST(SPEEX_CFLAGS)
AC_SUBST(SPEEX_LIBS)
], [
- GST_CHECK_LIBHEADER(SPEEX, speex, speex_bits_init, , speex.h, [
- AC_CHECK_HEADER(speex_jitter.h, [
+ GST_CHECK_LIBHEADER(SPEEX, speex, speex_bits_init, , speex/speex.h, [
+ AC_CHECK_HEADER(speex/speex_jitter.h, [
dnl speex 1.1.x :
- GST_CHECK_LIBHEADER(SPEEX, speex, speex_encode_int, , speex.h, [
+ GST_CHECK_LIBHEADER(SPEEX, speex, speex_encode_int, , speex/speex.h, [
dnl speex 1.1.5 or + :
HAVE_SPEEX="yes"
SPEEX_LIBS="-lspeex"
@@ -1595,9 +1595,14 @@ GST_CHECK_FEATURE(SPEEX, [speex plug-in], speex, [
SPEEX_LIBS="-lspeex"
AC_SUBST(SPEEX_CFLAGS)
AC_SUBST(SPEEX_LIBS)
+
+ AC_DEFINE_UNQUOTED(SPEEX_1_0, 1,
+ [defined if speex 1.0.x API detected])
],[
HAVE_SPEEX="no"
AC_MSG_NOTICE(You need at least 1.0.4 to compile the speex plugin)
+ ], [
+#include <speex/speex.h>
])
])
])
diff --git a/ext/speex/gstspeexdec.h b/ext/speex/gstspeexdec.h
index f0cd61c0..f60a679e 100644
--- a/ext/speex/gstspeexdec.h
+++ b/ext/speex/gstspeexdec.h
@@ -21,7 +21,6 @@
#ifndef __GST_SPEEXDEC_H__
#define __GST_SPEEXDEC_H__
-
#include <gst/gst.h>
#include <speex/speex.h>
#include <speex/speex_callbacks.h>
@@ -32,7 +31,6 @@
extern "C" {
#endif /* __cplusplus */
-
#define GST_TYPE_SPEEXDEC \
(gst_speex_dec_get_type())
#define GST_SPEEXDEC(obj) \
@@ -50,25 +48,30 @@ typedef struct _GstSpeexDecClass GstSpeexDecClass;
#define DEC_MAX_FRAME_SIZE 2000
struct _GstSpeexDec {
- GstElement element;
+ GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
-
- void *state;
- SpeexStereoState stereo;
- const SpeexMode * mode;
- SpeexHeader *header;
- SpeexCallback callback;
- SpeexBits bits;
-
- gfloat output[DEC_MAX_FRAME_SIZE];
-
- gboolean enh;
-
- gint frame_size;
- guint64 samples_out;
- guint64 packetno;
+ GstPad *sinkpad,
+ *srcpad;
+
+ void *state;
+ SpeexStereoState stereo;
+#ifdef SPEEX_1_0
+ SpeexMode *mode;
+#else
+ const SpeexMode *mode;
+#endif
+ SpeexHeader *header;
+ SpeexCallback callback;
+ SpeexBits bits;
+
+ gfloat output[DEC_MAX_FRAME_SIZE];
+
+ gboolean enh;
+
+ gint frame_size;
+ guint64 samples_out;
+ guint64 packetno;
};
struct _GstSpeexDecClass {
diff --git a/ext/speex/gstspeexenc.h b/ext/speex/gstspeexenc.h
index 0c002031..8f01811d 100644
--- a/ext/speex/gstspeexenc.h
+++ b/ext/speex/gstspeexenc.h
@@ -59,54 +59,58 @@ typedef struct _GstSpeexEnc GstSpeexEnc;
typedef struct _GstSpeexEncClass GstSpeexEncClass;
struct _GstSpeexEnc {
- GstElement element;
+ GstElement element;
/* pads */
- GstPad *sinkpad,
- *srcpad;
+ GstPad *sinkpad,
+ *srcpad;
- gint packet_count;
- gint n_packets;
+ gint packet_count;
+ gint n_packets;
- SpeexBits bits;
- SpeexHeader header;
- const SpeexMode *speex_mode;
- void *state;
- GstSpeexMode mode;
- GstAdapter *adapter;
+ SpeexBits bits;
+ SpeexHeader header;
+#if SPEEX_1_0
+ SpeexMode *speex_mode;
+#else
+ const SpeexMode *speex_mode;
+#endif
+ void *state;
+ GstSpeexMode mode;
+ GstAdapter *adapter;
- gfloat quality;
- gint bitrate;
- gboolean vbr;
- gint abr;
- gboolean vad;
- gboolean dtx;
- gint complexity;
- gint nframes;
+ gfloat quality;
+ gint bitrate;
+ gboolean vbr;
+ gint abr;
+ gboolean vad;
+ gboolean dtx;
+ gint complexity;
+ gint nframes;
- gint lookahead;
+ gint lookahead;
- gint channels;
- gint rate;
+ gint channels;
+ gint rate;
- gboolean setup;
- gboolean header_sent;
- gboolean eos;
+ gboolean setup;
+ gboolean header_sent;
+ gboolean eos;
- guint64 samples_in;
- guint64 bytes_out;
+ guint64 samples_in;
+ guint64 bytes_out;
- GstTagList *tags;
+ GstTagList *tags;
- gchar *last_message;
+ gchar *last_message;
- gint frame_size;
- guint64 frameno;
+ gint frame_size;
+ guint64 frameno;
- gchar *comments;
- gint comment_len;
+ gchar *comments;
+ gint comment_len;
- gfloat input[MAX_FRAME_SIZE];
+ gfloat input[MAX_FRAME_SIZE];
};
struct _GstSpeexEncClass {