Always enable OPUS_TEST_RANGE_CODER_STATE.
authorRalph Giles <giles@mozilla.com>
Fri, 29 Jul 2011 21:01:54 +0000 (14:01 -0700)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Fri, 29 Jul 2011 21:11:59 +0000 (17:11 -0400)
This removes the configurability of the OPUS_TEST_RANGE_CODER_STATE
consistency check, in favour of always running it. The performance
penalty is low, and it's an important check on correctness for the
reference encoder to provide.

src/opus.h
src/opus_decoder.c
src/opus_decoder.h
src/opus_encoder.c
src/opus_encoder.h
src/test_opus.c

index 48e5fbd..6eeba31 100644 (file)
@@ -61,8 +61,6 @@ extern "C" {
 /** Memory allocation has failed */
 #define OPUS_ALLOC_FAIL       -7
 
-#define OPUS_TEST_RANGE_CODER_STATE     1
-
 #define OPUS_BITRATE_AUTO       -1
 
 #define OPUS_APPLICATION_VOIP        2000
@@ -221,10 +219,8 @@ OPUS_EXPORT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsign
 OPUS_EXPORT const char *opus_strerror(int error);
 
 /* For testing purposes: the encoder and decoder state should always be identical after coding a payload */
-#if OPUS_TEST_RANGE_CODER_STATE
 OPUS_EXPORT int opus_encoder_get_final_range(OpusEncoder *st);
 OPUS_EXPORT int opus_decoder_get_final_range(OpusDecoder *st);
-#endif
 
 
 #ifdef __cplusplus
index 48b637d..42d5e8c 100644 (file)
@@ -383,9 +383,8 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
                    pcm+st->channels*F2_5, F2_5,
                    st->channels, window, st->Fs);
     }
-#if OPUS_TEST_RANGE_CODER_STATE
+
     st->rangeFinal = dec.rng;
-#endif
 
     st->prev_mode = mode;
     st->prev_redundancy = redundancy;
@@ -569,13 +568,10 @@ void opus_decoder_destroy(OpusDecoder *st)
        free(st);
 }
 
-#if OPUS_TEST_RANGE_CODER_STATE
 int opus_decoder_get_final_range(OpusDecoder *st)
 {
     return st->rangeFinal;
 }
-#endif
-
 
 int opus_packet_get_bandwidth(const unsigned char *data)
 {
index cdee2a4..964bc4d 100644 (file)
@@ -45,9 +45,7 @@ struct OpusDecoder {
     int          frame_size;
     int          prev_redundancy;
 
-#ifdef OPUS_TEST_RANGE_CODER_STATE
     int          rangeFinal;
-#endif
 };
 
 static inline short SAT16(int x) {
index 076c053..1e5c321 100644 (file)
@@ -622,9 +622,8 @@ int opus_encode(OpusEncoder *st, const short *pcm, int frame_size,
     data[0] |= (st->stream_channels==2)<<2;
     /*printf ("%x\n", (int)data[0]);*/
 
-#if OPUS_TEST_RANGE_CODER_STATE
     st->rangeFinal = enc.rng;
-#endif
+
     if (to_celt)
         st->prev_mode = MODE_CELT_ONLY;
     else
@@ -827,9 +826,7 @@ void opus_encoder_destroy(OpusEncoder *st)
        free(st);
 }
 
-#if OPUS_TEST_RANGE_CODER_STATE
 int opus_encoder_get_final_range(OpusEncoder *st)
 {
     return st->rangeFinal;
 }
-#endif
index 650751f..7900835 100644 (file)
@@ -62,9 +62,7 @@ struct OpusEncoder {
     int          first;
     short        delay_buffer[MAX_ENCODER_BUFFER*2];
 
-#ifdef OPUS_TEST_RANGE_CODER_STATE
     int          rangeFinal;
-#endif
 };
 
 
index 8b7717d..a49a5ac 100644 (file)
@@ -350,9 +350,7 @@ int main(int argc, char *argv[])
           }
 
           len[toggle] = opus_encode(enc, in, frame_size, data[toggle], max_payload_bytes);
-#if OPUS_TEST_RANGE_CODER_STATE
           enc_final_range[toggle] = opus_encoder_get_final_range( enc );
-#endif
           if (len[toggle] < 0)
           {
               fprintf (stderr, "opus_encode() returned %d\n", len[toggle]);
@@ -398,14 +396,12 @@ int main(int argc, char *argv[])
           }
       }
 
-#if OPUS_TEST_RANGE_CODER_STATE
       /* compare final range encoder rng values of encoder and decoder */
       if( !encode_only && !lost && !lost_prev
          && opus_decoder_get_final_range( dec ) != enc_final_range[toggle^use_inbandfec] ) {
           fprintf (stderr, "Error: Range coder state mismatch between encoder and decoder in frame %d.\n", count);
           return 0;
       }
-#endif
 
       lost_prev = lost;