Files
ArtPlayer/refactor/changes/2026-09-13-PKG-AUTO-THUMB-03-frame-presentation.md
T

48 lines
3.8 KiB
Markdown
Raw 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.
# PKG-AUTO-THUMB-03 原生帧就绪检查点(doing)
新增frames.js,集中拥有每次抽帧的数据等待、seek、原生帧回调和30秒deadline。
同时支持requestVideoFrameCallback及cancelVideoFrameCallback时,等待loadeddata后
注册回调再seek,必须seek完成且帧已呈现才draw。无该能力时仍用已记录的seek路径,
不以UA字符串选择浏览器。每次重试递增回调身份,阻止被取消的旧回调完成当前帧;
每个job只注册一个统一清理函数,避免逐帧累计清理闭包。
销毁、切源、正常完成及失败均释放timer、帧回调、data/seek处理器。句柄0有效;
同步注册/销毁交错产生的迟到句柄也回收。清理一个资源抛错仍继续其他清理,失败保留
之前的可用预览。等待超时使用既有console.warn通道;未新增公开参数、结果或依赖,
不改变注册Promise和目标时间公式。30秒是每次数据/seek/帧等待上限,尚不是全部网络、
编码、后台标签和整体内存预算;不声称已完成这些边界。
新增19项回归,纳入test:unit及test:auto-thumbnail。此前a128706f检查点19项为
2通过/17失败;两项保留原兼容行为,其余覆盖就绪、两种事件顺序、超时、取消、重试、
重复/迟到回调、同步重入、清理异常及旧预览保留。加上原33项生命周期共52项。
提交前追加审查抓到readyState getter触发销毁后仍可能装回loadeddata处理器;新测试
在修复前19项18通过/1失败,修复为读完就绪状态后再核对任务身份。此前1817项CI和84项
原生结果保留为中间证据,最终证据使用frames-final文件,重新构建后核对全部候选。
真实像素验收增强为:有原生帧回调时必须五格全部正确,包括单独紫色首帧、第二格红色、
合法黑色、蓝色和黄色,同时核对实际呈现时间。空间样本防止1px平均色伪修复。新增原生
回调被挂起期间destroy/restart测试,之后重复交付也不生成URL/写入/恢复decoder。
无原生回调的浏览器相应场景使用原生Blob挂起,报告明确标出能力和路径。
Chromium/Firefox此前的早期像素问题进入候选验证;Windows WebKit26.6没有该帧回调,
前两格继续诊断而不验收,仅第2-4格沿用已有像素断言。未将实验或局部通过扩成全浏览器
正确,也未关闭AUTO-THUMB-PIXEL-01、标记03完成。物理Safari及核心组合仍属后续验收。
正常构建再生三份dist及docs副本,架构地图和任务/风险证据同步。TS仍留在04。
见[验证](../baselines/auto-thumbnail-frame-presentation.json)。
最终源码/main/legacy各52项单元通过;原生源码两轮42项及main/legacy各21项,共84项
通过,0重试/跳过/未处理页面错误。完整CI1818项(1572单元+14工程+232基线)、339生产TS
及4种实际bundle入口通过;产物与docs副本字节相等。旧产物新浏览器断言2通过/4失败,
包括缺少原生呈现证据和Firefox早期错误像素;不得称为所有旧浏览器都出现同一故障。
独立密集采样实验在Chromium/Firefox对0/.005/.01/.02/.03/.04秒均收到帧回调,前五个
目标保留紫色首帧,.04秒为红色,未出现同一帧重复采样导致等待卡死。该实验不是完整
默认100格候选验收。WebKit另测createImageBitmap(video)仍有首帧偏移,VideoFrame
不可用;保留原始结果,不据此豁免像素风险。
去B帧的独立媒体对照中,Chromium仍读到紫色首帧,而Windows WebKit隐藏元素0秒
仍为空、.01秒已变红,普通元素的一轮seek还超时;不能把问题简单归因于B帧,也不能
统一偏移.04秒。该诊断保留输入指纹和生成命令,未修改生产回退算法或声明能力豁免。