3.1.2. gc_AnswerCall( )
The rings parameter is ignored.
Coders can be set in advance of using gc_AnswerCall( ) by using one of the following functions:
- gc_SetConfigData( ) - Enables the setting of system-wide parameters.
- gc_SetUserInfo( ) - Enables the setting of parameters on a device basis when used with the duration parameter set to GC_ALLCALLS, or on a call basis when used with the duration parameter set to GC_SINGLECALL.
The following code example shows how to use:
- gc_SetUserInfo( ) to set coder information before calls are answered using gc_AnswerCall( ).
- gc_Extension( ) to retrieve the coder information once a connection is established and a GCEV_ANSWERED event is received.
/* Specifying coders before answering calls */ LINEDEV ldev; CRN crn; GC_PARM_BLK *target_datap int i; /* Define Coder */ IP_CAPABILITY a_DefaultCapability[2]; gc_OpenEx(&ldev, ":N_iptB1T1:M_ipmB1C1:P_H323_R", EV_SYNC, 0); /* Set default coders for this ldev */ a_DefaultCapability[0].capability = GCCAP_AUDIO_g7231_6_3k; a_DefaultCapability[0].direction = IP_CAP_DIR_LCLTRANSMIT; a_DefaultCapability[0].type = GCCAPTYPE_AUDIO; a_DefaultCapability[0].extra.audio.frames_per_pkt = 3; a_DefaultCapability[0].extra.audio.VAD = GCPV_ENABLE; a_DefaultCapability[1].capability = GCCAP_AUDIO_g711Alaw64k; a_DefaultCapability[1].direction = IP_CAP_DIR_LCLTRANSMIT; a_DefaultCapability[1].type = GCCAPTYPE_AUDIO; a_DefaultCapability[1].extra.audio.frames_per_pkt = 10; a_DefaultCapability[1].extra.audio.VAD = GCPV_DISABLE; /* Not applicable for G.711 coders */ target_datap = NULL; for (i = 0;i<2;i++) { gc_util_insert_parm_ref(&target_datap, GCSET_CHAN_CAPABILITY, IPPARM_LOCAL_CAPABILITY, sizeof(IP_CAPABILITY), &a_DefaultCapability[i]); } gc_SetUserInfo(GCTGT_GCLIB_CHAN, ldev, target_datap, GC_ALLCALLS); gc_util_delete_parm(target_datap); gc_WaitCall(ldev, EV_ASYNC); /*... Receive GCEV_OFFERED ... */ gc_AnswerCall(crn, EV_ASYNC)); /* ... Receive GCEV_ANSWERED ... */ /* ... Check which coders have been used ...*/ GC_PARM_BLK *t_PrmBlkp = NULL; GC_PARM_BLK *t_RetBlkp = NULL; gc_util_insert_parm_val(&t_PrmBlkp, GCSET_CHAN_CAPABILITY, IPPARM_LOCAL_CAPABILITY, 0, 0); gc_Extension(GCTGT_GCLIB_CRN, crn, IPEXTID_GETINFO, t_PrmBlkp, &t_RetBlkp, EV_ASYNC); gc_util_delete_parm(t_PrmBlkp); /*.. Receive GCEV_EXTENSION*/ METAEVENT meta; gc_GetMetaEvent(&meta); EXTENSIONEVTBLK *extevtdatap = (EXTENSIONEVTBLK *)meta.extevtdatap; GC_PARM_DATAP t_ParmData_p = NULL; if (extevtdatap->ext_id == IPEXTID_GETINFO){ while ((t_ParmData_p = gc_util_next_parm(&extevtdatap->parmblk, t_ParmData_p)) != NULL){ if ((t_ParmData_p->set_ID == GCSET_CHAN_CAPABILITY) && (t_ParmData_p->parm_ID == IPPARM_LOCAL_CAPABILITY) && (t_ParmData_p->value_size != 0)){ IP_CAPABILITY *t_Capability = (IP_CAPABILITY *)(t_ParmData_p->value_buf); /* The direction will indicate RX or TX */ if (t_Capability != NULL) printf("Coder Capability=%d,type=%d,direction=%d,fpp=%d,vad=%d", t_Capability->capability, t_Capability->type, t_Capability->direction, t_Capability->extra.audio.frames_per_pkt, t_Capability->extra.audio.VAD); } } }
Click here to contact Telecom Support Resources
Copyright 2003, Intel Corporation