Dialogic Dialogic Global Call IP IP Phone User Manual


 
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 Section 4.6.2, “Getting Media
Streaming Status and Connection Information”, 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: