TT#64259 add function to inject DTMF events

Change-Id: Ie84e2e8cad11e686c6e7010ca78ecba37c5dbf7e
changes/68/32468/1
Richard Fuchs 7 years ago
parent fd16bf5104
commit 35740cda35

@ -1231,12 +1231,17 @@ static struct ssrc_entry *__ssrc_handler_new(void *p) {
static void __dtmf_dsp_callback(void *ptr, int code, int level, int delay) {
struct codec_ssrc_handler *ch = ptr;
uint64_t ts = ch->last_dtmf_event_ts + delay;
ch->last_dtmf_event_ts = ts;
ts = av_rescale(ts, ch->encoder_format.clockrate, ch->dtmf_format.clockrate);
codec_add_dtmf_event(ch, code, level, ts);
}
void codec_add_dtmf_event(struct codec_ssrc_handler *ch, int code, int level, uint64_t ts) {
struct dtmf_event *ev = g_slice_alloc(sizeof(*ev));
*ev = (struct dtmf_event) { .code = code, .volume = level, .ts = ch->last_dtmf_event_ts + delay };
ch->last_dtmf_event_ts = ev->ts;
ev->ts = av_rescale(ev->ts, ch->encoder_format.clockrate, ch->dtmf_format.clockrate);
*ev = (struct dtmf_event) { .code = code, .volume = level, .ts = ts };
ilog(LOG_DEBUG, "DTMF event state change: code %i, volume %i, TS %lu",
ev->code, ev->volume, (unsigned long) ev->ts);
ev->code, ev->volume, (unsigned long) ts);
g_queue_push_tail(&ch->dtmf_events, ev);
}

@ -74,6 +74,7 @@ void __rtp_payload_type_add_send(struct call_media *other_media, struct rtp_payl
#ifdef WITH_TRANSCODING
void codec_handlers_update(struct call_media *receiver, struct call_media *sink, const struct sdp_ng_flags *);
void codec_add_dtmf_event(struct codec_ssrc_handler *ch, int code, int level, uint64_t ts);
#else

Loading…
Cancel
Save