1# castengine_wifi_display<a name="ZH-CN_TOPIC_0000001147574647"></a> 2- [简介](#e05dce83) 3- [逻辑架构](#x5H5N) 4- [模块职责](#b4Dwq) 5- [目录结构](#767fa455) 6- [使用说明](#S3D8i) 7- [相关仓](#55ac5bcd) 8 9## 简介<a name="e05dce83"></a> 10castengine_wifi_display部件别名Sharing,媒体分享之意。拥有流媒体协议接入、媒体预览、媒体转分发能力,受投播管理服务管理和调用,是音视频投播子系统重要的流媒体能力部件。提供一套简单的Native C++的接口,主要业务是Miracast投屏,提供以下常用功能: 11 12- 主投端(WFD Source):主投端发送器,用于投屏Source端业务,可发送多路屏幕镜像流到不同设备。 13 14- 被投端(WFD Sink):被投端接收器,用于投屏Sink端业务,可接收多个设备的投屏流。 15## 逻辑架构<a name="x5H5N"></a> 16 17## 模块职责<a name="b4Dwq"></a> 18| **模块名称** | **职责** | 19| --- | --- | 20| Interaction | 框架层交互模块,负责与外部进程进行交互,基于IPC与RPC机制用于实现设备内和设备间的跨进程通信,支持与多个进程并发交互。 | 21| Scene | 交互模块的业务实现部分,和Interaction实例共同完成对外交互和对内框架调用。 | 22| ContextMgr | 框架层业务容器模块,负责将不同的业务Agent关联在一起,用于实现收流,转发,发流等业务;每个业务容器实例可包含多个Agent。 | 23| Agent | 业务在框架层的代理对象,负责信令层的交互。Agent分为Sink端Agent和Src端Agent。其中,Sink Agent负责收流(获取媒体数据)业务,Src Agent负责发流(输出媒体数据)业务。 | 24| Session | 业务控制层的具体实现,和Agent对象共同完成业务的信令交互。 | 25| Configuration | 配置管理模块,设置框架和业务的配置数据,服务启动时加载。 | 26| EventScheduler | 事件分发调度管理器,集中分发处理模块上报事件,采用异步线程池方式处理,不处理磁盘IO和网络IO等耗时操作。 | 27| MediachannelMgr | 框架层媒体通道模块,管理媒体通道,每个媒体通道实例可实现媒体数据的接入、预览和发送;具备编解码能力、混流能力、流媒体数据包透传能力; | 28| Consumer | 获取媒体数据对象,可根据业务属性通过任何方式获取媒体数据,通常用于收流。 | 29| Producer | 输出媒体数据对象,可根据业务属性通过任何方式输出媒体数据,通常用于推流。 | 30| ServiceMgr | 框架层服务管理模块,服务监听的管理模块,每个service实例用于对指定的端口进行tcp或者udp监听,可与外部进程或设备进行数据交互。 | 31| InputBack | 反控模块,跨设备反控及坐标变化等处理。 | 32| WindowMgr | 框架层窗口管理模块,窗口实例用于自触发预览窗口时使用。 | 33| Protocol | 实现rtsp、rtp、wfd、dlna、uibc等协议封装,用于对外协议交互与对接。 | 34| Codec | 媒体数据的封装与解封装,编码与解码,硬解加速等。 | 35| Network | 网络协议封装,包括tcp/udp的服务端、客户端等。 | 36 37## 目录结构<a name="767fa455"></a> 38仓目录结构如下: 39``` 40/foundation/CastEngine/castengine_wifi_display # 投播部件业务代码 41├── figures # 42├── interfaces # 外部接口层 43│ ├── kits # 应用接口 44│ └── innerkits # 系统内部件接口 45├── frameworks # 部件无独立进程的实现 46│ └── innerkitsimpl # native c++实现 47├── sa_profile # 部件配置 48├── services # 服务C/S实现 49│ ├── interaction # 进程交互 50│ ├── configure # 配置管理 51│ ├── context # 业务容器 52│ ├── agent # 业务代理 53│ ├── mediachannel # 媒体通道 54│ ├── mediaplayer # 播放渲染 55│ ├── etc # 部件进程配置 56│ ├── event # 事件中心 57│ ├── impl # 业务实现 58│ │ └── wfd # WFD业务实现 59│ ├── inputback # 反控模块 60│ ├── scheduler # 调度中心 61│ ├── windowmgr # 窗口管理 62│ ├── protocol # 协议库 63│ ├── codec # 编解码库 64│ ├── network # 网络库 65│ ├── extend # 引入库 66│ ├── common # 公共类 67│ └── utils # 工具类 68├── sa_profile # 服务配置 69├── tests # 测试代码 70├── bundle.json # 部件描述文件 71└── BUILD.gn # 编译入口 72``` 73## 目录结构<a name="S3D8i"></a> 74WFD Sink作为被投端允许多个设备同时投屏。投播框架允许单独操控每路投屏的音频,因此在多路投屏时可自由选择音频的播放与静音;WFD Source 可投屏到多个Sink端。设备作为Sink端时不能再作为Source端,反之亦然。 75 76## 相关仓<a name="55ac5bcd"></a> 77[castengine_cast_framework](https://gitee.com/openharmony/castengine_cast_framework) 78 79[castengine_cast_plus_stream](https://gitee.com/openharmony-sig/castengine_cast_plus_stream) 80 81[castengine_dlna](https://gitee.com/openharmony-sig/castengine_dlna) 82