mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 03:00:35 +00:00
speex: Fix crashes with MSVC
Using the symbols for the different Speex modes results in crashes when using MSVC. Use the library functions to get the modes instead. Fixes bug #630378.
This commit is contained in:
parent
3e894a1f29
commit
9f8619e5ca
2 changed files with 10 additions and 10 deletions
|
@ -523,7 +523,7 @@ speex_dec_chain_parse_header (GstSpeexDec * dec, GstBuffer * buf)
|
|||
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);
|
||||
|
|
|
@ -647,15 +647,15 @@ gst_speex_enc_setup (GstSpeexEnc * enc)
|
|||
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 @@ gst_speex_enc_setup (GstSpeexEnc * enc)
|
|||
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 @@ gst_speex_enc_setup (GstSpeexEnc * enc)
|
|||
} 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 @@ gst_speex_enc_setup (GstSpeexEnc * enc)
|
|||
} 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");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue