Commit 3f0962cc authored by Ralph Giles's avatar Ralph Giles Committed by Jean-Marc Valin
Browse files

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.
parent fce4323e
......@@ -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
......
......@@ -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)
{
......
......@@ -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) {
......
......@@ -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
......@@ -62,9 +62,7 @@ struct OpusEncoder {
int first;
short delay_buffer[MAX_ENCODER_BUFFER*2];
#ifdef OPUS_TEST_RANGE_CODER_STATE
int rangeFinal;
#endif
};
......
......@@ -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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment