[Speex-dev] Strange Problem

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Wed Oct 5 04:17:04 PDT 2005


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 at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
> 


More information about the Speex-dev mailing list