Files
DisplayFlow/DEVELOPMENT_PLAN.md
2025-12-11 22:58:25 +08:00

322 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 平台适配层框架
- 简单的端到端测试