+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:
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"
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>
])
])
])
#ifndef __GST_SPEEXDEC_H__
#define __GST_SPEEXDEC_H__
-
#include <gst/gst.h>
#include <speex/speex.h>
#include <speex/speex_callbacks.h>
extern "C" {
#endif /* __cplusplus */
-
#define GST_TYPE_SPEEXDEC \
(gst_speex_dec_get_type())
#define GST_SPEEXDEC(obj) \
#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 {
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 {