# DisplayFlow 项目结构说明 ## 目录结构 ``` DisplayFlow/ ├── CMakeLists.txt # 根 CMake 配置文件 ├── .gitignore # Git 忽略文件配置 ├── README.md # 项目概述和技术方案 ├── DEVELOPMENT_PLAN.md # 详细开发计划 ├── README_BUILD.md # 构建指南 ├── PROJECT_STRUCTURE.md # 本文件:项目结构说明 │ ├── core/ # 跨平台核心库 │ ├── CMakeLists.txt │ ├── include/ │ │ └── displayflow/ │ │ └── core/ │ │ ├── common/ # 通用类型和常量 │ │ │ ├── types.h │ │ │ └── constants.h │ │ ├── network/ # 网络抽象层 │ │ │ ├── network_manager.h │ │ │ ├── network_interface.h │ │ │ ├── nat_traversal/ # NAT 穿透模块 │ │ │ │ ├── stun_client.h │ │ │ │ ├── turn_client.h │ │ │ │ ├── ice_agent.h │ │ │ │ ├── candidate.h │ │ │ │ └── nat_type.h │ │ ├── protocol/ # 协议层 │ │ │ ├── protocol_handler.h │ │ │ └── message_serializer.h │ │ ├── session/ # 会话管理 │ │ │ ├── session_manager.h │ │ │ └── session.h │ │ ├── codec/ # 编解码抽象 │ │ │ ├── codec_manager.h │ │ │ └── codec_interface.h │ │ ├── role/ # 角色管理 │ │ │ ├── role_manager.h │ │ │ ├── role_interface.h │ │ │ ├── host_role.h │ │ │ ├── client_role.h │ │ │ └── peer_role.h │ │ ├── file_transfer/ # 文件传输模块 │ │ │ ├── file_transfer_manager.h │ │ │ ├── file_transfer_session.h │ │ │ ├── file_chunk.h │ │ │ └── transfer_progress.h │ │ └── utils/ # 工具类 │ │ ├── logger.h │ │ └── timer.h │ └── src/ # 对应的源文件实现 │ ├── network/ │ │ └── nat_traversal/ │ ├── protocol/ │ ├── session/ │ ├── codec/ │ ├── role/ │ ├── file_transfer/ │ └── utils/ │ ├── platforms/ # 平台适配层 │ ├── android/ # Android 平台实现 │ │ ├── CMakeLists.txt │ │ ├── include/ │ │ │ └── displayflow/ │ │ │ └── platform/ │ │ │ └── android/ │ │ │ ├── platform_adapter.h │ │ │ ├── capture/ # 捕获模块 │ │ │ │ ├── screen_capture.h │ │ │ │ ├── media_projection_wrapper.h │ │ │ │ └── camera_capture.h # 摄像头捕获 │ │ │ ├── render/ # 渲染引擎 │ │ │ │ └── render_engine.h │ │ │ ├── input/ # 输入处理 │ │ │ │ └── touch_handler.h │ │ │ └── network/ # 网络管理 │ │ │ └── android_network_manager.h │ │ └── src/ # 对应的源文件实现 │ │ ├── capture/ │ │ │ ├── screen_capture.cpp │ │ │ ├── media_projection_wrapper.cpp │ │ │ └── camera_capture.cpp │ │ ├── render/ │ │ ├── input/ │ │ ├── network/ │ │ └── platform_adapter.cpp │ │ │ └── windows/ # Windows 平台实现 │ ├── CMakeLists.txt │ ├── include/ │ │ └── displayflow/ │ │ └── platform/ │ │ └── windows/ │ │ ├── platform_adapter.h │ │ ├── virtual_display/ # 虚拟显示器 │ │ │ ├── virtual_display.h │ │ │ └── iddcx_wrapper.h │ │ ├── capture/ # 捕获模块 │ │ │ └── camera_capture.h # 摄像头捕获 │ │ ├── render/ # 渲染引擎 │ │ │ ├── directx_renderer.h │ │ │ └── d3d11_renderer.h │ │ ├── input/ # 输入处理 │ │ │ ├── keyboard_handler.h │ │ │ └── mouse_handler.h │ │ └── network/ # 网络管理 │ │ └── windows_network_manager.h │ └── src/ # 对应的源文件实现 │ ├── virtual_display/ │ ├── capture/ │ │ └── camera_capture.cpp │ ├── render/ │ ├── input/ │ ├── network/ │ └── platform_adapter.cpp │ ├── docs/ # 文档目录 │ ├── ARCHITECTURE.md # 架构设计文档 │ └── API.md # API 文档 │ ├── prototypes/ # 原型和测试代码 │ └── README.md │ └── tools/ # 开发工具脚本 └── README.md ``` ## 模块说明 ### 核心库 (core/) 100% 跨平台的业务逻辑实现,不依赖任何平台特定 API。 - **common/**: 基础类型定义和常量 - **network/**: 网络抽象层,统一管理 RNDIS、Wi-Fi、以太网 - **nat_traversal/**: NAT 穿透模块(STUN/TURN/ICE) - **protocol/**: 基于 FlatBuffers 的协议定义和序列化 - **session/**: 会话生命周期管理 - **codec/**: 编解码器抽象接口和管理 - **role/**: 角色(Host/Client/Peer)实现 - **file_transfer/**: 文件传输模块(断点续传、多文件传输) - **utils/**: 通用工具类(日志、定时器等) ### 平台适配层 (platforms/) 各平台特定功能的薄封装层。 #### Android - **capture/**: - 屏幕捕获(MediaProjection API 封装) - 摄像头捕获(Camera2 API / NDK Camera API) - **render/**: 渲染引擎(用于 Client 角色) - **input/**: 触摸输入处理 - **network/**: Android 网络管理(USB RNDIS、Wi-Fi) #### Windows - **virtual_display/**: IddCx 驱动框架封装,创建虚拟显示器 - **capture/**: - 摄像头捕获(DirectShow / Media Foundation) - **render/**: DirectX 渲染引擎 - **input/**: 键盘和鼠标输入处理 - **network/**: Windows 网络管理(USB RNDIS、Wi-Fi、以太网) ## 命名空间 - `displayflow::core` - 核心库 - `displayflow::platform::android` - Android 平台适配 - `displayflow::platform::windows` - Windows 平台适配 ## 构建系统 使用 CMake 作为统一构建系统: - 根目录 `CMakeLists.txt` 负责平台检测和子目录管理 - 各模块有独立的 `CMakeLists.txt` - 支持条件编译,根据平台自动选择对应的适配层 ## 当前状态 所有基础框架文件已创建,包含: - ✅ 完整的目录结构 - ✅ 所有头文件和源文件占位符 - ✅ CMake 构建配置 - ✅ 基础类型和接口定义 **下一步**:开始实现核心功能模块。 ## 新增功能模块 ### 文件传输模块 (core/file_transfer/) 支持在设备间传输文件,特性包括: - 断点续传 - 多文件并发传输 - 传输进度监控 - 文件校验(MD5/SHA256) - 传输队列管理 ### 远程摄像头模块 支持使用对方的摄像头作为视频源,特性包括: - 摄像头设备枚举和选择 - 视频流捕获和编码 - 与屏幕共享复用相同的传输通道 - 支持多摄像头切换 - 摄像头参数控制(分辨率、帧率等) ### NAT 穿透模块 (core/network/nat_traversal/) 支持通过互联网连接设备,突破局域网限制,特性包括: - **STUN 客户端**:NAT 类型检测和公网 IP 发现 - **TURN 客户端**:中继服务器支持(当直连失败时) - **ICE 协议**:自动选择最佳连接路径 - **候选地址收集**:收集本地、STUN、TURN 候选地址 - **连接建立**:自动尝试多种连接方式,选择最优路径 **连接方式优先级:** 1. 局域网直连(最快) 2. 公网直连(通过 STUN 发现) 3. TURN 中继(最慢但最可靠) **架构优势:** - 文件传输复用现有的网络抽象层和协议层 - 摄像头捕获复用现有的编码和传输机制 - NAT 穿透完全透明,上层无需关心连接方式 - 完全集成到现有角色模型中 - 保持跨平台兼容性