# 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.264:MediaCodec (Android) / Media Foundation (Windows) - VP8:libvpx - 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 平台适配层框架 - 简单的端到端测试