Hi
I am facing a strange problem. I have integrated speex
codec's narrowband mode in my SIP based server. Then I
tried to integrate the wideband mode. But the program
crashes mysteriously. My encode and decode codes for
wide band mode are exact similiar to that of
narrowband, except the mode initialization, where I
put "speex_wb_mode" instead of "speex_nb_mode".
My encoding code:
bool
SPEEX16::Encode(const std::string& raw, std::string&
encoded)
{
speex_bits_reset(&bits);
speex_encode_int(state, (short*)raw.data(), &bits);
int nbytes = speex_bits_nbytes(&bits);
encoded.resize(nbytes);
speex_bits_write(&bits, (char*)encoded.data(),
nbytes);
return true;
}
Amd decoding code:
bool
SPEEX16::Decode(const std::string& encoded,
std::string& raw)
{
short output[320];
speex_bits_reset(&bits);
speex_bits_read_from(&bits, (char*)encoded.data(),
encoded.size());
speex_decode_int(state, &bits, output);
/*
raw.resize(320 * sizeof(short));
for(int i = 0; i < 320; i++)
((short*)raw.data())[i] = output[i] ;
*/
return true;
}
Here, raw = decoded output (initially empty string)
The framesize is default one: 320 bytes. The program
creates two objects of class SPEEX16 - enc and dec.
These objects should remain in memory until the user
agents hang up.
The problem that I am facing is, if I uncomment the
line:
raw.resize(320 * sizeof(short));
The program crashes. Before it crashes, it calles the
destructor. I don't see anything wrong in my code. I
used the same code for narrow band mode. Its working
properly. In that case I only kept the framesize to
160.
Please let me know what is wrong? Is this due to bug
in my code or somewhere else?????
Why cann't the raw string be resized for wideband????
Thanks
-John
______________________________________________________
Yahoo! for Good
Donate to the Hurricane Katrina relief effort.
http://store.yahoo.com/redcross-donate3/
Hi, Sorry, but I'm not going to debug your code. I suggest you start from speexenc and see what it does. Jean-Marc Le mardi 04 octobre 2005 ? 23:26 -0700, Md. Merajul Islam a ?crit :> Hi > > I am facing a strange problem. I have integrated speex > codec's narrowband mode in my SIP based server. Then I > tried to integrate the wideband mode. But the program > crashes mysteriously. My encode and decode codes for > wide band mode are exact similiar to that of > narrowband, except the mode initialization, where I > put "speex_wb_mode" instead of "speex_nb_mode". > > My encoding code: > bool > SPEEX16::Encode(const std::string& raw, std::string& > encoded) > { > > > > speex_bits_reset(&bits); > speex_encode_int(state, (short*)raw.data(), &bits); > > > > int nbytes = speex_bits_nbytes(&bits); > encoded.resize(nbytes); > speex_bits_write(&bits, (char*)encoded.data(), > nbytes); > > > > return true; > } > > > Amd decoding code: > bool > SPEEX16::Decode(const std::string& encoded, > std::string& raw) > { > short output[320]; > > > > speex_bits_reset(&bits); > speex_bits_read_from(&bits, (char*)encoded.data(), > encoded.size()); > > > > speex_decode_int(state, &bits, output); > > > > /* > raw.resize(320 * sizeof(short)); > for(int i = 0; i < 320; i++) > ((short*)raw.data())[i] = output[i] ; > */ > return true; > } > > > > Here, raw = decoded output (initially empty string) > > > The framesize is default one: 320 bytes. The program > creates two objects of class SPEEX16 - enc and dec. > These objects should remain in memory until the user > agents hang up. > > The problem that I am facing is, if I uncomment the > line: > > raw.resize(320 * sizeof(short)); > > The program crashes. Before it crashes, it calles the > destructor. I don't see anything wrong in my code. I > used the same code for narrow band mode. Its working > properly. In that case I only kept the framesize to > 160. > > Please let me know what is wrong? Is this due to bug > in my code or somewhere else????? > > Why cann't the raw string be resized for wideband???? > > Thanks > -John > > > > > ______________________________________________________ > Yahoo! for Good > Donate to the Hurricane Katrina relief effort. > http://store.yahoo.com/redcross-donate3/ > > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >