想把pjsip移植到嵌入式Linux下,該設備有多個fxs/fxo端口,每個端口對應一個dsp通道。pjsip目前只是對聲卡類設備進行支持,實現的pjsua也僅僅對一個聲卡設備支持,並不支持多端口。
在移植中,可以考慮如下方法:
1、把每個fxs/fxo端口對應的dsp通道適配成一個聲卡設備,對pjsua改造,呼叫的時候,指定使用哪一個音頻設備
方法好處就是完全支持pjmedia現有的媒體框架,基本不改動原有流程和代碼。
pjsip庫升級時,原有自己實現的設備不受影響
2、在pjsip代碼中進行攔截,攔截收發報文時決定使用的那個通道
該方法修改了pjsip流程,在以後pjsip庫需要升級時,需要同步修改
3、把整個dsp適配成一個聲卡設備,擴展參數,來通知dsp使用哪個通道
該方法同樣要修改pjsip代碼,對以後升級不利
因此,最好的方法,就是把dsp的每個通道適配成一個音頻設備,混音功能同樣適配成mix設備。
pjsip目前還不支持特性 收藏
1、sip info方式dtmf接收
2、call waiting
3、t38傳真
4、t30傳真
5、digitmap
6、call parking
這些在pjsip的簡單的uaapp中都沒有,需要自己實現。可以使用pjsip-ua,pjsip lib自己實現ua或者在現有ua上進行擴充。