PJSIP的DTMF简单实现,回调函数:on_dtmf_digit

PJSIP源码比较强大,先说一下DTMF是什么?

双音多频 DTMF(Dual Tone Multi Frequency),双音多频,由高频群和低频群组成,高低频群各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信号有16个编码。利用DTMF信令可选择呼叫相应的对讲机   
双音多频信号(DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。   在使用双音多频信号之前,电话系统中使用一连串的断续脉冲来传送被叫号码,称为脉冲拨号。脉冲拨号需要电信局中的操作员手工完成长途接续(早期方法,很老很古董)。   双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。   
双音多频的拨号键盘是4×4的矩阵,每一行代表一个低频,每一列代表一个高频。每按一个键就发送一个高频和低频的正弦信号组合,比如'1'相当于697和1209赫兹(Hz)。交换机可以解码这些频率组合并确定所对应的按键。

通过调用回调函数就可以达到目标
static void on_dtmf_digit(pjsua_call_id call_id, int digit)

在PJSIP例子中:
pjsip-apps\src\pjsua\pjsua_app.c(5418):    app_config.cfg.cb.on_dtmf_digit = &call_on_dtmf_callback;

实现部分:

/*
* DTMF callback.
*/
static void call_on_dtmf_callback(pjsua_call_id call_id, int dtmf)
{
    PJ_LOG(3,(THIS_FILE, "Incoming DTMF on call %d: %c", call_id, dtmf));
}

转至:http://www.zhimax.com/article/vc/on_dtmf_digit.html


你可能感兴趣的:(pjsip)