spec.md 2.9 KB

MODIFIED Requirements

Requirement: 频谱可视化组件

系统 SHALL 提供 SpectrumView ArkUI 自定义组件,使用 Canvas 实时渲染频谱动画。该组件 SHALL 接收频谱数据并根据当前选中的特效模式进行绘制,且 SHALL 支持可扩展的特效集合(不少于 4 种并可继续扩展)。

Scenario: 组件正常渲染

  • WHEN SpectrumView 组件挂载且音频正在播放
  • THEN 组件 SHALL 按目标刷新频率持续获取 PCM 数据,经 FFT 分析后通过 Canvas 绘制当前特效,默认目标刷新频率 SHALL 为 30fps

Scenario: 组件不可见时停止渲染

  • WHEN 用户滑动 Swiper 离开频谱页面(组件不可见)
  • THEN 组件 SHALL 停止定时器、停止获取 PCM 数据和 Canvas 绑帧渲染,释放 CPU 资源

Scenario: 音频暂停时冻结画面

  • WHEN 音频从播放切换到暂停状态
  • THEN 组件 SHALL 停止定时器,保留最后一帧的渲染画面不清除

Requirement: 特效切换交互

系统 SHALL 在频谱页面提供特效切换 UI,用户可在当前可用的全部频谱特效间自由切换,特效列表 SHALL 由系统配置驱动而非固定为四种。

Scenario: 点击切换特效

  • WHEN 用户点击频谱页面上的特效切换按钮
  • THEN 系统 SHALL 显示当前可用特效的名称和图标预览,用户选择后 SHALL 立即切换到对应特效

Scenario: 切换时平滑过渡

  • WHEN 用户切换特效模式
  • THEN 系统 SHALL 在单次渲染周期内完成切换并以新特效开始渲染,不得出现超过 1 帧的空白画面

Scenario: 记忆用户选择

  • WHEN 用户选择了某种特效后退出播放界面
  • THEN 下次进入频谱页面时 SHALL 默认使用上次选择的特效模式

Scenario: 历史特效配置兼容回退

  • WHEN 已保存的特效 ID 在当前版本中不可用
  • THEN 系统 SHALL 自动回退到默认可用特效并继续渲染,不得导致频谱页面崩溃或空白

ADDED Requirements

Requirement: 频谱效果性能边界

系统 SHALL 为每个频谱特效定义可执行的性能边界(包括最大刷新频率与最大绘制复杂度),并在运行时自动执行降级策略以保障播放稳定性。

Scenario: 正常负载按目标参数渲染

  • WHEN 当前设备负载处于可接受范围且帧耗时未超阈值
  • THEN 系统 SHALL 按该特效的目标刷新频率和默认绘制复杂度渲染

Scenario: 高负载触发自动降级

  • WHEN 连续多个渲染周期检测到帧耗时超过性能阈值
  • THEN 系统 SHALL 自动降低刷新频率或简化绘制复杂度,直到帧耗时恢复到阈值以内

Scenario: 低负载恢复默认质量

  • WHEN 帧耗时持续回落到恢复阈值以内
  • THEN 系统 SHALL 在不引入明显抖动的前提下逐步恢复该特效的默认渲染参数