castengine_wifi_display部件別名Sharing,媒體分享之意。擁有流媒體協議接入、媒體預覽、媒體轉分發能力,受投播管理服務管理和調用,是音視頻投播子系統重要的流媒體能力部件。提供一套簡單的Native C++的接口,主要業務是Miracast投屏,提供以下常用功能:
-
主投端(WFD Source):主投端發送器,用于投屏Source端業務,可發送多路屏幕鏡像流到不同設備。
-
被投端(WFD Sink):被投端接收器,用于投屏Sink端業務,可接收多個設備的投屏流。
邏輯架構
模塊職責
模塊名稱 | 職責 |
---|---|
Interaction | 框架層交互模塊,負責與外部進程進行交互,基于IPC與RPC機制用于實現設備內和設備間的跨進程通信,支持與多個進程并發交互。 |
Scene | 交互模塊的業務實現部分,和Interaction實例共同完成對外交互和對內框架調用。 |
ContextMgr | 框架層業務容器模塊,負責將不同的業務Agent關聯在一起,用于實現收流,轉發,發流等業務;每個業務容器實例可包含多個Agent。 |
Agent | 業務在框架層的代理對象,負責信令層的交互。Agent分為Sink端Agent和Src端Agent。其中,Sink Agent負責收流(獲取媒體數據)業務,Src Agent負責發流(輸出媒體數據)業務。 |
Session | 業務控制層的具體實現,和Agent對象共同完成業務的信令交互。 |
Configuration | 配置管理模塊,設置框架和業務的配置數據,服務啟動時加載。 |
EventScheduler | 事件分發調度管理器,集中分發處理模塊上報事件,采用異步線程池方式處理,不處理磁盤IO和網絡IO等耗時操作。 |
MediachannelMgr | 框架層媒體通道模塊,管理媒體通道,每個媒體通道實例可實現媒體數據的接入、預覽和發送;具備編解碼能力、混流能力、流媒體數據包透傳能力; |
Consumer | 獲取媒體數據對象,可根據業務屬性通過任何方式獲取媒體數據,通常用于收流。 |
Producer | 輸出媒體數據對象,可根據業務屬性通過任何方式輸出媒體數據,通常用于推流。 |
ServiceMgr | 框架層服務管理模塊,服務監聽的管理模塊,每個service實例用于對指定的端口進行tcp或者udp監聽,可與外部進程或設備進行數據交互。 |
InputBack | 反控模塊,跨設備反控及坐標變化等處理。 |
WindowMgr | 框架層窗口管理模塊,窗口實例用于自觸發預覽窗口時使用。 |
Protocol | 實現rtsp、rtp、wfd、dlna、uibc等協議封裝,用于對外協議交互與對接。 |
Codec | 媒體數據的封裝與解封裝,編碼與解碼,硬解加速等。 |
Network | 網絡協議封裝,包括tcp/udp的服務端、客戶端等。 |
目錄結構
倉目錄結構如下:
/foundation/CastEngine/castengine_wifi_display # 投播部件業務代碼
├── figures #
├── interfaces # 外部接口層
│ ├── kits # 應用接口
│ └── innerkits # 系統內部件接口
├── frameworks # 部件無獨立進程的實現
│ └── innerkitsimpl # native c++實現
├── sa_profile # 部件配置
├── services # 服務C/S實現
│ ├── interaction # 進程交互
│ ├── configure # 配置管理
│ ├── context # 業務容器
│ ├── agent # 業務代理
│ ├── mediachannel # 媒體通道
│ ├── mediaplayer # 播放渲染
│ ├── etc # 部件進程配置
│ ├── event # 事件中心
│ ├── impl # 業務實現
│ │ └── wfd # WFD業務實現
│ ├── inputback # 反控模塊
│ ├── scheduler # 調度中心
│ ├── windowmgr # 窗口管理
│ ├── protocol # 協議庫
│ ├── codec # 編解碼庫
│ ├── network # 網絡庫
│ ├── extend # 引入庫
│ ├── common # 公共類
│ └── utils # 工具類
├── sa_profile # 服務配置
├── tests # 測試代碼
├── bundle.json # 部件描述文件
└── BUILD.gn # 編譯入口
目錄結構
WFD Sink作為被投端允許多個設備同時投屏。投播框架允許單獨操控每路投屏的音頻,因此在多路投屏時可自由選擇音頻的播放與靜音;WFD Source 可投屏到多個Sink端。設備作為Sink端時不能再作為Source端,反之亦然。
投屏代碼倉地址:?castengine_wifi_display: castengine_wifi_display部件別名Sharing,媒體分享之意。基于投播框架開發,擁有流媒體協議接入、媒體預覽、媒體轉分發等通用能力,受投播管理服務框架管理和調用,提供Miracast鏡像投屏能力,是音視頻投播子系統重要的流媒體能力部件。https://gitee.com/openharmony/castengine_wifi_display
castengine_wifi_display: castengine_wifi_display部件別名Sharing,媒體分享之意。基于投播框架開發,擁有流媒體協議接入、媒體預覽、媒體轉分發等通用能力,受投播管理服務框架管理和調用,提供Miracast鏡像投屏能力,是音視頻投播子系統重要的流媒體能力部件。