From 2b98bdf53253b6b85fffe7f1bfa9141ae9b09e61 Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@jmvalin.ca> Date: Sat, 20 Aug 2011 00:21:46 -0400 Subject: [PATCH] Better handling of DTX for range coder state checks --- src/opus_decoder.c | 5 ++++- src/opus_encoder.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/opus_decoder.c b/src/opus_decoder.c index f2e173bb0..a022840c3 100644 --- a/src/opus_decoder.c +++ b/src/opus_decoder.c @@ -442,7 +442,10 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data, st->channels, window, st->Fs); } - st->rangeFinal = dec.rng ^ redundant_rng; + if (len <= 1) + st->rangeFinal = 0; + else + st->rangeFinal = dec.rng ^ redundant_rng; st->prev_mode = mode; st->prev_redundancy = redundancy; diff --git a/src/opus_encoder.c b/src/opus_encoder.c index 1b00a270b..e90472fa4 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -261,6 +261,7 @@ int opus_encode_float(OpusEncoder *st, const opus_val16 *pcm, int frame_size, opus_uint32 redundant_rng = 0; ALLOC_STACK; + st->rangeFinal = 0; if (400*frame_size != st->Fs && 200*frame_size != st->Fs && 100*frame_size != st->Fs && 50*frame_size != st->Fs && 25*frame_size != st->Fs && 50*frame_size != 3*st->Fs) return OPUS_BAD_ARG; -- GitLab