mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 10:56:15 -08:00
test(mediabunny): [PKG-MB-09] preserve long-run AV tolerance breach
This commit is contained in:
1 parent
58a648fd05
commit
78e3107b68
7 files changed
+332
-3
No files matched your search
@@ -0,0 +1,270 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "PKG-MB-09",
|
||||
"risk": "MB-SYNC-01",
|
||||
"status": "running-threshold-breach",
|
||||
"terminalResultObserved": false,
|
||||
"thresholdSeconds": 0.25,
|
||||
"sourceSnapshot": {
|
||||
"path": "refactor/.cache/mb09-hour-first-av-breach.json",
|
||||
"sha256": "045ef64a10a183afd1910e297b1486942043c944cc157ba16b39db9fdc78ec1a"
|
||||
},
|
||||
"capturedAt": "2026-09-16T03:51:20.798Z",
|
||||
"scope": "Existing per-five-second samples, not a root-cause conclusion or terminal result",
|
||||
"cases": [
|
||||
{
|
||||
"case": "mediabunny-MediaBunny-sust-71bde-layback-with-published-core-chromium",
|
||||
"firstBreachIndex": 352,
|
||||
"totalSamples": 385,
|
||||
"aroundBreach": [
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1751710,
|
||||
"time": 1751.9706666666666,
|
||||
"rate": 1,
|
||||
"active": 51,
|
||||
"queued": 51,
|
||||
"iterators": 2,
|
||||
"draws": 42023,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.02500000000009095
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1756731.2999999523,
|
||||
"time": 1756.9893333333332,
|
||||
"rate": 1,
|
||||
"active": 56,
|
||||
"queued": 56,
|
||||
"iterators": 2,
|
||||
"draws": 42144,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.02500000000009095
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1762024.2999999523,
|
||||
"time": 1762.28,
|
||||
"rate": 1,
|
||||
"active": 37,
|
||||
"queued": 37,
|
||||
"iterators": 2,
|
||||
"draws": 42270,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.2293333333332157
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1767445.5,
|
||||
"time": 1767.7013333333332,
|
||||
"rate": 1,
|
||||
"active": 49,
|
||||
"queued": 49,
|
||||
"iterators": 2,
|
||||
"draws": 42401,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5489999999997508
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1772834.6999999285,
|
||||
"time": 1773.0906666666665,
|
||||
"rate": 1,
|
||||
"active": 53,
|
||||
"queued": 53,
|
||||
"iterators": 2,
|
||||
"draws": 42531,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5489999999997508
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1778402.7999999523,
|
||||
"time": 1778.6613333333332,
|
||||
"rate": 1,
|
||||
"active": 48,
|
||||
"queued": 48,
|
||||
"iterators": 2,
|
||||
"draws": 42664,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5489999999997508
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1783602.1999999285,
|
||||
"time": 1783.8613333333333,
|
||||
"rate": 1,
|
||||
"active": 60,
|
||||
"queued": 60,
|
||||
"iterators": 2,
|
||||
"draws": 42789,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5489999999997508
|
||||
}
|
||||
],
|
||||
"latest": {
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1929476.7999999523,
|
||||
"time": 1929.7306666666666,
|
||||
"rate": 1,
|
||||
"active": 54,
|
||||
"queued": 54,
|
||||
"iterators": 2,
|
||||
"draws": 46290,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5489999999997508
|
||||
}
|
||||
},
|
||||
{
|
||||
"case": "mediabunny-MediaBunny-sust-828df-layback-with-candidate-core-chromium",
|
||||
"firstBreachIndex": 352,
|
||||
"totalSamples": 385,
|
||||
"aroundBreach": [
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1751722.7999999523,
|
||||
"time": 1751.9813333333332,
|
||||
"rate": 1,
|
||||
"active": 50,
|
||||
"queued": 50,
|
||||
"iterators": 2,
|
||||
"draws": 42024,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.02500000000000213
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1756745.3999999762,
|
||||
"time": 1757,
|
||||
"rate": 1,
|
||||
"active": 55,
|
||||
"queued": 55,
|
||||
"iterators": 2,
|
||||
"draws": 42144,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.02500000000000213
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1761913.6999999285,
|
||||
"time": 1762.1706666666666,
|
||||
"rate": 1,
|
||||
"active": 53,
|
||||
"queued": 53,
|
||||
"iterators": 2,
|
||||
"draws": 42268,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.15599999999994907
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1767215,
|
||||
"time": 1767.4693333333332,
|
||||
"rate": 1,
|
||||
"active": 60,
|
||||
"queued": 60,
|
||||
"iterators": 2,
|
||||
"draws": 42395,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5699999999999363
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1772244.5,
|
||||
"time": 1772.5013333333334,
|
||||
"rate": 1,
|
||||
"active": 48,
|
||||
"queued": 48,
|
||||
"iterators": 2,
|
||||
"draws": 42515,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5699999999999363
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1777372.5999999046,
|
||||
"time": 1777.6293333333333,
|
||||
"rate": 1,
|
||||
"active": 48,
|
||||
"queued": 48,
|
||||
"iterators": 2,
|
||||
"draws": 42639,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5699999999999363
|
||||
},
|
||||
{
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1782881.0999999046,
|
||||
"time": 1783.1413333333333,
|
||||
"rate": 1,
|
||||
"active": 62,
|
||||
"queued": 62,
|
||||
"iterators": 2,
|
||||
"draws": 42771,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5699999999999363
|
||||
}
|
||||
],
|
||||
"latest": {
|
||||
"kind": "sample",
|
||||
"phase": "continuous-1x",
|
||||
"wall": 1928707.2999999523,
|
||||
"time": 1928.96,
|
||||
"rate": 1,
|
||||
"active": 58,
|
||||
"queued": 58,
|
||||
"iterators": 2,
|
||||
"draws": 46271,
|
||||
"visibility": "visible",
|
||||
"paused": false,
|
||||
"error": null,
|
||||
"maxAVError": 0.5699999999999363
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
# PKG-MB-09:长测中的 AV 阈值越界
|
||||
|
||||
这是一份运行中检查点,不是终结报告。长测进程继续运行,被测源码、产物、素材和
|
||||
原有阈值没有修改,也没有重启用例或将结果标为通过。
|
||||
|
||||
## 已观察到的事实
|
||||
|
||||
首批两个 Chromium 场景都使用已安装的 MediaBunny 2.0.0,分别搭配发布核心和候选核心。
|
||||
约第 1762 秒,累计最大解码帧时间戳/AudioContext 主时钟偏差从约 25ms 增至
|
||||
229ms / 156ms;约第 1767 秒,两组分别升至约 549ms / 570ms,超过原有 250ms 门槛。
|
||||
对应采样仍为 visible、1×、未暂停、无媒体错误;媒体时钟和绘制计数继续增加,活动
|
||||
音频节点和迭代器未突破原上限。参见[固定采样快照](../baselines/mb-hour-av-breach.json)。
|
||||
|
||||
两组几乎同时发生越界,但都使用同一候选 proxy;这不能证明历史 proxy 也失败,
|
||||
不能归因于特定核心,也不能仅据同时出现就认定是系统调度问题。
|
||||
观察后的 CPU/内存读数不是事发时剖析,不用它推导根因。
|
||||
|
||||
## 源码核对及后续
|
||||
|
||||
当前默认 `dropLateFrames` 为 false;`video-frames.ts` 的默认策略允许读取并绘制
|
||||
落后帧,开启丢帧才会按容差跳过。`video-renderer.ts` 的已排队帧绘制还需结合实际
|
||||
调度进一步诊断。这是现有源码事实,不足以证明本次偏差的具体来源。
|
||||
测试统计的是每次 drawImage 的帧时间戳/音频时钟差,不是声音输出测量或用户可见
|
||||
帧呈现的独立测量;短暂追赶、持续漂移与宿主阻塞需要分别验证。
|
||||
|
||||
登记 MB-SYNC-01,保持 PKG-MB-09 doing。等待当前运行产生阶段统计、清理结果和
|
||||
最终报告后,再设计有限的调度/帧追赶对照,复现后修复项目缺陷并回归。
|
||||
不得直接更改公开默认丢帧行为、扩大 250ms 门槛、缩短长测,或重跑直到通过。
|
||||
当前已足以拒绝将这两个场景称为长播放通过,但最终进程退出状态仍需实际观察。
|
||||
|
||||
本检查点只改证据、风险和文档;计划/风险校验及风险校验器测试完成后单独提交。
|
||||
不开始正式复盘,不推送或发布。
|
||||
+1
-1
@@ -669,7 +669,7 @@
|
||||
- PKG-MB-06: [记录](baselines/mb-audio-source.json) [记录](changes/2026-09-12-PKG-MB-06-audio.md) [记录](baselines/mb-audio-validation.json)
|
||||
- PKG-MB-07: [记录](baselines/mb-hls-source.json) [记录](changes/2026-09-12-PKG-MB-07-hls.md) [记录](baselines/mb-hls-validation.json)
|
||||
- PKG-MB-08: [记录](baselines/mb-entry-source.json) [记录](changes/2026-09-12-PKG-MB-08-entry-checkpoint.md) [记录](baselines/mb-entry-checkpoint.json) [记录](baselines/mb-capability-source.json) [记录](changes/2026-09-12-PKG-MB-08-capability.md) [记录](baselines/mb-capability-validation.json)
|
||||
- PKG-MB-09: [记录](changes/2026-09-12-PKG-MB-09-native-pip-checkpoint.md) [记录](baselines/mb-native-pip-checkpoint.json) [记录](changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md) [记录](baselines/mb-sustained-validation.json) [记录](baselines/mb-sustained-media.json) [记录](changes/2026-09-16-PKG-MB-09-hour-soak.md) [记录](baselines/mb-hour-soak-start.json)
|
||||
- PKG-MB-09: [记录](changes/2026-09-12-PKG-MB-09-native-pip-checkpoint.md) [记录](baselines/mb-native-pip-checkpoint.json) [记录](changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md) [记录](baselines/mb-sustained-validation.json) [记录](baselines/mb-sustained-media.json) [记录](changes/2026-09-16-PKG-MB-09-hour-soak.md) [记录](baselines/mb-hour-soak-start.json) [记录](changes/2026-09-16-PKG-MB-09-av-breach.md) [记录](baselines/mb-hour-av-breach.json)
|
||||
- PKG-IFRAME-01: [记录](changes/2026-09-12-PKG-IFRAME-01-contract.md) [记录](baselines/iframe-release.json) [记录](baselines/iframe-contract.md) [记录](baselines/iframe-contract-validation.json)
|
||||
- PKG-IFRAME-02: [记录](changes/2026-09-12-PKG-IFRAME-02-behavior.md) [记录](baselines/iframe-behavior-validation.json)
|
||||
- PKG-IFRAME-03: [记录](changes/2026-09-12-PKG-IFRAME-03-requests-checkpoint.md) [记录](baselines/iframe-requests-checkpoint.json) [记录](changes/2026-09-12-PKG-IFRAME-03-boundaries-checkpoint.md) [记录](baselines/iframe-boundaries-checkpoint.json) [记录](iframe-message-boundary.md) [记录](changes/2026-09-13-PKG-IFRAME-03-navigation.md) [记录](baselines/iframe-navigation-validation.json) [记录](iframe-document-protocol.md)
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# 进度与证据
|
||||
|
||||
## PKG-MB-09 长测 AV 阈值越界(运行未终结)
|
||||
|
||||
首批两个Chromium组合约1767秒时累计最大帧/音频时钟差达到549ms/570ms,超过
|
||||
250ms门槛。仍visible、未暂停、无媒体错误,绘制/时钟继续推进;不能据此归因于核心
|
||||
或系统。新增MB-SYNC-01并保留[快照与诊断边界](changes/2026-09-16-PKG-MB-09-av-breach.md)。
|
||||
被测输入不变,原进程继续,等待阶段统计/清理和终结报告;不称为通过,不重启到绿。
|
||||
|
||||
## DOC-03 校正根 AI 接续指引
|
||||
|
||||
根AGENTS仍引用MediaBunny五个旧JS路径及过期源码风格,现已核对并改为实际TS入口,
|
||||
|
||||
@@ -291,3 +291,4 @@
|
||||
| SITE-EDITOR-VAST-01 | resolved / 已复现 | Monaco browser consumer still assumes the workspace VAST namespace after the approved npm-root restoration | SITE-EDITOR-VAST-01 |
|
||||
| CI-JASSUB-SOURCE-01 | resolved / 已复现 | Default native JASSUB source runs select only the published plugin and omit the current source | CI-JASSUB-SOURCE-01 |
|
||||
| DANMUKU-INSTALLED-GAP-01 | resolved / 已复现 | Windows WebKit installed Danmuku candidate misses two rows after a native main-thread gap | PKG-DANMUKU-08, PKG-DANMUKU-START-01 |
|
||||
| MB-SYNC-01 | open / 已复现 | Installed MediaBunny hour soak exceeds the original frame/audio-clock tolerance in both Chromium core combinations | PKG-MB-09 |
|
||||
+18
-1
@@ -2,7 +2,7 @@
|
||||
"schemaVersion": 1,
|
||||
"task": "BASE-07",
|
||||
"sourceCommit": "e01f39ff",
|
||||
"updatedAt": "2026-09-16T02:27:53.896Z",
|
||||
"updatedAt": "2026-09-16T03:53:29.998Z",
|
||||
"note": "Open means closure evidence is outstanding; source-observed and unverified are not reproduced runtime bugs. A source issue already mitigated in the workspace still requires candidate regression evidence. No accepted-with-scope item is implied by baseline task completion.",
|
||||
"items": [
|
||||
{
|
||||
@@ -6886,6 +6886,23 @@
|
||||
"refactor/baselines/danmuku-start-validation.json"
|
||||
],
|
||||
"resolutionRationale": "The first sampling anchor was created only inside RAF. Reproduced in controlled first-frame and time-zero tests plus real Chromium/WebKit start-listener CPU stalls. Private playback-start anchoring preserves public queries and invalidation. Final source/installed three-engine timing, both installed runtime formats, scheduler regression and actual model load pass."
|
||||
},
|
||||
{
|
||||
"id": "MB-SYNC-01",
|
||||
"title": "Installed MediaBunny hour soak exceeds the original frame/audio-clock tolerance in both Chromium core combinations",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"owners": [
|
||||
"PKG-MB-09"
|
||||
],
|
||||
"evidence": [
|
||||
"refactor/baselines/mb-hour-av-breach.json",
|
||||
"refactor/changes/2026-09-16-PKG-MB-09-av-breach.md",
|
||||
"test/soak/mediabunny.spec.js"
|
||||
],
|
||||
"compatibleResolution": "Keep the running test and original 250ms gate. Distinguish delayed presentation, catch-up draws, sustained clock drift and host scheduling using bounded controls after preserving the terminal result; fix a reproduced project defect without changing the public dropLateFrames default.",
|
||||
"closureCriteria": "Retain the first failing samples and terminal report; establish cause with appropriate historical/native controls, fix any confirmed project regression, and complete unchanged duration/cleanup requirements with a justified clock/presentation interpretation. A later passing run alone does not close this risk.",
|
||||
"workspaceState": "Running-at-capture, not a final report: around 1767 seconds both Chromium cases using the same candidate proxy reach approximately 549ms/570ms max delta; visibility, advancing media/draws, node bounds and lack of media errors remain intact. Core-specific, historical-proxy and OS-cause claims are unproven."
|
||||
}
|
||||
]
|
||||
}
|
||||
+3
-1
@@ -4024,7 +4024,9 @@
|
||||
"baselines/mb-sustained-validation.json",
|
||||
"baselines/mb-sustained-media.json",
|
||||
"changes/2026-09-16-PKG-MB-09-hour-soak.md",
|
||||
"baselines/mb-hour-soak-start.json"
|
||||
"baselines/mb-hour-soak-start.json",
|
||||
"changes/2026-09-16-PKG-MB-09-av-breach.md",
|
||||
"baselines/mb-hour-av-breach.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user