openharmony 富對富 WiFi投屏設計

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鏡像投屏能力,是音視頻投播子系統重要的流媒體能力部件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72872.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72872.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72872.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android項目優化同步速度

最近項目需要使用ffmpeg,需要gradle配置引入ffmpeg庫,發現原來通過google官方的代碼倉,下載太慢了,每秒KB級別的速度。(之前下gradle/gradle plugin都不至于這么慢),于是想到配置國內鏡像源來提…

Git 如何配置多個遠程倉庫和免密登錄?

自我簡介:4年導游,10年程序員,最近6年一直深耕低代碼領域,分享低代碼和AI領域見解。 通用后臺管理系統 代號:虎鯨 緣由 每次開發后臺界面都會有很多相同模塊,嘗試抽離出公共模塊作為快速開發的基座。 目標…

JVM組成面試題及原理

Java Virtual Machine(JVM)是Java程序的運行環境(java二進制字節碼的運行環境) 好處: 一次編寫,到處運行自動內存管理,垃圾回收機制 JVM由哪些部分組成,運行流程是什么?…

江科大51單片機筆記【11】AT24C02數據存儲秒表

一、數據存儲 先把需要的模塊導入做個測試 //main.c#include <REGX52.H> #include " LCD1602.h" #include " Key.h"void main() {LCD_Init();LCD_ShowString(1,1,"Hello");while(1){}} 代碼思路 分成兩塊寫&#xff0c;一塊寫I2C.c&am…

Hadoop的運行模式

Hadoop的運行模式 1、本地運行模式2、偽分布式運行模式3、完全分布式運行模式4、區別與總結 Hadoop有三種可以運行的模式&#xff1a;本地運行模式、偽分布式運行模式和完全分布式運行模式 1、本地運行模式 本地運行模式無需任何守護進程&#xff0c;單機運行&#xff0c;所有…

2.裝飾器模式

概述 裝飾器模式&#xff1a;在原有結構&#xff0c;動態地為對象添加職責&#xff0c;它是一種靈活的擴展功能方式。 業務場景&#xff1a;創建訂單 假設你正在開發一個電商系統&#xff0c;用戶在創建訂單時可以選擇不同的服務&#xff08;如折扣、配送、禮品包裝等&#…

C++11新特性 10.初始化列表、initializer_list

目錄 一.初始化列表 使用示例 二.initializer_list 1.基本概念 2.使用示例 一.初始化列表 C11提供的統一初始化方式&#xff0c;實現直接對數據初始化 使用示例 /* 初始化列表 */ #include <iostream> using namespace std; class Person { public:Person(string…

Vue 的 render 函數如何與 JSX 結合使用

在 Vue.js 中&#xff0c;render 函數提供了一種更底層的方式來創建虛擬 DOM 節點&#xff0c;而 JSX 則是一種 JavaScript 的語法擴展&#xff0c;允許開發者在 JavaScript 代碼中直接編寫類似 HTML 的結構。結合使用 render 函數和 JSX 可以帶來更高的靈活性和編程能力&#…

基于DeepSeek的智慧醫藥系統(源碼+部署教程)

運行環境 智慧醫藥系統運行環境如下&#xff1a; 前端&#xff1a; HTMLCSS后端&#xff1a;Java AIGCDeepseekIDE工具&#xff1a;IDEA技術棧&#xff1a;Springboot HTMLCSS MySQL 主要角色 智慧醫藥系統主要分為兩個角色。 游客 尚未進行注冊和登錄。具備登錄注冊、…

南開提出1Prompt1Story,無需訓練,可通過單個連接提示實現一致的文本到圖像生成。

&#xff08;1Prompt1Story&#xff09;是一種無訓練的文本到圖像生成方法&#xff0c;通過整合多個提示為一個長句子&#xff0c;并結合奇異值重加權&#xff08;SVR&#xff09;和身份保持交叉注意力&#xff08;IPCA&#xff09;技術&#xff0c;解決了生成圖像中身份不一致…

BLUEM2引擎源碼2025最新版

