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.
This commit is contained in:
Ralph Giles 2011-07-29 14:01:54 -07:00 committed by Jean-Marc Valin
parent fce4323e15
commit 3f0962cc1e
6 changed files with 2 additions and 21 deletions

View 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

View 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)
{

View 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) {

View 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

View 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
};

View 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;