搭建代码框架并更新文档

This commit is contained in:
huanglinhuan
2025-12-11 22:58:25 +08:00
parent 38d519c220
commit 96fecf3c6f
93 changed files with 4924 additions and 10 deletions

231
PROJECT_STRUCTURE.md Normal file
View File

@@ -0,0 +1,231 @@
# 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 穿透完全透明,上层无需关心连接方式
- 完全集成到现有角色模型中
- 保持跨平台兼容性