BLUE 引擎解析&#xff1a;傳奇私服圈中的熱門引擎 一、BLUE 引擎簡介 BLUE 引擎是傳奇私服圈子中較為知名的一款游戲引擎&#xff0c;它在傳統的傳奇引擎基礎上進行了優化和擴展&#xff0c;使得私服開發者可以更加方便地搭建和管理服務器。相比于早期的 GEE、LEG、Hero 等引…

第53天:Web攻防-SQL注入數據庫類型用戶權限架構分層符號干擾利用過程發現思路

#知識點&#xff1a;(本節課了解即可&#xff09; 1、Web攻防-SQL注入-產生原理&應用因素 2、Web攻防-SQL注入-各類數據庫類型利用 一、數據庫知識&#xff1a; 1、數據庫名&#xff0c;表名&#xff0c;列名&#xff0c;數據 2、自帶數據庫&#xff0c;數據庫用戶及權限 3…

【玩轉MySQL數據字典】MySQL數據字典與常用操作指令

MySQL數據字典簡介與常用操作指令 一、數據字典簡介 數據字典是MySQL 5.7中用于存儲數據庫對象元數據的系統表。在MySQL的早期版本中&#xff0c;元數據存儲在.frm文件及其他文件里。這種存儲方式存在諸多弊端&#xff0c;例如元數據不一致問題&#xff0c;不同文件間元數據的…

如何有效判斷與排查Java GC問題

目錄 一、GC的重要性與對性能的影響 &#xff08;一&#xff09;GC對性能的影響簡要分析 1.GC暫停與應用停頓 2.GC吞吐量與資源利用率 3.GC對內存管理的作用&#xff1a;資源回收 4.GC策略與優化的選擇 &#xff08;二&#xff09;GC的雙刃劍 二、GC性能評價標準 &…

el-table(elementui)表格合計行使用以及滾動條默認樣式修改

一、el-table新增合計行以及el-table展示數據出現的問題 1. 使用合計行 el-table的屬性show-summary設為true&#xff0c;即可在表格尾部展示合計行。默認情況下&#xff0c;第一列不展示數據&#xff0c;而顯示合計二字&#xff0c;可以通過sum-text自己配置&#xff0c;其余…

olmOCR:高效精準的 PDF 文本提取工具

在日常的工作和學習中&#xff0c;是否經常被 PDF 文本提取問題困擾&#xff1f;例如&#xff1a; 想從學術論文 PDF 中提取關鍵信息&#xff0c;卻發現傳統 OCR 工具識別不準確或文本格式混亂&#xff1f;需要快速提取商務合同 PDF 中的條款內容&#xff0c;卻因工具不給力而…

云計算:虛擬化、容器化與云存儲技術詳解

在上一篇中,我們深入探討了網絡安全的核心技術,包括加密、認證和防火墻,并通過實際案例和細節幫助讀者全面理解這些技術的應用和重要性。今天,我們將轉向一個近年來迅速發展的領域——云計算。云計算通過提供按需訪問的計算資源,徹底改變了IT基礎設施的構建和管理方式。本…

免費開源抓包工具Wireshark介紹

一、Wireshark 安裝詳解 Wireshark 是一款跨平臺的網絡協議分析器&#xff0c;支持 Windows、macOS 和 Linux 等操作系統。以下分別介紹在不同操作系統上的安裝步驟&#xff0c;并詳細解釋安裝過程中的選項。 1、Windows 平臺安裝 1.下載 Wireshark 安裝包: 訪問 Wireshark…

藍橋杯備賽:炮彈

題目解析 這道題目是一道模擬加調和級數&#xff0c;難的就是調和級數&#xff0c;模擬過程比較簡單。 做法 這道題目的難點在于我們在玩這個跳的過程&#xff0c;可能出現來回跳的情況&#xff0c;那么為了解決這種情況&#xff0c;我們采取的方法是設定其的上限步數。那么…

2025年滲透測試面試題總結-奇安信安全工程師(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 奇安信安全工程師 1. MVC框架詳細說明 2. SQL注入詳細介紹 3. XSS和CSRF的區別 4. XXE漏洞原理 5. …