summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2018-03-23 13:25:01 -0400
committerJean-Marc Valin <jmvalin@jmvalin.ca>2018-03-23 13:25:01 -0400
commitdecb992e296c8358e626cf98209ea6a5fd949129 (patch)
treebbc0b6f003ca718f52679403c2887bdcc3619e4e
parent64438398c9a0e998597cd04c7c2e17a8f79ca23e (diff)
downloadopus-decb992e296c8358e626cf98209ea6a5fd949129.tar.gz
Asserting on some ctl() calls that should never fail
-rw-r--r--celt/arch.h2
-rw-r--r--celt/celt_decoder.c2
-rw-r--r--src/opus_decoder.c32
3 files changed, 19 insertions, 17 deletions
diff --git a/celt/arch.h b/celt/arch.h
index ffca8cf3..dcfd9491 100644
--- a/celt/arch.h
+++ b/celt/arch.h
@@ -79,9 +79,11 @@ void celt_fatal(const char *str, const char *file, int line)
#define celt_assert(cond) {if (!(cond)) {CELT_FATAL("assertion failed: " #cond);}}
#define celt_assert2(cond, message) {if (!(cond)) {CELT_FATAL("assertion failed: " #cond "\n" message);}}
+#define MUST_SUCCEED(call) celt_assert((call) == OPUS_OK)
#else
#define celt_assert(cond)
#define celt_assert2(cond, message)
+#define MUST_SUCCEED(call) call
#endif
#if defined(ENABLE_ASSERTIONS)
diff --git a/celt/celt_decoder.c b/celt/celt_decoder.c
index 8520e57b..9973f0d3 100644
--- a/celt/celt_decoder.c
+++ b/celt/celt_decoder.c
@@ -211,7 +211,7 @@ OPUS_CUSTOM_NOSTATIC int opus_custom_decoder_init(CELTDecoder *st, const CELTMod
#endif
st->arch = opus_select_arch();
- opus_custom_decoder_ctl(st, OPUS_RESET_STATE);
+ MUST_SUCCEED(opus_custom_decoder_ctl(st, OPUS_RESET_STATE));
return OPUS_OK;
}
diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index 02a88dc8..ae358e49 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -148,7 +148,7 @@ int opus_decoder_init(OpusDecoder *st, opus_int32 Fs, int channels)
ret = celt_decoder_init(celt_dec, Fs, channels);
if(ret!=OPUS_OK)return OPUS_INTERNAL_ERROR;
- celt_decoder_ctl(celt_dec, CELT_SET_SIGNALLING(0));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_SIGNALLING(0)));
st->prev_mode = 0;
st->frame_size = Fs/400;
@@ -488,9 +488,9 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
celt_assert(0);
break;
}
- celt_decoder_ctl(celt_dec, CELT_SET_END_BAND(endband));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_END_BAND(endband)));
}
- celt_decoder_ctl(celt_dec, CELT_SET_CHANNELS(st->stream_channels));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_CHANNELS(st->stream_channels)));
/* Only allocation memory for redundancy if/when needed */
redundant_audio_size = redundancy ? F5*st->channels : ALLOC_NONE;
@@ -499,21 +499,21 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
/* 5 ms redundant frame for CELT->SILK*/
if (redundancy && celt_to_silk)
{
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0)));
celt_decode_with_ec(celt_dec, data+len, redundancy_bytes,
redundant_audio, F5, NULL, 0);
- celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng)));
}
/* MUST be after PLC */
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(start_band));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(start_band)));
if (mode != MODE_SILK_ONLY)
{
int celt_frame_size = IMIN(F20, frame_size);
/* Make sure to discard any previous CELT state */
if (mode != st->prev_mode && st->prev_mode > 0 && !st->prev_redundancy)
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, OPUS_RESET_STATE));
/* Decode CELT */
celt_ret = celt_decode_with_ec(celt_dec, decode_fec ? NULL : data,
len, pcm, celt_frame_size, &dec, celt_accum);
@@ -528,7 +528,7 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
do a fade-out by decoding a silence frame */
if (st->prev_mode == MODE_HYBRID && !(redundancy && celt_to_silk && st->prev_redundancy) )
{
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0)));
celt_decode_with_ec(celt_dec, silence, 2, pcm, F2_5, NULL, celt_accum);
}
}
@@ -546,18 +546,18 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
{
const CELTMode *celt_mode;
- celt_decoder_ctl(celt_dec, CELT_GET_MODE(&celt_mode));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_GET_MODE(&celt_mode)));
window = celt_mode->window;
}
/* 5 ms redundant frame for SILK->CELT */
if (redundancy && !celt_to_silk)
{
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
- celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, OPUS_RESET_STATE));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, CELT_SET_START_BAND(0)));
celt_decode_with_ec(celt_dec, data+len, redundancy_bytes, redundant_audio, F5, NULL, 0);
- celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng));
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, OPUS_GET_FINAL_RANGE(&redundant_rng)));
smooth_fade(pcm+st->channels*(frame_size-F2_5), redundant_audio+st->channels*F2_5,
pcm+st->channels*(frame_size-F2_5), F2_5, st->channels, window, st->Fs);
}
@@ -869,7 +869,7 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
sizeof(OpusDecoder)-
((char*)&st->OPUS_DECODER_RESET_START - (char*)st));
- celt_decoder_ctl(celt_dec, OPUS_RESET_STATE);
+ MUST_SUCCEED(celt_decoder_ctl(celt_dec, OPUS_RESET_STATE));
silk_InitDecoder( silk_dec );
st->stream_channels = st->channels;
st->frame_size = st->Fs/400;
@@ -893,7 +893,7 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
goto bad_arg;
}
if (st->prev_mode == MODE_CELT_ONLY)
- celt_decoder_ctl(celt_dec, OPUS_GET_PITCH(value));
+ ret = celt_decoder_ctl(celt_dec, OPUS_GET_PITCH(value));
else
*value = st->DecControl.prevPitchLag;
}
@@ -935,7 +935,7 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
{
goto bad_arg;
}
- celt_decoder_ctl(celt_dec, OPUS_SET_PHASE_INVERSION_DISABLED(value));
+ ret = celt_decoder_ctl(celt_dec, OPUS_SET_PHASE_INVERSION_DISABLED(value));
}
break;
case OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST:
@@ -945,7 +945,7 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
{
goto bad_arg;
}
- celt_decoder_ctl(celt_dec, OPUS_GET_PHASE_INVERSION_DISABLED(value));
+ ret = celt_decoder_ctl(celt_dec, OPUS_GET_PHASE_INVERSION_DISABLED(value));
}
break;
default: