unimrcp源碼窺探及task異步架構的學習(二)(MRCP Client)

Framework Agent 創建過程中,虛方法表中的方法都實現了。

在啓動task的過程中,會觸發on_start_complete事件。MRCP Client 正是在這個事件中創建的。

所以讓我們來看看這個事件中完成了哪些工作。

 

一、創建mrcp client

  1. 首先創建mrcp client客戶端堆棧,即得到mrcp_client_t結構。

unimrcp_client_create

  →unimrcp_client_init(源文件:\platforms\libunimrcp-client\src\unimrcp_client.c)

            → mrcp_client_create(源文件:\libs\mrcp-client\src\mrcp_client.c), 

                          跟創建Framework Agent類似,使用apt_consumer_task_t結構,創建MRCP Client的task實體。再把MRCP Client的虛方法表中的三個方法實現:

                  → apt_consumer_task_create

     vtable->process_msg= mrcp_client_msg_process;

     vtable->on_start_complete = mrcp_client_on_start_complete;

     vtable->on_terminate_complete = mrcp_client_on_terminate_complete;

2.依賴配置文件的內容加載UniMRCP client

 

unimrcp_client_load是處理函數,unimrcp_client_doc_parse函數將xml配置文件解析成相關的結構。再調用unimrcp_client_doc_process函數進行處理,將配置文件的內容加載到MRCP Client中。xml文件的根節點unimrcpclient下,有如下節點:

  • properties

  • components

         resource-factory:Factory of MRCP resources

        sip-uac:SofiaSIP MRVPv2   signaling agent 

                     (詳細請見文章【unimrcp源碼窺探及task異步架構的學習(三)(SofiaSIP Agent)】)

        rtsp-uac: UniRTSP MRCPv1 signaling agent

        mrcpv2-uac:MRCPv2 connection agent

        media-engine:Media processing engine

        rtp-factory:Factory of RTP terminations

  • settings

  • profiles

  • misc

 

 

二、創建mrcp application 

mrcp_application_t類型的結構體,定義了mrcp application,它從mrcp client中獲取請求、或者發送請求。

mrcp_application_create函數,是創建處理的入口函數。

 

三、 將創建好的application註冊到mrcp client中

 

四、啓動mrcp client 進行處理,開始工作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章