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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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. …