diff --git a/lib/codeclib.c b/lib/codeclib.c index 7fce6ef7d..880b0ea47 100644 --- a/lib/codeclib.c +++ b/lib/codeclib.c @@ -2823,7 +2823,7 @@ static void amr_set_dec_codec_options(str *key, str *value, void *data) { if (!str_cmp(key, "CMR-interval")) dec->codec_options.amr.cmr_interval_us = str_to_i(value, 0) * 1000L; else if (!str_cmp(key, "mode-change-interval")) - dec->codec_options.amr.mode_change_interval = str_to_i(value, 0); + dec->codec_options.amr.mode_change_interval_us = str_to_i(value, 0) * 1000L; } static void amr_set_enc_codec_options(str *key, str *value, void *data) { @@ -3002,12 +3002,12 @@ static int amr_decoder_input(decoder_t *dec, const str *data, GQueue *out) { decoder_event(dec, CE_AMR_CMR_RECV, GUINT_TO_POINTER(cmr_int)); dec->avc.amr.last_cmr = rtpe_now; } - else if (dec->codec_options.amr.mode_change_interval) { + else if (dec->codec_options.amr.mode_change_interval_us) { // no CMR, check if we're due to do our own mode change if (!dec->avc.amr.last_cmr) // start tracking now dec->avc.amr.last_cmr = rtpe_now; else if (rtpe_now - dec->avc.amr.last_cmr - >= dec->codec_options.amr.mode_change_interval * 1000LL) { // XXX scale to micro + >= dec->codec_options.amr.mode_change_interval_us) { // switch up if we can decoder_event(dec, CE_AMR_CMR_RECV, GUINT_TO_POINTER(0xffff)); dec->avc.amr.last_cmr = rtpe_now; diff --git a/lib/codeclib.h b/lib/codeclib.h index 73afe0dc7..8b2382f9a 100644 --- a/lib/codeclib.h +++ b/lib/codeclib.h @@ -148,7 +148,7 @@ union codec_options_u { const unsigned int *bits_per_frame; const unsigned int *bitrates; - int mode_change_interval; + int64_t mode_change_interval_us; int64_t cmr_interval_us; } amr;