Replaced speex_error() by speex_fatal() and speex_assert()
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 27 Jun 2007 13:42:37 +0000 (13:42 +0000)
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>
Wed, 27 Jun 2007 13:42:37 +0000 (13:42 +0000)
git-svn-id: http://svn.xiph.org/trunk/speex@13192 0101bb08-14d6-0310-b084-bc0e0c8e3800

libspeex/kiss_fft.c
libspeex/kiss_fftr.c
libspeex/mdf.c
libspeex/misc.c
libspeex/misc.h
libspeex/nb_celp.c
libspeex/quant_lsp.c
libspeex/sb_celp.c

index 775a257..7b8d01c 100644 (file)
@@ -290,7 +290,7 @@ static void kf_bfly_generic(
 
     /*CHECKBUF(scratchbuf,nscratchbuf,p);*/
     if (p>17)
-       speex_error("KissFFT: max radix supported is 17");
+       speex_fatal("KissFFT: max radix supported is 17");
     
     for ( u=0; u<m; ++u ) {
         k=u;
@@ -505,7 +505,7 @@ void kiss_fft_stride(kiss_fft_cfg st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout,
 {
     if (fin == fout) 
     {
-       speex_error("In-place FFT not supported");
+       speex_fatal("In-place FFT not supported");
        /*CHECKBUF(tmpbuf,ntmpbuf,st->nfft);
        kf_work(tmpbuf,fin,1,in_stride, st->factors,st);
        speex_move(fout,tmpbuf,sizeof(kiss_fft_cpx)*st->nfft);*/
index 392945c..308b131 100644 (file)
@@ -84,7 +84,7 @@ void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *fr
     kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc;
 
     if ( st->substate->inverse) {
-        speex_error("kiss fft usage error: improper alloc\n");
+        speex_fatal("kiss fft usage error: improper alloc\n");
     }
 
     ncfft = st->substate->nfft;
@@ -138,7 +138,7 @@ void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata, kiss_fft_scalar *
     int k, ncfft;
 
     if (st->substate->inverse == 0) {
-        speex_error ("kiss fft usage error: improper alloc\n");
+        speex_fatal("kiss fft usage error: improper alloc\n");
     }
 
     ncfft = st->substate->nfft;
@@ -177,7 +177,7 @@ void kiss_fftr2(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_scalar
    spx_word32_t f1kr, f1ki, twr, twi;
 
    if ( st->substate->inverse) {
-      speex_error("kiss fft usage error: improper alloc\n");
+      speex_fatal("kiss fft usage error: improper alloc\n");
    }
 
    ncfft = st->substate->nfft;
@@ -263,7 +263,7 @@ void kiss_fftri2(kiss_fftr_cfg st,const kiss_fft_scalar *freqdata,kiss_fft_scala
    int k, ncfft;
 
    if (st->substate->inverse == 0) {
-      speex_error ("kiss fft usage error: improper alloc\n");
+      speex_fatal ("kiss fft usage error: improper alloc\n");
    }
 
    ncfft = st->substate->nfft;
index 2059e34..23f9428 100644 (file)
@@ -368,7 +368,7 @@ static void dump_audio(const spx_int16_t *rec, const spx_int16_t *play, const sp
 {
    if (!(rFile && pFile && oFile))
    {
-      speex_error("Dump files not open");
+      speex_fatal("Dump files not open");
    }
    fwrite(rec, sizeof(spx_int16_t), len, rFile);
    fwrite(play, sizeof(spx_int16_t), len, pFile);
@@ -384,7 +384,7 @@ SpeexEchoState *speex_echo_state_init(int frame_size, int filter_length)
 
 #ifdef DUMP_ECHO_CANCEL_DATA
    if (rFile || pFile || oFile)
-      speex_error("Opening dump files twice");
+      speex_fatal("Opening dump files twice");
    rFile = fopen("aec_rec.sw", "w");
    pFile = fopen("aec_play.sw", "w");
    oFile = fopen("aec_out.sw", "w");
index df44d86..c2b6b86 100644 (file)
@@ -105,10 +105,10 @@ void *speex_move (void *dest, void *src, int n)
 }
 #endif
 
-#ifndef OVERRIDE_SPEEX_ERROR
-void speex_error(const char *str)
+#ifndef OVERRIDE_SPEEX_FATAL
+void _speex_fatal(const char *str, const char *file, int line)
 {
-   fprintf (stderr, "Fatal (internal) error: %s\n", str);
+   fprintf (stderr, "Fatal (internal) error in %s, line %d: %s\n", file, line, str);
    exit(1);
 }
 #endif
index 1664aae..aa69611 100644 (file)
@@ -91,6 +91,9 @@ static inline spx_int32_t le_int(spx_int32_t i)
 #endif
 }
 
+#define speex_fatal(str) _speex_fatal(str, __FILE__, __LINE__);
+#define speex_assert(cond) {if (!(cond)) {speex_fatal("assertion failed: " #cond);}}
+
 /** Speex wrapper for calloc. To do your own dynamic allocation, all you need to do is replace this function, speex_realloc and speex_free */
 void *speex_alloc (int size);
 
@@ -110,7 +113,7 @@ void speex_free_scratch (void *ptr);
 void *speex_move (void *dest, void *src, int n);
 
 /** Abort with an error message to stderr (internal Speex error) */
-void speex_error(const char *str);
+void _speex_fatal(const char *str, const char *file, int line);
 
 /** Print warning message to stderr (programming error) */
 void speex_warning(const char *str);
index ebd6a6c..d2f794c 100644 (file)
@@ -787,18 +787,15 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
       /*print_vec(st->bw_lpc1, 10, "bw_lpc");*/
 #endif
 
+      /*FIXME: This will break if we change the window size */
+      speex_assert(st->windowSize-st->frameSize == st->subframeSize);
+      if (sub==0)
       {
-         /*FIXME: This will break if we change the window size */
-         if (st->windowSize-st->frameSize != st->subframeSize)
-            speex_error("windowSize-frameSize != subframeSize");
-         if (sub==0)
-         {
-            for (i=0;i<st->subframeSize;i++)
-               real_exc[i] = sw[i] = st->winBuf[i];
-         } else {
-            for (i=0;i<st->subframeSize;i++)
-               real_exc[i] = sw[i] = in[i+((sub-1)*st->subframeSize)];
-         }
+         for (i=0;i<st->subframeSize;i++)
+            real_exc[i] = sw[i] = st->winBuf[i];
+      } else {
+         for (i=0;i<st->subframeSize;i++)
+            real_exc[i] = sw[i] = in[i+((sub-1)*st->subframeSize)];
       }
       fir_mem16(real_exc, interp_qlpc, real_exc, st->subframeSize, st->lpcSize, st->mem_exc2, stack);
       
@@ -845,7 +842,7 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
          exc[i]=0;
 
       /* If we have a long-term predictor (otherwise, something's wrong) */
-      if (SUBMODE(ltp_quant))
+      speex_assert (SUBMODE(ltp_quant));
       {
          int pit_min, pit_max;
          /* Long-term prediction */
@@ -894,10 +891,7 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
 #endif
 
          st->pitch[sub]=pitch;
-      } else {
-         speex_error ("No pitch prediction, what's wrong");
       }
-
       /* Quantization of innovation */
       for (i=0;i<st->subframeSize;i++)
          innov[i]=0;
@@ -944,7 +938,7 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
       signal_div(target, target, ener, st->subframeSize);
       
       /* Quantize innovation */
-      if (SUBMODE(innovation_quant))
+      speex_assert (SUBMODE(innovation_quant));
       {
          /* Codebook search */
          SUBMODE(innovation_quant)(target, interp_qlpc, bw_lpc1, bw_lpc2, 
@@ -980,11 +974,8 @@ int nb_encode(void *state, void *vin, SpeexBits *bits)
          {
             st->innov_rms_save[sub] = compute_rms(innov, st->subframeSize);
          }
-      } else {
-         speex_error("No fixed codebook");
       }
 
-
       for (i=0;i<st->subframeSize;i++)
          sw[i] = exc[i];
       /* Final signal synthesis from excitation */
@@ -1477,7 +1468,7 @@ int nb_decode(void *state, SpeexBits *bits, void *vout)
          exc[i]=0;
 
       /*Adaptive codebook contribution*/
-      if (SUBMODE(ltp_unquant))
+      speex_assert (SUBMODE(ltp_unquant));
       {
          int pit_min, pit_max;
          /* Handle pitch constraints if any */
@@ -1542,8 +1533,6 @@ int nb_decode(void *state, SpeexBits *bits, void *vout)
             if (tmp > best_pitch_gain)
                best_pitch_gain = tmp;
          }
-      } else {
-         speex_error("No pitch prediction, what's wrong");
       }
       
       /* Unquantize the innovation */
@@ -1567,7 +1556,7 @@ int nb_decode(void *state, SpeexBits *bits, void *vout)
             ener = ol_gain;
          }
                   
-         if (SUBMODE(innovation_unquant))
+         speex_assert (SUBMODE(innovation_unquant));
          {
             /*Fixed codebook contribution*/
             SUBMODE(innovation_unquant)(innov, SUBMODE(innovation_params), st->subframeSize, bits, stack, &st->seed);
@@ -1599,8 +1588,6 @@ int nb_decode(void *state, SpeexBits *bits, void *vout)
                for (i=0;i<st->subframeSize;i++)
                   innov_save[i] = EXTRACT16(PSHR32(innov[i], SIG_SHIFT));
             }
-         } else {
-            speex_error("No fixed codebook");
          }
 
          /*Vocoder mode*/
index d907b98..d7892cf 100644 (file)
@@ -304,11 +304,11 @@ void lsp_unquant_lbr(spx_lsp_t *lsp, int order, SpeexBits *bits)
 #ifdef DISABLE_WIDEBAND
 void lsp_quant_high(spx_lsp_t *lsp, spx_lsp_t *qlsp, int order, SpeexBits *bits)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
 }
 void lsp_unquant_high(spx_lsp_t *lsp, int order, SpeexBits *bits)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
 }
 #else
 extern const signed char high_lsp_cdbk[];
index 50cc1e3..2c599fe 100644 (file)
 #ifdef DISABLE_WIDEBAND
 void *sb_encoder_init(const SpeexMode *m)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return NULL;
 }
 void sb_encoder_destroy(void *state)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
 }
 int sb_encode(void *state, void *vin, SpeexBits *bits)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return -2;
 }
 void *sb_decoder_init(const SpeexMode *m)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return NULL;
 }
 void sb_decoder_destroy(void *state)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
 }
 int sb_decode(void *state, SpeexBits *bits, void *vout)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return -2;
 }
 int sb_encoder_ctl(void *state, int request, void *ptr)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return -2;
 }
 int sb_decoder_ctl(void *state, int request, void *ptr)
 {
-   speex_error("Wideband and Ultra-wideband are disabled");
+   speex_fatal("Wideband and Ultra-wideband are disabled");
    return -2;
 }
 #else