[opus] Moving from Speex to Opus (question 2)

Jean-Marc Valin jmvalin at jmvalin.ca
Thu May 9 11:37:53 PDT 2013


Look at the examples in the API doc. The Opus API is different from
Speex, bit it's still pretty simple (probably even simpler than Speex).

	Jean-Marc

On 09/05/13 02:30 PM, Hermann Weber wrote:
> Hello!
> 
> I was using Speex all the time, and I am now moving to Opus.
> 
> I had encapsulated the decoder a bit, I had the following cpp file:
> 
> #include "StdAfx.h"
> #include "spxcodec.h"
> 
> #define MAX_FRAME_SIZE 2000
> #define MAX_FRAME_BYTES 2000
> 
> CSpxCodec::CSpxCodec() : enh(1), rate(8000)
> {
> }
> 
> 
> CSpxCodec::~CSpxCodec()
> {
> }
> 
> void CSpxCodec::Init()
> {
>      speex_bits_init(&bits);
>      decstate = speex_decoder_init(&speex_nb_mode);
> 
>      speex_decoder_ctl(decstate, SPEEX_SET_SAMPLING_RATE, &rate);
>      speex_decoder_ctl(decstate, SPEEX_SET_ENH, &enh);
> 
>      int iFrameSize=0;
>      speex_decoder_ctl(decstate, SPEEX_GET_FRAME_SIZE, &iFrameSize);
> 
> }
> 
> void CSpxCodec::Free()
> {
>      speex_bits_destroy(&bits);
>      speex_decoder_destroy(decstate);
> }
> 
> void CSpxCodec::Decode(unsigned char* inbuf, short* outbuf, unsigned int 
> len)
> {
> 
>      char cbits[MAX_FRAME_BYTES];
>      float output[MAX_FRAME_SIZE];
> 
>      unsigned int i=0;
>      unsigned int j=0;
> 
>      for (i=0; i<(len/62); i++)
>      {
> 
>          for (j=0;j<62;j++)
>          {
>              cbits[j] = inbuf[(i*62)+j];
>          }
> 
>          speex_bits_read_from(&bits, cbits, 62);
>          speex_decode(decstate, &bits, output);
> 
>          for (j=0;j<160;j++)
>          {
>              outbuf[j+(i*160)] = output[j];
>          }
>      }
> }
> -------------------
> I would like to ask if I can keep this "wrapper".
> Please anybody tell me that I can just replace the word "speex" with 
> "opus", and it will work, hehehehehe!
> Can I keep the 62, 160 part, or will that be different in Opus?
> I am not asking because I am lazy, I am just scared because Opus look so 
> much different than Speex, and there is no "encoding/decoding for 
> dummies" example as there was in Speex.
> Could anybody perhaps give me another push in the right direction and 
> tell me how a good starting point for Opus newbies?
> 
> Thank you so much.
> 
> Greetings,
> Hermie
> _______________________________________________
> opus mailing list
> opus at xiph.org
> http://lists.xiph.org/mailman/listinfo/opus
> 



More information about the opus mailing list