fprintf (stderr, "Null mode\n");
void sb_decode(void *state, SpeexBits *bits, float *out, int lost){   int i, sub;   SBDecState *st;      st = state;   /* Decode the low-band */   nb_decode(st->st_low, bits, st->x0d, lost);   st->submodeID = speex_bits_unpack_unsigned(bits, SB_SUBMODE_BITS);   for (i=0;i<st->frame_size;i++)      st->exc[i]=0;   /* If null mode (no transmission), just set a couple things to zero*/   if (st->submodes[st->submodeID] == NULL)   {      fprintf (stderr, "Null mode\n");      for (i=0;i<st->frame_size;i++)         st->exc[i]=0;      st->first=1;      /* Final signal synthesis from excitation */      syn_filt_mem(st->exc, st->interp_qlpc, st->high, st->subframeSize, st->lpcSize, st->mem_sp);      /* Up-sample coded low-band and high-band*/      for (i=0;i<st->frame_size;i++)      {         st->x0[(i<<1)]=st->x0d[i];         st->x1[(i<<1)]=st->high[i];         st->x0[(i<<1)+1]=0;         st->x1[(i<<1)+1]=0;      }      /* Reconstruct the original */      fir_mem(st->x0, h0, st->y0, st->full_frame_size, QMF_ORDER, st->g0_mem);      fir_mem(st->x1, h1, st->y1, st->full_frame_size, QMF_ORDER, st->g1_mem);      for (i=0;i<st->full_frame_size;i++)         out[i]=2*(st->y0[i]-st->y1[i]);      return;   }   SUBMODE(lsp_unquant)(st->qlsp, st->lpcSize, bits);      if (st->first)   {      for (i=0;i<st->lpcSize;i++)         st->old_qlsp[i] = st->qlsp[i];   }      for (sub=0;sub<st->nbSubframes;sub++)   {      float *exc, *sp, tmp, filter_ratio, gain, el=0;      int offset;            offset = st->subframeSize*sub;      sp=st->high+offset;      exc=st->exc+offset;            /* LSP interpolation */      tmp = (1.0 + sub)/st->nbSubframes;      for (i=0;i<st->lpcSize;i++)         st->interp_qlsp[i] = (1-tmp)*st->old_qlsp[i] + tmp*st->qlsp[i];      /* LSPs to x-domain */      for (i=0;i<st->lpcSize;i++)         st->interp_qlsp[i] = cos(st->interp_qlsp[i]);      lsp_enforce_margin(st->interp_qlsp, st->lpcSize, .002);      /* LSP to LPC */      lsp_to_lpc(st->interp_qlsp, st->interp_qlpc, st->lpcSize, st->stack);      {         float rl=0, rh=0;         tmp=1;         for (i=0;i<=st->lpcSize;i++)         {            rh += tmp*st->interp_qlpc[i];            tmp = -tmp;         }         rl = ((DecState*)st->st_low)->pi_gain[sub];         rl=1/(fabs(rl)+.01);         rh=1/(fabs(rh)+.01);         filter_ratio=fabs(.01+rh)/(.01+fabs(rl));      }      for (i=0;i<st->subframeSize;i++)         el+=sqr(((DecState*)st->st_low)->exc[offset+i]);      gain=(1+sqrt(el/st->subframeSize))/filter_ratio;            for (i=0;i<st->subframeSize;i++)         exc[i]=0;      if (!SUBMODE(innovation_unquant))      {         float g;         int quant;         quant = speex_bits_unpack_unsigned(bits, 5);         g= .1*exp(quant/9.4);                  /*printf ("unquant folding gain: %f\n", g);*/         g /= filter_ratio;                  /* High-band excitation using the low-band excitation and a gain */         for (i=0;i<st->subframeSize;i++)            exc[i]=.6*g*((DecState*)st->st_low)->exc[offset+i];      } else {         float gc, scale;         int qgc = speex_bits_unpack_unsigned(bits, 4);         gc = exp((1/3.7)*qgc-2);         scale = gc*sqrt(1+el)/filter_ratio;         SUBMODE(innovation_unquant)(exc, SUBMODE(innovation_params), st->subframeSize,                                 bits, st->stack);         for (i=0;i<st->subframeSize;i++)            exc[i]*=scale;      }      syn_filt_mem(exc, st->interp_qlpc, sp, st->subframeSize, st->lpcSize, st->mem_sp);   }   /* Up-sample coded low-band and high-band*/   for (i=0;i<st->frame_size;i++)   {      st->x0[(i<<1)]=st->x0d[i];      st->x1[(i<<1)]=st->high[i];      st->x0[(i<<1)+1]=0;      st->x1[(i<<1)+1]=0;   }   /* Reconstruct the original */   fir_mem(st->x0, h0, st->y0, st->full_frame_size, QMF_ORDER, st->g0_mem);   fir_mem(st->x1, h1, st->y1, st->full_frame_size, QMF_ORDER, st->g1_mem);   for (i=0;i<st->full_frame_size;i++)      out[i]=2*(st->y0[i]-st->y1[i]);   for (i=0;i<st->lpcSize;i++)      st->old_qlsp[i] = st->qlsp[i];   st->first=0;}