FreeSWITCH模組載入

2021-08-15 18:51:25 字數 1120 閱讀 1403

一、模組介面

freeswitch的大部分功能是通重載入外部的模組來實現的。模組通過乙個資料結構向外部暴露了自己的介面。該資料結構定義如下:

typedef struct switch_loadable_module_function_table switch_loadable_module_function_table_t;

模組被成功載入後,會搜尋這個資料結構的變數,從其中獲取到匯出的函式。這個變數名由如下方式組成:

模組名 + _module_inte***ce

二、sofia模組

以mod_sofia為例描述模組的載入過程。根據規則mod_sofia模組的介面變數名為:mod_sofia_module_inte***ce。在動態載入mod_sofia.so庫後,查詢mod_sofia_module_inte***ce變數,其中的load函式指標必須指向乙個有效的函式,否則載入模組將失敗。隨後,呼叫load函式,對於mod_sofia模組來說,最終呼叫的是mod_sofia.c中的mod_sofia_load函式。

在成功呼叫函式mod_sofia_load後,將獲取到乙個型別為switch_loadable_module_inte***ce_t的變數module_inte***ce,該資料型別定義如下:

struct switch_loadable_module_inte***ce 

;動態庫mod_sofia.so載入成功後,會把最終的結果整理為乙個結構,供上層使用,該資料結構定義如下:

struct switch_loadable_module ;

其中最重要的成員是來自變數mod_sofia_module_inte***ce的三個函式switch_module_load、switch_module_runtime、switch_module_shutdown,以及通過load函式獲取的介面module_inte***ce。

mod_sofia模組中只匯出了mod_sofia_load、 mod_sofia_shutdown兩個函式,switch_module_runtime未實現。在mod_sofia.c中,使用巨集switch_module_definition定義了結構變數mod_sofia_module_inte***ce供so檔案匯出

FreeSWITCH 增加模組 mod ilbc

記錄下,freeswitch 增加模組 mod ilbc 的過程 遇到的問題有 問題 1 執行時,載入模組 mod ilbc 時,報找不到 ilbc.so mod ilbc.so 依賴 ilbc.so 問題 2 客戶端連線時,fs 報錯不支援 ilbc codec 一 檢查是否安裝依賴庫 ilbc ...

FreeSwitch編譯新增新模組

原始碼安裝free switch後,目錄 usr local src freeswitch存放的是原始碼 目錄 usr local freeswitch存放的是程式。如果要增加新的模組,需要在原始碼位置進行修改 如果只是簡單地修改程式執行設定,在程式位置進行相應修改就可以了。預設原始碼編譯安裝完成後...

FreeSwitch 原始碼增加模組和單獨編譯模組

例項 新增freeswitch 本身的模組mod unimrcp fs 預設是不會把全部模組都編譯新增的,如果需要新增,首先需要到freeswitch 的原始碼 目錄 進行 configure 後 vi modules.conf 和進入build modules.conf.in 把需要的模組去掉注釋...