MT#55283 scale mode_change_interval

Change-Id: I62c1b8c27e9453a1bf62a4d8a9ba7169fe663712
pull/1855/merge
Richard Fuchs 1 week ago
parent 03d961bfd0
commit 58e45c26e0

@ -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;

@ -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;

Loading…
Cancel
Save