diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2018-03-23 13:25:01 -0400 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2018-03-23 13:25:01 -0400 |
commit | decb992e296c8358e626cf98209ea6a5fd949129 (patch) | |
tree | bbc0b6f003ca718f52679403c2887bdcc3619e4e | |
parent | 64438398c9a0e998597cd04c7c2e17a8f79ca23e (diff) | |
download | opus-decb992e296c8358e626cf98209ea6a5fd949129.tar.gz |
Asserting on some ctl() calls that should never fail
-rw-r--r-- | celt/arch.h | 2 | ||||
-rw-r--r-- | celt/celt_decoder.c | 2 | ||||
-rw-r--r-- | src/opus_decoder.c | 32 |
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: |