ENDPT_410_ProcessVrgEndptCapabilities

lineId = ((VRG_ENDPT_STATE *) endptState)->lineId;
dspNum = lineId / (VRG_ENDPT_CFG_NUM_ENDPT/VRG_GLOBAL_CFG_MAX_NUM_DSP);

//初始化ENDPT能力集
*capabilities = vrgEndptCap[dspNum];

state = GetEndptState( lineId );	//获取ENDPT对象

//能过配置获取来显类型
Provision( endptState, EPPROV_CIDSigProtocol, &capabilities->clidType );

//如果来显为DTMF,则获取启始和终止字符
if( capabilities->clidType == EPCLIDTYPE_DTMF )
	Provision( endptState, EPPROV_CIDDtmfParms, &dtmfParms );
	capabilities->clidData[0] = GetDigitEvent( (HAPI_PTE_DTMFDDGT)dtmfParms.startCode );
	capabilities->clidData[1] = GetDigitEvent( (HAPI_PTE_DTMFDDGT)dtmfParms.endCode );

bLiteWeightCnx = VRG_FALSE;	//标记轻量级资源

for ( i = PRIMARY_CNX_INDEX; i < VRG_ENDPT_CFG_MAX_CNX_PER_ENDPT; i++ )
	//检查当前ENDPT是否有对应的资源对象,如果有则跳出
	if ( state->cnx[i] && (state->cnx[i]->cnxId == CNX_IDLE) )
		bLiteWeightCnx = state->cnx[i]->bLiteWeight;
		break;

if ( i == VRG_ENDPT_CFG_MAX_CNX_PER_ENDPT )	//发现ENDPT对象没有对应的资源
	//在ENDPT中找到第一个可用的资源对象
	for ( i = 0; i < VRG_ENDPT_CFG_MAX_CNX_PER_ENDPT; i++ )
		if ( state->cnx[i] == NULL )
			break;
	
	//无效的ENDPT关联,返回没有能力值
	if ( state->cnx[i] != NULL )
		resetCodecCap(capabilities->codecCap);
		return ( EPSTATUS_SUCCESS );
	
	//给ENDPT分配一个资源
	for ( i = 0; i < VRG_ENDPT_CFG_NUM_CNX; i++ )
		if ( (vrgCnxState[i].dspNum == dspNum) &&(vrgCnxState[i].cnxId == CNX_UNUSED) )
			state->cnx[j] = &vrgCnxState[i];
			state->cnx[j]->cnxId = CNX_IDLE;
			bLiteWeightCnx = vrgCnxState[i].bLiteWeight;
			break;
	
	//无可用资源,返回无能力值
	if ( i == VRG_ENDPT_CFG_NUM_CNX )
		resetCodecCap(capabilities->codecCap);
		return ( EPSTATUS_SUCCESS );

if ( bLiteWeightCnx )	//如果资源为轻量级,则去除所有高压缩编码支持
	for (i = 0; i < CODEC_MAX_TYPES; i++)
		if ( i != CODEC_PCMU && i != CODEC_PCMA && i != CODEC_NTE && i != CODEC_RED )
			capabilities->codecCap[i] = CODEC_UNSUPPORTED;
//修改仅支持G729,不支持G729A
else if ( capabilities->codecCap[CODEC_G729A] == CODEC_SUPPORTED )
	capabilities->codecCap[CODEC_G729A] = CODEC_UNSUPPORTED;
	capabilities->codecCap[CODEC_G729] = CODEC_SUPPORTED;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值