diff --git a/src/mod/endpoints/mod_opal/mod_opal.cpp b/src/mod/endpoints/mod_opal/mod_opal.cpp index 22959a9e7c..d43fb6f6aa 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.cpp +++ b/src/mod/endpoints/mod_opal/mod_opal.cpp @@ -323,8 +323,6 @@ bool FSManager::Initialise(switch_loadable_module_interface_t *iface) 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 @@ switch_status_t FSManager::ReadConfig(int reload) 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 @@ switch_status_t FSManager::ReadConfig(int reload) } +OpalCall * FSManager::CreateCall(void * /*userData*/) +{ + return new FSCall(*this); +} + + /////////////////////////////////////////////////////////////////////// FSEndPoint::FSEndPoint(FSManager & manager) @@ -476,6 +489,32 @@ OpalLocalConnection *FSEndPoint::CreateConnection(OpalCall & call, void *userDat } +/////////////////////////////////////////////////////////////////////// + +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 local = GetConnectionAs(); + if (local != NULL) { + PSafePtr proto = local->GetOtherPartyConnection(); + if (proto != NULL) { + proto->SetLocalPartyName(local->GetLocalPartyName()); + proto->SetDisplayName(local->GetDisplayName()); + } + } + + return OpalCall::OnSetUp(connection); +} + + /////////////////////////////////////////////////////////////////////// diff --git a/src/mod/endpoints/mod_opal/mod_opal.h b/src/mod/endpoints/mod_opal/mod_opal.h index badf2d6a5e..462d407469 100644 --- a/src/mod/endpoints/mod_opal/mod_opal.h +++ b/src/mod/endpoints/mod_opal/mod_opal.h @@ -82,6 +82,14 @@ struct FSListener { }; +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 @@ class FSManager : public OpalManager { return m_FreeSwitch; } + virtual OpalCall * CreateCall(void * userData); + private: switch_endpoint_interface_t *m_FreeSwitch; @@ -106,6 +116,7 @@ class FSManager : public OpalManager { list < FSListener > m_listeners; }; + class FSConnection; typedef struct { switch_timer_t read_timer;