Index: ext/speex/gstspeexdec.c
===================================================================
--- ext/speex/gstspeexdec.c	Wed Sep 22 15:34:27 2010
+++ ext/speex/gstspeexdec.c	Wed Sep 22 15:34:40 2010
@@ -523,7 +523,7 @@
   if (dec->header->mode >= SPEEX_NB_MODES || dec->header->mode < 0)
     goto mode_too_old;
 
-  dec->mode = (SpeexMode *) speex_mode_list[dec->header->mode];
+  dec->mode = speex_lib_get_mode(dec->header->mode);
 
   /* initialize the decoder */
   dec->state = speex_decoder_init (dec->mode);
Index: ext/speex/gstspeexenc.c
===================================================================
--- ext/speex/gstspeexenc.c	Wed Sep 22 15:11:30 2010
+++ ext/speex/gstspeexenc.c	Wed Sep 22 15:14:37 2010
@@ -647,15 +647,15 @@
   switch (enc->mode) {
     case GST_SPEEX_ENC_MODE_UWB:
       GST_LOG_OBJECT (enc, "configuring for requested UWB mode");
-      enc->speex_mode = (SpeexMode *) & speex_uwb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_UWB);
       break;
     case GST_SPEEX_ENC_MODE_WB:
       GST_LOG_OBJECT (enc, "configuring for requested WB mode");
-      enc->speex_mode = (SpeexMode *) & speex_wb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_WB);
       break;
     case GST_SPEEX_ENC_MODE_NB:
       GST_LOG_OBJECT (enc, "configuring for requested NB mode");
-      enc->speex_mode = (SpeexMode *) & speex_nb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_NB);
       break;
     case GST_SPEEX_ENC_MODE_AUTO:
       /* fall through */
@@ -667,9 +667,9 @@
   if (enc->rate > 25000) {
     if (enc->mode == GST_SPEEX_ENC_MODE_AUTO) {
       GST_LOG_OBJECT (enc, "selected UWB mode for samplerate %d", enc->rate);
-      enc->speex_mode = (SpeexMode *) & speex_uwb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_UWB);
     } else {
-      if (enc->speex_mode != &speex_uwb_mode) {
+      if (enc->speex_mode != speex_lib_get_mode(SPEEX_MODEID_UWB)) {
         gst_speex_enc_set_last_msg (enc,
             "Warning: suggest to use ultra wide band mode for this rate");
       }
@@ -677,9 +677,9 @@
   } else if (enc->rate > 12500) {
     if (enc->mode == GST_SPEEX_ENC_MODE_AUTO) {
       GST_LOG_OBJECT (enc, "selected WB mode for samplerate %d", enc->rate);
-      enc->speex_mode = (SpeexMode *) & speex_wb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_WB);
     } else {
-      if (enc->speex_mode != &speex_wb_mode) {
+      if (enc->speex_mode != speex_lib_get_mode(SPEEX_MODEID_WB)) {
         gst_speex_enc_set_last_msg (enc,
             "Warning: suggest to use wide band mode for this rate");
       }
@@ -687,9 +687,9 @@
   } else {
     if (enc->mode == GST_SPEEX_ENC_MODE_AUTO) {
       GST_LOG_OBJECT (enc, "selected NB mode for samplerate %d", enc->rate);
-      enc->speex_mode = (SpeexMode *) & speex_nb_mode;
+      enc->speex_mode = speex_lib_get_mode(SPEEX_MODEID_NB);
     } else {
-      if (enc->speex_mode != &speex_nb_mode) {
+      if (enc->speex_mode != speex_lib_get_mode(SPEEX_MODEID_NB)) {
         gst_speex_enc_set_last_msg (enc,
             "Warning: suggest to use narrow band mode for this rate");
       }
