Dialogic IP Phone 05-2239-009 User Manual

Page of 604
Dialogic
®
 Global Call IP Technology Guide — November 2007
167
Dialogic Corporation
IP-Specific Operations
   if (gc_ReqModifyCall(crn, parmblkp, EV_ASYNC) < 0)  return FAILURE;
   gc_util_delete_parm_blk(parmblkp);
} /* End of function. */
4.7.8
Implementing Hold and Retrieve via SIP re-INVITE
Either party in a SIP dialog (calling or called) can put the call on hold by sending a re-INVITE 
request that contains a specially configured SDP offer that requests the remote endpoint to suspend 
RTP streaming. SIP standards define two methods for specifying suspension of RTP streaming:
The newer method of signaling an on-hold request sets the direction attribute in the media 
description of the SDP offer to “a=inactive”. This method, which is indicated as the preferred 
method in RFC 3261 suspends only the RTP streaming while leaving the RTCP session active 
for QoS monitoring.
The “legacy” method (which is defined in RFC 2543) sets the connection line of the SDP offer 
to “c=0.0.0.0”. If the remote endpoint accepts this proposal, both RTP and RTCP are disabled.
The Global Call IP call control library supports both methods of suspending media streaming.
4.7.8.1
Suspending RTP Streaming Only
To place an existing call on hold by suspending only the RTP streaming, an application first inserts 
a specially configured capability parameter element into a GC_PARM_BLK, then passes that 
parameter block in a call to gc_ReqModifyCall( ). The parameter element conforms to the 
following:
GCSET_CHAN_CAPABILITY
IPPARM_LOCAL_CAPABILITY
value = IP_CAPABILITY data structure with direction field set to 
IP_CAP_DIR_LCLRTPINACTIVE
All of the other fields in the IP_CAPABILITY structure should be set to the current values for the 
active media session. The application can start with a copy of the IP_CAPABILITY structure that 
was retrieved as part of the connection information as described in 
, on page 155, and then modify only the direction 
field before inserting the parameter element into the GC_PARM_BLK. 
When suspending streaming, it is only necessary to include a single capability parameter element 
in the parameter block even if the active call is a full-duplex media session.
4.7.8.2
Suspending RTP and RTCP Streaming
To completely suspend an existing call by deactivating both the RTP streaming and the RTCP 
session, an application first inserts a specially configured capability parameter element into a 
GC_PARM_BLK, then passes that parameter block in a call to gc_ReqModifyCall( ). The 
parameter element conforms to the following: