Background
pjsua_call.c
Currently this is how the media channel interacts with SIP call in PJSUA-LIB.
- pjsua_call_make_call() :
- pjsua_call_on_incoming() :
- pjsua_call_update() :
- pjsua_call_reinvite() :
- pjsua_call_on_rx_offer() :
- pjsua_call_on_create_offer() :
-
pjsua_media_channel_init();
pjsua_media_channel_create_sdp(&local_sdp, rem_sdp);
- pjsua_call_on_media_update() :
- pjsua_media_channel_update();
- pjsua_call_on_state_changed(DISCONNECTED) :
- pjsua_call_on_media_update(HOLD) :
- pjsua_media_channel_deinit();
pjsua_media.c
and this is the implementation of media channel functions above:
- pjsua_media_channel_init() :
- pjmedia_transport_srtp_create();
- pjsua_media_channel_create_sdp() :
-
pjmedia_endpt_create_sdp();
pjmedia_transport_media_create();
- pjsua_media_channel_update() :
-
pjmedia_transport_media_start();
pjmedia_session_create();
- pjsua_media_channel_deinit() :
-
stop_media_session();
pjmedia_transport_media_stop();
pjmedia_transport_close(srtp);
New
New code in italics. Deleted code is in strike-through.
pjsua_call.c
This is the proposed interaction:
- pjsua_call_make_call() :
- pjsua_call_on_incoming() :
-
pjsua_media_channel_init();
pjsua_media_channel_create_sdp(&local_sdp, rem_sdp);
pjsua_media_channel_init(&local_sdp, rem_sdp);
- pjsua_call_update() :
- pjsua_call_reinvite() :
- pjsua_call_on_rx_offer() :
- pjsua_call_on_create_offer() :
-
pjsua_media_channel_init(&local_sdp, rem_sdp);
pjsua_media_channel_create_sdp(&local_sdp, rem_sdp);
- pjsua_call_on_media_update() :
- pjsua_media_channel_update();
- pjsua_call_on_state_changed(DISCONNECTED) :
- pjsua_call_on_media_update(HOLD) :
- pjsua_media_channel_deinit();
pjsua_media.c
and this is the implementation of media channel functions above:
- pjsua_media_channel_init(&local_sdp, rem_sdp) :
-
pjmedia_transport_srtp_create();
pjmedia_transport_media_create(local_sdp, rem_sdp);
pjmedia_transport_media_create(rem_sdp);
pjmedia_transport_encode_sdp(local_sdp, rem_sdp);
- pjsua_media_channel_create_sdp(&local_sdp, rem_sdp) :
-
pjmedia_endpt_create_sdp();
pjmedia_transport_media_create(local_sdp, rem_sdp);
pjmedia_transport_encode_sdp(local_sdp, rem_sdp);
- pjsua_media_channel_update() :
-
pjmedia_transport_media_start();
pjmedia_session_create();
- pjsua_media_channel_deinit() :
-
stop_media_session();
pjmedia_transport_media_stop();
pjmedia_transport_close(srtp);
Changes in Transport
- media_create()
-
- The semantic has changed:
- previously this function is always called everytime we want to send offer
- now this function is only called once when the transport needs to be created. Meaning once before call, and once the session is woken up after call hold. When media is already created and the application wants to send offer, it will just call encode_sdp() below without re-creating the media.
- The syntax has changed:
- local_sdp parameter is removed. Local SDP should be populated in encode_sdp() instead. This is to make it consistent since SDP can be created without re-creating media.
- The semantic has changed:
- New: encode_sdp()
-
- This function is used to modify local SDP with transport info. It can be called for different purposes below.
- media_start()
-
- The syntax has changed:
- the local SDP is now const. This is because it's useless to modify the local SDP there since the SDP has already been negotiated.
- The syntax has changed:
Sample: ICE processing with the new media framework
The new draft for ICE offer/answer processing:
Last modified 16 years ago
Last modified on Jun 19, 2008 2:06:27 PM
Attachments (1)
-
ICE_SDP.png
(14.6 KB) -
added by bennylp 16 years ago.
ICE offer/answer flow chart
Download all attachments as: .zip