ref: 3f0962cc1e50922b58628fc0850f7213591696d2
parent: fce4323e15821b3278fe447c973dc744bafad585
author: Ralph Giles <[email protected]>
date: Fri Jul 29 10:01:54 EDT 2011
Always enable OPUS_TEST_RANGE_CODER_STATE. 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.
--- a/src/opus.h
+++ b/src/opus.h
@@ -61,8 +61,6 @@
/** 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 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
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -383,9 +383,8 @@
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 @@
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)
{
--- a/src/opus_decoder.h
+++ b/src/opus_decoder.h
@@ -45,9 +45,7 @@
int frame_size;
int prev_redundancy;
-#ifdef OPUS_TEST_RANGE_CODER_STATE
int rangeFinal;
-#endif
};
static inline short SAT16(int x) {
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -622,9 +622,8 @@
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 @@
free(st);
}
-#if OPUS_TEST_RANGE_CODER_STATE
int opus_encoder_get_final_range(OpusEncoder *st)
{
return st->rangeFinal;
}
-#endif
--- a/src/opus_encoder.h
+++ b/src/opus_encoder.h
@@ -62,9 +62,7 @@
int first;
short delay_buffer[MAX_ENCODER_BUFFER*2];
-#ifdef OPUS_TEST_RANGE_CODER_STATE
int rangeFinal;
-#endif
};
--- a/src/test_opus.c
+++ b/src/test_opus.c
@@ -350,9 +350,7 @@
}
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,7 +396,6 @@
}
}
-#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] ) {
@@ -405,7 +402,6 @@
fprintf (stderr, "Error: Range coder state mismatch between encoder and decoder in frame %d.\n", count);
return 0;
}
-#endif
lost_prev = lost;