Author: robertj Date: Sun Mar 1 21:19:57 2009 New Revision: 12347 Log: Added "jitter-size" to config file to set jitter buffer size. Fixed transmission of Q.931 Calling-Party-Number, and DisplayName on H.323 Setup. Was previously being set on the wrong connection. Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp (original) +++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.cpp Sun Mar 1 21:19:57 2009 @@ -323,8 +323,6 @@ m_FreeSwitch->io_routines = &opalfs_io_routines; m_FreeSwitch->state_handler = &opalfs_event_handlers; - SetAudioJitterDelay(800, 3000); // should be config option - silenceDetectParams.m_mode = OpalSilenceDetector::NoSilenceDetection; if (m_listeners.empty()) { @@ -411,6 +409,15 @@ set_global_dialplan(val); } else if (!strcasecmp(var, "codec-prefs")) { set_global_codec_string(val); + } else if (!strcasecmp(var, "jitter-size")) { + char * next; + unsigned minJitter = strtoul(val, &next, 10); + if (minJitter >= 10) { + unsigned maxJitter = minJitter; + if (*next == ',') + maxJitter = atoi(next+1); + SetAudioJitterDelay(minJitter, maxJitter); // In milliseconds + } } } } @@ -455,6 +462,12 @@ } +OpalCall * FSManager::CreateCall(void * /*userData*/) +{ + return new FSCall(*this); +} + + /////////////////////////////////////////////////////////////////////// FSEndPoint::FSEndPoint(FSManager & manager) @@ -478,6 +491,32 @@ /////////////////////////////////////////////////////////////////////// +FSCall::FSCall(OpalManager & manager) + : OpalCall(manager) +{ +} + + +PBoolean FSCall::OnSetUp(OpalConnection & connection) +{ + // Transfer FS caller_id_number & caller_id_name from the FSConnection + // to the protocol connectionm (e.g. H.323) so gets sent correctly + // in outgoing packets + PSafePtr<FSConnection> local = GetConnectionAs<FSConnection>(); + if (local != NULL) { + PSafePtr<OpalConnection> proto = local->GetOtherPartyConnection(); + if (proto != NULL) { + proto->SetLocalPartyName(local->GetLocalPartyName()); + proto->SetDisplayName(local->GetDisplayName()); + } + } + + return OpalCall::OnSetUp(connection); +} + + +/////////////////////////////////////////////////////////////////////// + FSConnection::FSConnection(OpalCall & call, FSEndPoint & endpoint, switch_caller_profile_t *outbound_profile) : OpalLocalConnection(call, endpoint, NULL) Modified: freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_opal/mod_opal.h Sun Mar 1 21:19:57 2009 @@ -82,6 +82,14 @@ }; +class FSCall : public OpalCall { + PCLASSINFO(FSCall, OpalCall); + public: + FSCall(OpalManager & manager); + virtual PBoolean OnSetUp(OpalConnection & connection); +}; + + class FSManager : public OpalManager { PCLASSINFO(FSManager, OpalManager); @@ -96,6 +104,8 @@ return m_FreeSwitch; } + virtual OpalCall * CreateCall(void * userData); + private: switch_endpoint_interface_t *m_FreeSwitch; @@ -106,6 +116,7 @@ list < FSListener > m_listeners; }; + class FSConnection; typedef struct { switch_timer_t read_timer;