Files
DisplayFlow/DEVELOPMENT_PLAN.md

322 lines
7.7 KiB
Markdown
Raw Permalink Normal View History

2025-12-11 22:58:25 +08:00
# DisplayFlow 开发计划
## 1. 项目阶段划分
### 阶段一核心架构搭建Foundation Phase
**目标**:建立跨平台核心库的基础架构和构建系统
#### 1.1 构建系统配置
- [ ] 配置 CMake 作为统一构建系统
- [ ] 设置跨平台编译配置Android NDK、Windows MSVC
- [ ] 配置依赖管理FlatBuffers、编解码库等
- [ ] 建立单元测试框架
#### 1.2 核心库基础模块
- [ ] **网络抽象层Network Abstraction**
- 统一网络接口定义
- RNDIS/USB 网络检测
- Wi-Fi 网络管理
- 以太网支持
- 自动连接选择算法
- [ ] **NAT 穿透模块NAT Traversal**
- STUN 客户端实现
- TURN 客户端实现
- ICE 协议实现
- 候选地址收集
- 连接检查和路径选择
- 自动连接建立
- [ ] **协议层Protocol Layer**
- FlatBuffers Schema 定义
- 消息序列化/反序列化
- 会话建立协议
- 视频帧传输协议
- 输入事件协议
- [ ] **会话管理Session Management**
- 会话创建与销毁
- 角色管理Host/Client/Peer
- 一对多会话支持
- 会话状态机
- [ ] **编解码抽象Codec Abstraction**
- 编解码器接口定义
- H.264 硬件加速支持
- VP8 软件编解码
- MJPEG 支持
- 自适应编解码器选择
- [ ] **文件传输模块File Transfer**
- 文件传输协议定义
- 断点续传机制
- 多文件并发传输
- 传输进度跟踪
- 文件校验MD5/SHA256
- 传输队列管理
### 阶段二平台适配层实现Platform Adaptation Phase
**目标**:实现各平台的显示捕获和渲染功能
#### 2.1 Android 平台实现
- [ ] **显示捕获**
- MediaProjection API 集成
- ImageReader 帧获取
- 屏幕分辨率检测
- 帧率控制
- [ ] **摄像头捕获**
- Camera2 API / NDK Camera API 集成
- 摄像头设备枚举
- 视频流捕获
- 摄像头参数控制(分辨率、帧率、对焦等)
- 多摄像头支持
- [ ] **输入处理**
- 触摸事件捕获
- 输入事件转发
- [ ] **网络层**
- Android USB RNDIS 支持
- Wi-Fi 网络管理
- 网络权限处理
#### 2.2 Windows 平台实现
- [ ] **虚拟显示器**
- IddCx 驱动框架集成
- 虚拟显示器创建
- 分辨率动态调整
- [ ] **摄像头捕获**
- DirectShow / Media Foundation 集成
- 摄像头设备枚举
- 视频流捕获
- 摄像头参数控制
- 多摄像头支持
- [ ] **渲染引擎**
- DirectX 渲染管道
- 视频帧解码与显示
- 性能优化
- [ ] **输入处理**
- 键盘事件捕获
- 鼠标事件捕获
- 输入事件转发
- [ ] **网络层**
- USB RNDIS 检测
- Wi-Fi 网络管理
- 以太网支持
### 阶段三角色层实现Role Implementation Phase
**目标**:实现 Host、Client、Peer 三种角色的完整功能
#### 3.1 主机角色Host Role
- [ ] 屏幕捕获集成
- [ ] 视频编码流水线
- [ ] 数据发送逻辑
- [ ] 一对多广播支持
- [ ] 性能监控与自适应
#### 3.2 客户端角色Client Role
- [ ] 数据接收逻辑
- [ ] 视频解码流水线
- [ ] 渲染显示集成
- [ ] 输入事件处理
- [ ] 延迟优化
#### 3.3 对等角色Peer Role
- [ ] 同时运行 Host 和 Client 逻辑
- [ ] 双向数据流管理
- [ ] 资源竞争处理
- [ ] 性能平衡
### 阶段四集成与优化Integration & Optimization Phase
**目标**:整合各模块,优化性能,完善功能
#### 4.1 系统集成
- [ ] 端到端功能测试
- [ ] 多场景验证
- [ ] 错误处理与恢复
- [ ] 日志系统
#### 4.2 性能优化
- [ ] 延迟优化(目标 < 30ms
- [ ] 带宽优化
- [ ] CPU/GPU 使用优化
- [ ] 内存管理优化
#### 4.3 稳定性提升
- [ ] 异常处理
- [ ] 网络断线重连
- [ ] 资源清理
- [ ] 压力测试
### 阶段五测试与文档Testing & Documentation Phase
**目标**:完善测试覆盖,编写完整文档
#### 5.1 测试
- [ ] 单元测试覆盖
- [ ] 集成测试
- [ ] 跨平台兼容性测试
- [ ] 性能基准测试
#### 5.2 文档
- [ ] API 文档
- [ ] 架构设计文档
- [ ] 用户使用指南
- [ ] 开发者指南
- [ ] 部署文档
## 2. 技术选型
### 2.1 核心依赖
- **序列化**Google FlatBuffers
- **编解码**
- H.264MediaCodec (Android) / Media Foundation (Windows)
- VP8libvpx
- MJPEG自定义实现
- **网络**:原生 Socket API + 平台特定网络库
- **NAT 穿透**
- STUN/TURN 客户端(自实现或使用 libnice/libjuice
- ICE 协议实现
- **构建系统**CMake 3.15+
### 2.2 平台特定依赖
- **Android**
- NDK r21+
- MediaProjection API
- Camera2 API / NDK Camera API
- USB Host API
- **Windows**
- Windows SDK 10.0.19041.0+
- DirectX 11/12
- IddCx 1.4+
- DirectShow / Media Foundation摄像头
## 3. 开发优先级
### P0核心功能必须实现
1. 核心网络抽象层
2. 基础协议定义
3. Android Host 角色
4. Windows Client 角色
5. USB RNDIS 连接支持
### P1重要功能优先实现
1. 会话管理
2. 编解码器集成
3. 输入事件处理
4. Wi-Fi 连接支持
5. 性能优化
### P2增强功能后续实现
1. Peer 角色支持
2. 一对多广播
3. 多种编解码器
4. 以太网支持
5. 高级性能调优
### P3扩展功能可选实现
1. **文件传输功能**
- 基础文件传输
- 断点续传
- 多文件并发传输
- 传输进度和校验
2. **远程摄像头功能**
- 摄像头设备枚举
- 视频流捕获和传输
- 摄像头参数控制
- 多摄像头切换
3. **NAT 穿透功能TURN/STUN**
- STUN 客户端实现
- TURN 客户端实现
- ICE 协议集成
- 互联网连接支持
- 自动路径选择
## 4. 里程碑
### Milestone 1: 核心架构完成4周
- CMake 构建系统就绪
- 核心库基础模块框架完成
- 网络抽象层可用
- 协议定义完成
### Milestone 2: Android Host 可用6周
- Android 平台适配层完成
- 屏幕捕获功能实现
- 基础编码与发送功能
- 可通过 USB RNDIS 发送视频流
### Milestone 3: Windows Client 可用8周
- Windows 平台适配层完成
- 虚拟显示器创建
- 基础解码与渲染功能
- 可接收并显示视频流
### Milestone 4: 端到端可用10周
- Host-Client 完整流程打通
- 输入事件双向传输
- 基础性能达标(延迟 < 50ms
- 稳定性基本保证
### Milestone 5: 生产就绪12周+
- 所有核心功能完成
- 性能优化达标(延迟 < 30ms
- 测试覆盖充分
- 文档完整
### Milestone 6: 扩展功能16周+
- 文件传输功能完成
- 远程摄像头功能完成
- 扩展功能测试和优化
- 用户体验优化
## 5. 风险与应对
### 技术风险
1. **跨平台兼容性**
- 风险:不同平台 API 差异大
- 应对:充分抽象,建立完善的适配层
2. **性能瓶颈**
- 风险:延迟或帧率不达标
- 应对:早期性能测试,持续优化
3. **网络稳定性**
- 风险:不同网络环境下的连接问题
- 应对:完善的错误处理和重连机制
### 开发风险
1. **依赖管理**
- 风险:第三方库版本冲突
- 应对:使用 vcpkg/Conan 等包管理器
2. **测试环境**
- 风险:跨平台测试设备不足
- 应对:建立 CI/CD自动化测试
## 6. 下一步行动
1. **立即开始**
- 搭建项目目录结构
- 配置 CMake 构建系统
- 设置基础依赖FlatBuffers
2. **第一周目标**
- 完成项目结构搭建
- CMake 可在 Windows 和 Android 上编译通过
- 创建核心库基础框架
- 定义 FlatBuffers Schema
3. **第一个月目标**
- 网络抽象层实现
- 基础协议完成
- Android 平台适配层框架
- 简单的端到端测试