diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 1ce378d45..80ca8ff05 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -140,7 +140,7 @@ jobs: # These extra installed packages are required by the browser helpers. # Other ecosystem installation/SDK gates remain tracked by CI-01. run: | - yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles 2>&1 | tee refactor/.cache/ci/browser-packages.log + yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles,artplayer-plugin-hls-control,artplayer-plugin-dash-control,artplayer-plugin-auto-thumbnail 2>&1 | tee refactor/.cache/ci/browser-packages.log node --input-type=module -e 'import fs from "node:fs"; const { output } = JSON.parse(fs.readFileSync("refactor/.cache/packages/latest.json")); fs.appendFileSync(process.env.GITHUB_ENV, `ARTPLAYER_BROWSER_ARTIFACTS=${output}/browser-artifacts.json\n`);' - name: Run all source browser checks if: ${{ !cancelled() }} diff --git a/packages/artplayer-plugin-auto-thumbnail/ARCHITECTURE.md b/packages/artplayer-plugin-auto-thumbnail/ARCHITECTURE.md index 1b24b7d63..20a65aab3 100644 --- a/packages/artplayer-plugin-auto-thumbnail/ARCHITECTURE.md +++ b/packages/artplayer-plugin-auto-thumbnail/ARCHITECTURE.md @@ -227,3 +227,15 @@ The internal type checkpoint and its core-host assignment fixture are recorded i `refactor/changes/2026-09-13-PKG-AUTO-THUMB-03-internal-types.md`. A core host can hold partial user thumbnail options; extraction publishes a complete sheet. Do not require the host's existing getter to have every generated-sheet field. + +## Shared installed browser scope + +autoThumbnailCandidate reads verified installed bytes through browser-candidate.js. Native video/JPEG lifecycle and pixel files retain their stub player host and exact presentation-callback/fallback limits. The historical file still loads its frozen old artifacts. Installed mode rejects frozen-workspace and explicit-artifact overrides. These are native extraction checks, not full core integration or first-frame acceptance on every engine. + +Use the exact twelve-package preparation command and scope rules in +../../scripts/browser-validation/README.md. Missing, stale or changed installation +inputs fail without source fallback. Attachments distinguish selected installed, +source and published inputs. Source mode retains existing explicit artifact use. +The generic Node/type consumer remains core/chapter-only. Module forms, physical +devices, editor demos and release readiness retain their separate package gates. +See ../../refactor/changes/2026-09-15-CI-01-adaptive-installed.md for actual results. diff --git a/packages/artplayer-plugin-dash-control/ARCHITECTURE.md b/packages/artplayer-plugin-dash-control/ARCHITECTURE.md index b7ff7764d..b8fc406f4 100644 --- a/packages/artplayer-plugin-dash-control/ARCHITECTURE.md +++ b/packages/artplayer-plugin-dash-control/ARCHITECTURE.md @@ -213,3 +213,15 @@ controls and strict candidate recovery with new/old core versions. Node tests cover invalid measurements, missing capabilities, SDK replacement, teardown, reentrancy, identity changes and error recovery. Standalone old SDK/old-plugin limitations, physical devices and full release acceptance remain separately tracked. + +## Shared installed browser scope + +dash-control.spec.js exercises native MP4 and real core DOM with controlled SDK methods. dash-sdk.spec.js loads the actual frozen dash.js 4.5.2/5.2.1 SDKs and MPD fixtures. Its SDK capability attachment does not claim a plugin was loaded; dash-plugin-inputs records the selected plugin only in integration cases. Installed mode rejects diagnostic SDK substitutions and synthetic recovery probes. + +Use the exact twelve-package preparation command and scope rules in +../../scripts/browser-validation/README.md. Missing, stale or changed installation +inputs fail without source fallback. Attachments distinguish selected installed, +source and published inputs. Source mode retains existing explicit artifact use. +The generic Node/type consumer remains core/chapter-only. Module forms, physical +devices, editor demos and release readiness retain their separate package gates. +See ../../refactor/changes/2026-09-15-CI-01-adaptive-installed.md for actual results. diff --git a/packages/artplayer-plugin-hls-control/ARCHITECTURE.md b/packages/artplayer-plugin-hls-control/ARCHITECTURE.md index a46eb5bed..16d1a99a4 100644 --- a/packages/artplayer-plugin-hls-control/ARCHITECTURE.md +++ b/packages/artplayer-plugin-hls-control/ARCHITECTURE.md @@ -142,3 +142,15 @@ extends the repository root and must not ship to consumers. PKG-HLS-PACK-01 compares real Yarn archives before/after the exclusion: all distribution and declaration bytes must remain identical, with every historical entry retained. See ../../refactor/changes/2026-09-15-PKG-HLS-PACK-01-config.md. + +## Shared installed browser scope + +hls-control.spec.js uses a frozen SDK without workers; hls-sdk.spec.js uses the frozen SDK version matrix and real workers. Both select verified installed plugin bytes and retain published plugin controls. + +Use the exact twelve-package preparation command and scope rules in +../../scripts/browser-validation/README.md. Missing, stale or changed installation +inputs fail without source fallback. Attachments distinguish selected installed, +source and published inputs. Source mode retains existing explicit artifact use. +The generic Node/type consumer remains core/chapter-only. Module forms, physical +devices, editor demos and release readiness retain their separate package gates. +See ../../refactor/changes/2026-09-15-CI-01-adaptive-installed.md for actual results. diff --git a/refactor/baselines/ci-adaptive-installed-validation.json b/refactor/baselines/ci-adaptive-installed-validation.json new file mode 100644 index 000000000..003da8ec1 --- /dev/null +++ b/refactor/baselines/ci-adaptive-installed-validation.json @@ -0,0 +1,10275 @@ +{ + "task": "CI-01", + "status": "doing", + "capturedAt": "2026-09-14T18:32:21.350Z", + "sourceHead": "7094cf6f9cce7a586accd0d0142729227e7a2f33", + "environment": { + "node": "24.21.0", + "yarn": "1.22.22", + "platform": "win32", + "engines": { + "chromium": "153.0.8010.12", + "firefox": "155.0", + "webkit": "26.6" + }, + "remoteCI": false, + "physicalDevices": false + }, + "collection": { + "files": 32, + "tests": 1137, + "executedAll": false + }, + "failureTraces": [ + { + "path": "refactor/.cache/ci01-adaptive-installed-report/results/dash-sdk-dash-js-4-5-2-nat-cf307-used-seek-without-ArtPlayer-chromium/trace.zip", + "sha256": "e96eb2855880b46a47b8dcd552952a3aa211c68c13c076e8f7a19ee9727aebd5" + }, + { + "path": "refactor/.cache/ci01-adaptive-installed-report/results/dash-sdk-dash-js-4-5-2-nat-cf307-used-seek-without-ArtPlayer-firefox/trace.zip", + "sha256": "68b83e4dd06ed6859b434211d25c95dc2e392266e11c28f49fe8b7e19a01d0cc" + } + ], + "packageReport": { + "path": "refactor/.cache/packages/run-UmEnUj/report.json", + "sha256": "5eaade3103607f9d4bb9cee35b59edbf83da7fa33357d45e936b35f2f9d17dfe" + }, + "inputs": [ + { + "name": "artplayer", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer\\dist\\artplayer.js", + "member": "package/dist/artplayer.js", + "sha256": "9148a369636f814b03e6a1ed2a7db222a31b159f93e8a94d52c5a9dde2dfe6a6", + "archiveSha256": "03a5b23aa0c852ce66358c960f3db376b340ca1d5d7427022cbca9fb824eb1bd", + "sourceHashes": { + "src/accessibility/button.ts": "e5afa7aade56116082f54678c44961157950fa550d66e21a4e1ff9bb5369a6f8", + "src/accessibility/focus.ts": "2fa16941ac3632cb1e4b466e9a7e29700ef97b7eb2facd4330c59ec0a9320594", + "src/accessibility/keyboard.ts": "2d82122732f84f39e59c6852ca081614caa6430a82b32c4749e297826c77eb12", + "src/accessibility/moved-focus.ts": "c3d2a7d496381b2a86819b82fbd26cc940a1204fdf19408ccc8db267741d96c9", + "src/accessibility/overlay-focus.ts": "93fa088daaa3afed88f645507828a10cb63292937c49b16f6c2a0ea895897878", + "src/accessibility/player-focus.ts": "e8fd5222cbfc38cd4938324c83d9f5cef3d01a439464e1570d63a5131c84f20a", + "src/accessibility/slider.ts": "cfc9237d8db8fe7db3c4a0201ae83f0c4027603e647636545ba7b7e891fef5dd", + "src/accessibility/suspend-focus.ts": "d95c6097236be66e252165287435cca01b50553d64259add6b011721e4bbc644", + "src/bootstrap/browser.ts": "8d401627e8ea1c87fb44204227b04177a70cc7a0f79f95fb5dc73fe828e46a8c", + "src/capture/frame.ts": "eb25d81ec2d40a239103c63cfd80333705251291f2c2da77c740b4d413ea9cd9", + "src/component/dom.ts": "740f63e6e5942c444b9f05605880f8d56a77b066dbe5c4791da74f78cb96c668", + "src/component/focus.ts": "f4aff802711f6146c80e8c6bd90bc2cb406ccbdb581aef41f436ff5c03871ad3", + "src/component/resources.ts": "ff158ef0db8ba13343ff6ba329713820cfe2f5c2c446a7873a6cfff782855edf", + "src/component/selection.ts": "1f0bd089415da28db862647ffd1a0b4af752576465fb616d4b97ae4f8dcae3a7", + "src/component/types.ts": "d7b0e7008b0f6c82e3e97ac43e0188598dca4f740a860e7a60b3b38a46f4565d", + "src/config/index.ts": "a56b4d3d6942cfa3e2b47f909fc5ad87e6e3202fd61b29c7afd7649049e31d05", + "src/contextmenu/aspectRatio.ts": "18ab60c9acee1e0cecd76c0b6cf750763eed7cfbede4220328b5200154c5c478", + "src/contextmenu/choices.ts": "6bb880b27afc9457442c3973992da6dc8da48fc61d6b66b3b5a3bb4fc4651dc8", + "src/contextmenu/close.ts": "84b7a96df910e6f38140df8b1e73519d209a7331e9be9f42d076ae791757024f", + "src/contextmenu/flip.ts": "a7a4ac375da45dc7b6c996d4534098838646a078abfc4438f688e91e14ef0b38", + "src/contextmenu/index.ts": "7532165d162fa463f1fe3c538d6bda0f579b5907b05137382efeb0018719b011", + "src/contextmenu/info.ts": "f37cf0104510c13a130d2f55114c8f7ff15cc1b51863f97e60825442bdb2bf01", + "src/contextmenu/keyboard.ts": "eaa1af6b1abf8947d957208a0535f1b34f6c88e95394efd56cae905ccdea564c", + "src/contextmenu/playbackRate.ts": "7e06bb6fab3acdd71fb3ed63f77083172af517b49c1ecaefa3ee6a9068bdfe54", + "src/contextmenu/position.ts": "851ed1a884a13fbe430be77e7f72ae46d8a719175647e058644834aabd27ac58", + "src/contextmenu/types.ts": "a93fc90f4e17b731e8f6b486a507117810b61c1f1b0d9e775eba27dabeaeee1d", + "src/contextmenu/version.ts": "0553a716be0ba49f614059c41eef6dc694a9641fca79e6448b1b30382c6b582b", + "src/control/airplay.ts": "539bcc3671c7fe428ab95f9fea8a4943444066bcb742c7cf71591ba347642547", + "src/control/builtins.ts": "2a0e12a9741713c92938e1d2009149bbbde498284aa85c63f270d02b27dc22b1", + "src/control/fullscreen.ts": "7f8a9e8915abf9cbb9dda05b5c68523a47cc0ccf9ef5e0d9b82bc5c362fe346d", + "src/control/fullscreenWeb.ts": "9cb30987a3d2cbb334a80d3f2c41f39fd339bf37a9524c7ed0145cf5c98f1859", + "src/control/index.ts": "0d8e5a281f2eeba06c4cc4ac5a042847df53db1a19fdf140efea17d6ab2c0b78", + "src/control/layout.ts": "72e0b95bc632561e97569d789b76d16f36edd94eac8c62ba9e1918c9a222d328", + "src/control/pip.ts": "b829a7c83c5efa6751c2e434345e077339c9f5bc5022af9973f181ca8ce7f7ce", + "src/control/playAndPause.ts": "20ed88bcc7ac7622e02a7c4e6be518582c05f0d7c571a97a54b851d79dcf13c5", + "src/control/progress/interactions.ts": "da03600375451ecf8c152be5afcc5f1a4f8b759e837bbd54b7faaf8f8b228497", + "src/control/progress/keyboard.ts": "03d1d47e6641ea08f765d731f10a6aad35f7c3edc16aa97df822c5f9a7f75eb0", + "src/control/progress/position.ts": "a3794ab5ac5dafa5fd61e56acb12c94998bd4b9065dbf0fa4739c6bba1094aa1", + "src/control/progress/view.ts": "60ee16d5170be81b8132bb56dd0bc0eaf23e50f5c268d0697c9187b38a14aba9", + "src/control/progress.ts": "629c622864619e2515b2eacb1bdfcf523ccce7ce680c8fdf51812e8e50a0cc7e", + "src/control/resources.ts": "16fd7c53ac8f47b333041c4f298313390dc102523d47767b8a16f39a2564ba74", + "src/control/screenshot.ts": "11a1e3da919e476e7882abc3f74aaa809c3e9fc1de4346ec808731f78b6f27e2", + "src/control/selector-keyboard.ts": "6a749f48b23cda62148298e648bb380a6067cc18c7be4258b9ec85c382a56165", + "src/control/selector.ts": "a6f0c564c674530da9a0e4ed8762c6dfb81fa89373d64313e1020550731441f6", + "src/control/setting.ts": "10ee1118858c41f2e97a6df70d6d5dc978757d0e5d79ec36c11e743e6df86726", + "src/control/time.ts": "fa572092e0848878689367fb536e9658d13888d0a0d476babc5acd165af0f8d3", + "src/control/types.ts": "454846310d4fc3a8576ba030c2e8428bb795cde7b89308d29943bb4d4bc2aaa4", + "src/control/volume.ts": "45474d8d7f43d59263aa42e774eaaafeb45530ec24b81a5f589f6c906954568b", + "src/display/fullscreen-abandoned.ts": "1715b30d336976921b4957b444418702b7d93dbf1debce47429269638d15810f", + "src/display/fullscreen-adapter.ts": "71da10ec21c7706a8264badedac9022c74b865887931e9e369168fe3233c3b2f", + "src/display/fullscreen-request.ts": "c6292ded96aab0f2dbc978af251f6cd9f5fd074819529ca498077db8d14e1bfe", + "src/display/mini-drag.ts": "73d2f48f868c0ba4d8d5e5df40cbbdb4698c26540f3973b178d9cd374008f1cb", + "src/display/mini-focus.ts": "1f717619e183b1cfab668bd2e41c8e9ba02210c94cdb58034ec97aa41e71aa34", + "src/display/mini-layout.ts": "3835fe3d314da2fc624cbeb0e79fcdfa5393f08d87dfde730d2eac4e827f405b", + "src/display/mini-view.ts": "bbe69e4419ffc0f6c744cb730a51778f23c311a0fac157223bcf8d8bf0f3edc7", + "src/display/mini.ts": "a6fed598428bbf8d52931f21bb68b7560a3643d2576f7e7bfbae98b2f7cdd1e5", + "src/display/native-fullscreen.ts": "323401f2b3ea5186da981a1215b1b9e7dcf4ef4261a8e885fe8ff0c090de6a7a", + "src/display/native-pip.ts": "647879ae027cc0ebe684daa31d75511dd882e123e4ca8da2942e659bae3719f2", + "src/display/orientation-native.ts": "909980ba837471d9b456545a18fb0ab19f0990e8788936f0580a4b332cd4baee", + "src/display/orientation-types.ts": "0d68d2bc99d04db1e2fdf16b74e406e31f8b7e03fd9b6ea271773ed263ffa890", + "src/display/orientation-web.ts": "aea55c3b9e8c708fe5559f07cf8f0afd7ad37ac5b1a43bf519245c3072ec4129", + "src/display/placement.ts": "dbe4491ebd0f46b4efe13ac567e476fcd9ca5b84da675f19025935b5e3f8d733", + "src/display/sizing-types.ts": "da9b3d957dafaca9331f7319257dd8156b3c3e7b6db11f33f11ded48512450ad", + "src/display/sizing.ts": "c19856976320f1f35ff5a1049d19a940768300e095270b336dd12861b200da2a", + "src/display/types.ts": "e88c868fd370fcc9dc612489992d446a8d0558bd87c26c5c05fdd73d8a3d1b02", + "src/display/video-fullscreen-state.ts": "5fcb5e6b80ac45577664ef67e0460e0ceefd4022cafacdd7434c376a86d619be", + "src/display/video-fullscreen.ts": "b425bf0df462524b5d3accc9e3df383c6635676c152bf4bef09c477a90662728", + "src/display/web-fullscreen.ts": "13f901d20a31a7b8e4ebfbcceac5d3e0737df6335b71f0dfed638785bc413a5a", + "src/display/webkit-pip.ts": "3617927b4bb8fa46f651d0e584141f804ae438e2b4531cc2e9cf9f7eeb027550", + "src/dom/event-path.ts": "e952ea847a2e844a79c5c1b83035e03917e0294b80b1eb8af3b3bec0d2f7d333", + "src/dom/measure.ts": "84a599351d26a790c5a8f6e7d271486a0a68d5b58457d8ce754d540b54902b96", + "src/dom/presentation.ts": "500bded394579dd8194778f73cc44d0724f0a59cb5400957491928534ed091c6", + "src/dom/styles.ts": "734e0a4e04d666417a18ac09ed6271ee7630c399d52d7f510a1c19fd6e7b3493", + "src/dom/tree.ts": "3bc517ab9fa5317a1445156d53afb27182685eb3b4c0ac2ff41bbde55c9eecb6", + "src/events/clickInit.ts": "bd1ba29fe0af4332ceb19297797c4c942a3a74bfd901998d6b93293f1b309300", + "src/events/core-types.ts": "a607a3b2eea1b031f23ec0f620f1f4cd68799c4a77138a1443ecb196b00d1662", + "src/events/gestureInit.ts": "9e9d1ac0da7f87e89dd0d86fa2820b980e9cb810782d6ab30017de8686fc910b", + "src/events/global-types.ts": "3f4672d7af959cfa34ba39aa84ce614f422901437686bba98b14f578df40021c", + "src/events/globalInit.ts": "6f6ea497a20a8fd0746b1f020caff76ad6817cd70a1a90fbaea12f992b6d03a7", + "src/events/hoverInit.ts": "d1250e0dd35a8ba8067275986acbe6320c22adf1a977ec1009c0c012ed1563fe", + "src/events/index.ts": "30d2286316dbd351e93f5a2234dcca84bf68ca28c05921169cca70c2e0b1ecf9", + "src/events/listener-registry.ts": "fb062df5151c4e8e970de469f1c7d9af948f72214d32c293c81a5feeb8406124", + "src/events/moveInit.ts": "da97591723f8b94a34702559b7ee67a35f172aa696d37dfbecd472581ad3de35", + "src/events/resizeInit.ts": "719e27d11d2f93fcbe8368393c9190e251fc86dd0c3c2919f60e9b3b1edd0192", + "src/events/scheduling-types.ts": "0fd98e94397064f32cae4c004d9932c006d2db69a7d6d9374ff174d74ff93cd4", + "src/events/subscriptions.ts": "98573ed6cce73a73467c0e7fdb8ddc45e66b6bdf684c38886749453b2002a1d8", + "src/events/types.ts": "df03625039605314a96ef15b5e3777cbb9d444fd317e1a2fbeaaa0f1e83f6b0f", + "src/events/updateInit.ts": "6f174db14d20319f03a76e6ea267a3d71973faac44a92483badfa4420791817a", + "src/events/viewInit.ts": "d77b83eab802ff0046a4966e28b810a25592bcada49f526adae37556c1e4c3e9", + "src/events/viewport.ts": "6196fccb8b08ae22bde732c4389d9aceb5d727a63efd87b6d3914e338aadc46f", + "src/hotkey.ts": "d8e477bf451143e566e1f743a5f253dcf00beb23544709794779f275e11498e8", + "src/i18n/ar.ts": "897d8935384da16c3c4e96480777fe7fc022f6e3c0d87f62f79ae5f3c98e228c", + "src/i18n/cs.ts": "cc154ee50d258495d04dd2d49e89e9c0166e8b368969c443ec80cb5e48cf357c", + "src/i18n/es.ts": "0ed0283cb78847d6d1674be8c8ffa45feab88beaa8dbd11954b793c7b1657c75", + "src/i18n/fa.ts": "a72e83717f2e3e8f19f1de82516aef4a54ea70563223637bcbb25d21e9eac084", + "src/i18n/fr.ts": "a7366c75530e87f069216e20a6f09da42f7e77fdce862c02b32acf311068124b", + "src/i18n/id.ts": "146bf4c4e5bb39d8e1eb1a6fe3c639eb3128c55789de20511201f8ec02c56c0e", + "src/i18n/index.ts": "09c6f5bce58e4118dde10e8b2a2d3808785b7fde913a54dd189e0b473e21266a", + "src/i18n/pl.ts": "420f3b620d5c7ccdeba7857872be6176239fdf5da30b9cc72341e85dc95c2c8d", + "src/i18n/publish.ts": "5b216bbe313b3cda56a5da41fba4fb9d095eeec0dc903fcf284ddd8f94926e99", + "src/i18n/ru.ts": "9a9f61e6a66b3cd884c609250bf765dcdbc850dae3270d8a1600a5c2542436d3", + "src/i18n/tr.ts": "631c262a5e6cd00fada5bf2e146007d845816e47edb7643ec792250a403e4ec6", + "src/i18n/vi.ts": "e6f3f8e53599e27755e162c76c3b049457aae7089eca73ee531986e67f517f6f", + "src/i18n/zh-cn.ts": "51eb75562ae1ae4e248e1db85c90bcbc69b388a177ada6cbf8c3196a2c343ac6", + "src/i18n/zh-tw.ts": "6b098739e27ad531172d0f13e53849be30e9936365ce9613a7d938d9f01cce53", + "src/icons/airplay.svg": "20802c6735f2489bb6ce4221b519437095c54a3d2c4adbbab3319bb30536f285", + "src/icons/arrow-left.svg": "f1570036b739b0a67fab9261284aa3a13afe277e4c11aba7ab142503e7cce9ba", + "src/icons/arrow-right.svg": "6ffd8eb809152fe54b863bb890b9384d6f8788d129d604d70897fc9bb4398280", + "src/icons/aspect-ratio.svg": "987752a87701523057d8dfa7c45a6a139c4542b96fdcfaf8665722bbeb41f3b2", + "src/icons/check.svg": "7d06c8797e3a71fa7439eda4ea5ae62378e1a974907733e1cdf413db4af99b0c", + "src/icons/close.svg": "bb9e23e5305d11ec3d8f75a50ecdf3150deab8614c7df2af588873f2d78f06c2", + "src/icons/config.svg": "e1884d5411296b5cd1bfec7803b558b0afa5ab64478393977b07a662e2e0f15c", + "src/icons/defaults.ts": "31df862d754922fe5d68b20911c477d7c22893a6a67b5dcb1a48d3b437a0b23a", + "src/icons/error.svg": "d85a72e27ceaa38221637405cb0a5be270a297da58f1b0428498f568fab7570a", + "src/icons/fast-forward.svg": "629cb09ab7e2966c1fc2c04d9b0ee427b71b71abbc437b1db6635992cbe36d83", + "src/icons/flip.svg": "78044b69504710080044315a017f4836d56edce517c210ced3969756818f5b6a", + "src/icons/fullscreen-off.svg": "185b49ff4b0383974cb15a8fda1ba413dc99a133d4a02a4b72c75381d52515f4", + "src/icons/fullscreen-on.svg": "2d71a366b612e29cb2d9cb23c05a75389f794d90646d28bb8a2ac740861a5daa", + "src/icons/fullscreen-web-off.svg": "b4c81bbaa2ea91858b138083df0515c87f4ab8aa70df95ab9eb79e627ab47c7c", + "src/icons/fullscreen-web-on.svg": "4f0a8f688c44aab286bd2d12ab240ab33207664498d3f9fd0a752b53a3c1651f", + "src/icons/index.ts": "7152126328f6e485ee92b6d924c34776518b4a3925b2887867b516f7523b15cc", + "src/icons/loading.svg": "c0f4fd4e243012f1ab67429c99b41e7f8828c66b4ca228e3c6b2d1b6ca629e90", + "src/icons/lock.svg": "571221f734ec224e03f5023d136bca2186f58d768a6ea262881a4c6b49dc283a", + "src/icons/pause.svg": "9efe05ebf5610befddebcac51b3c9a491001189ff86204cb47928eb1617f6c7a", + "src/icons/pip.svg": "36a01d01d140fea05bd7c4eced17c29bc59f73990ed70807d8184ff09f57f50b", + "src/icons/play.svg": "c35562d20028d52ce329f35f90496a06d4dc5b6dc39df7ebcfb027f6f2393958", + "src/icons/playback-rate.svg": "872deecac0365ab04aeb5ccb1cdd9a0c88589a1442709fdac7c0ed12a241ff2b", + "src/icons/screenshot.svg": "49f7d90198fb0bcbc29848f40b0a8c042b78c07ecef1cfc5184e2e84a61b4bd4", + "src/icons/setting.svg": "7f6454d1c7f037d5a7144a898abedc89ca339534166d620dfa45efcd4c74ee3c", + "src/icons/state.svg": "63b56ffbfbba6e9ffe8fd050b3894c033cf30b166bcce9e717b42a9dc42d6424", + "src/icons/switch-off.svg": "aa4b81a9684e02323c32eb58e9a3e409a8f5abac4b8928b176092bf55baec4c0", + "src/icons/switch-on.svg": "1d87b42af5e7141f9defdc790567534288d84858d5068dd15093d5ef12f37f9c", + "src/icons/unlock.svg": "6dc8d6062af2f38efe12ddf4772e97d3f3114a28b885ee90067a4527e1ad6007", + "src/icons/volume-close.svg": "b9dbeaf9043c8014cd29d0e4a21a82ce567bc6b85497c310cca5f68bceeb31b2", + "src/icons/volume.svg": "baebc4ede3013202a4b13202a8d961cb0e5e065ee03733816022b2541d13884f", + "src/image/load.ts": "b4f1517243249d5fb017b89f993660e8b148906bbf28d08fe5c9f6d3a41e1e88", + "src/index.ts": "20cfe3738b3ce7e11b69721a5f0bdad9db77807417d8e421397a40dfade4c047", + "src/info/keyboard.ts": "13a6f617514388b4d14e0bf752780937f2baf545edb216b8259f56a198112c83", + "src/info/poll.ts": "d26ff67d9eadf1e032445371dde6f15293a7fc0b2ae6b87c3815e4b4e1ed5dda", + "src/info.ts": "6594ff3ee5643d63fec874631865d0e35b4ebdcf8aeafdd9fd3d9c595cfa3713", + "src/input/gesture-controller.ts": "1ebbd18184771a623b02ec19c363f84dcc72fdb7cd82bcf2adc97f4a138cb2b4", + "src/input/gesture-direction.ts": "65737f60e177338ebb3337a13ca75aeae77d77e94bc21495ddb829cc30de33a7", + "src/input/gesture-types.ts": "5ed25db69e0d9579a2fc0ab6faadf00fa073ad73a1ea5aa48096b4430c71141a", + "src/input/hotkey-defaults.ts": "c28e14821e5c7f7ac92a302e92439ab68fe77d5ef7d90a36b147b7c979ab96c6", + "src/input/hotkey-types.ts": "c7232470d725f3700481ab98bf9203403a67f1ab82e72394baa9c3ad6f3c9a4b", + "src/input/keyboard-focus.ts": "270c9dba40c0eb6d9fb36118b53e7f1d42a301ba4514917849523b6a05ed9e11", + "src/input/long-press.ts": "110cf16cf9dae845597377ebbc43249e103cbc0ece56f89e44ec6ecc7f3819b0", + "src/input/pointer-focus.ts": "802087098c786135eefa6727f13177ffe4a98e2abf48fad0e356b91e26960077", + "src/input/pointer-types.ts": "63e679498f8f42f6842f63e910c38717ac3438d58df3a75ef5b77c009b7931d4", + "src/layer.ts": "4014268eed043d5dd7b925cdeef6245e357cda67192a1301c5612ef98cdbec12", + "src/libs/screenfull.js": "2332b50c0c6364d5c99080be0f5739255e4b9e465d2cca40f761adce9a1908f8", + "src/lifecycle/instance.ts": "3168f7db4271bae7a242e80798546b755ac15443e15dd9ebb7675f5a259299d8", + "src/lifecycle/resources.ts": "b743daeffb676bb0b31932c3198fa9cf842f5e9015344659594ffffe1a56ba23", + "src/lifecycle/scope.ts": "e2188e8544b27cf8c7ac149e7146af628a2d6166c82b719a247adef5d85be5db", + "src/lifecycle/template-rollback.ts": "7a83da6739bcec1587b02f8157934988910d7f9103fe489a0d6f4f65290c3d77", + "src/loading.ts": "216fa5e2af5be5fcbf95a1578c869553a02f625683a98333d4a404f9a70df9f5", + "src/mask.ts": "500b8c2fb5ded63d5acab3c984fc9757f28a8b6cbd4d5beeac8c5a6d73ca63e4", + "src/media/events/forward.ts": "6b1b7e80036bfb523b51843dc6ec6d83c2b949cefb9cef085b2d679a444e46d8", + "src/media/events/listen.ts": "4eb7e943c1ebca77da8025d83b7d408276187cd02860b7793284344378bd0fe0", + "src/media/events/playback.ts": "2c68e4f6274a0dc65e56d42c928e500fc1d63bf3e03bbdd8a83c3f3ed7ae8ee4", + "src/media/events/readiness.ts": "3ba74f26dd9ff0729967097c2cb6f329a9cea57745bfe8173f9173e0d134476a", + "src/media/events/reconnect.ts": "876027b5116d0d3628755705682b30630f4b713199ed8015541932d81d2944be", + "src/media/events/types.ts": "02bd29ad8b158fa04ce5c1524e397260ef24b94c2cf1f053e7bd02b23e5d29dd", + "src/media/hosts.ts": "498d1cde31bf9ee12af1f13523eb0a4553adb285264529378abba5b629829e9a", + "src/media/playback.ts": "b0364027e1ea26e44e435a938e93c022836885c2622cda6bc3a7ca791d3c2964", + "src/media/position-revision.ts": "ba074cce7e7c6bda84aa234de8eb315e5ca482aa9b06250896f9ac6251192851", + "src/media/types.ts": "96d4a7f066cbb6fb9138165dd736b4ca500cb19c827bd7702134d61c44cc0e87", + "src/notice.ts": "4faa700323a8fdfd91a59491a5f57da2dee9bd1f2de0d900ed16e9809a208c94", + "src/option/defaults.ts": "0bfdc329c48716ac5987c8979fee7e116f6894a70fefc908c99876dfbb4d9dc0", + "src/option/resolve.ts": "27bb1b81a9288062969abb561cec9c88c4b9acb715023e4f22f299f3d5f4bf65", + "src/option/runtime.ts": "4caa060f67c6a57db4a7cc93598e8768794f727b303a5cfa4aeb2ebc247e52d9", + "src/option/types.ts": "224e32ce13cfc9d41ad9f2f3427f97d10bcaaec7e88e30503d618a3d06ae381e", + "src/player/airplayMix.ts": "bfa30e1dcd7cbaef97e977344e8a35524fad6bd23089cd8e45945e3b32b4bf04", + "src/player/aspectRatioMix.ts": "9e5e7365d469aeaef65a6010cb92734702191f9086b2f21d98c9f0ad7f356898", + "src/player/attrMix.ts": "d82150611a69423ed46bf673f44c3e0f61e80425026effd486a6951b6c0dd90c", + "src/player/autoHeightMix.ts": "5848e34cd826f5d4cc81d076c83fb3bcea0aed1228cd93a1edb6b8ca402ad175", + "src/player/autoSizeMix.ts": "6373a8ea7fff4cd875d17c5d3df6dc37764055ab77850a6c6348526969071cbb", + "src/player/cssVarMix.ts": "0d023f28b7a8b4c1a5e2c4dd5672ef4294c86bce0013babd9d52efa32a443b2a", + "src/player/currentTimeMix.ts": "cc374abeb85b203b9f31c566a6b9e53a4a1723d609fccc7b0c9c210993b79e75", + "src/player/durationMix.ts": "60a9d665cf302dcb6b3e37e2f057e31720935e5e588fd7709231f691f6014191", + "src/player/eventInit.ts": "a915c5a618e70b1ab10536b1273ba0fea4ec11d3a2ca629b538e90b5ad2b55f9", + "src/player/flipMix.ts": "a1519c83f8c9437a9b7e99a59e38a3d931032c579f4085226fc0955c7c9eab67", + "src/player/fullscreenMix.ts": "b339bebb4c87f7b75232d7e0d637ebe25bd09a0a0428ba87339a16af5daa71aa", + "src/player/fullscreenWebMix.ts": "75b83a6093c7887ca8725f63c55503d0bf3aafdbbf2347b579120cb257503555", + "src/player/index.ts": "359943c88dc99863e510fc0d51f8e8ee2397217e68045f755d4e9538579bdaec", + "src/player/loadedMix.ts": "6a4c4a08ed74346dad3e138b1dda22c8c9c12f175fe6d00da41b89c78cbe2c18", + "src/player/miniMix.ts": "d68a0c4f6c6059d5831d2d1fd4823b8d3cbce95eefd6d36d38670d6d8720f44e", + "src/player/optionInit.ts": "7c1c47679ee6201d0e0d203fc7b449a09309e7b24a0a1099ad259a70fc1b1a35", + "src/player/pauseMix.ts": "f4fa2b1f05b84ebd27bec9cff5a151addf096dd9b32a38122fb2f1829def0043", + "src/player/pipMix.ts": "63dfb29ffd66ce7d081b24f8e8bf697c041675b49ab8919e206d2df5132de236", + "src/player/playbackRateMix.ts": "e185c6ff52cd567f7fd7c30553bbd6c65517324d1d16c4948c3623ef457ef536", + "src/player/playedMix.ts": "5b6b89bf8dec1efb19cd51e46af1505bae006bdb3fb798e9dec7e3fb5cf0acaa", + "src/player/playingMix.ts": "968c9f6e6d23c233c77d62a593db64adcc6d1a2411f5f1c61a35c6996d6a54d9", + "src/player/playMix.ts": "2d46a3f84da0b1dd18139b76e5e2e163f1d9d9c8f54e67807eeec672acd49917", + "src/player/posterMix.ts": "d569dc24e8e64efe398bd76942bfaf563ffbf64d2a7387ea2e1cb1cf511183d4", + "src/player/properties.ts": "76806d6273545ff556cf9c6d341b59b9041455a8ecbe1fd40510e841c0d5710b", + "src/player/qualityMix.ts": "980ff584c8a5793f5ec9f049f144df31d184d7c9acef49fbe9d504b7657a96bb", + "src/player/rectMix.ts": "a741ee09fa3271df84363c5d73eac1b2e5adb39491f95f8112af81f1219ffed4", + "src/player/screenshotMix.ts": "1754bbce09f713204c120cd4657b52c06eb09eb1fe3244f84474e5967cd68e50", + "src/player/seekMix.ts": "e6e1bf00e8441f1ce58d2a67a66f7e5e98c86d78620ff10a5e6268d54f13fadb", + "src/player/stateMix.ts": "e45b3209a93ab14665d19c5740d5c632187e9fe234b019a2a0263e26884ab3b2", + "src/player/subtitleOffsetMix.ts": "cf9834711842c8a31c3143ab3028f0cf9ba541fafe6f0a3076067daa9d4c750a", + "src/player/switchMix.ts": "b47e174ef0edb2b96ff29f2ddd3c9f2dd2a38713db2a81002b18c89ce71994e9", + "src/player/themeMix.ts": "5bf11bcf8b77cd5d5f2970bc3edcee315c693c1be3d567770d5107a5951cb48f", + "src/player/thumbnailsMix.ts": "6c097d7d00779a6d0d3d65cf9ffd126624a48c9bdb98396c84c39f4de4bdf712", + "src/player/toggleMix.ts": "a3050136248e7d0b942387484c61286ac2b33a90724b1dc3460f5061be76f247", + "src/player/typeMix.ts": "c2a234a9c09f0269a4bd0659087635995945075ac70a5cf2478c8a135fc1b2fe", + "src/player/urlMix.ts": "726a42899261879e03c8b1d4f716458bf3e6e614cecc3bb8d7a581afc2b7866d", + "src/player/volumeMix.ts": "d830bb27b984e0ab2f687943fb49abcbd0331d71fe96049fd81edbddaa64f07f", + "src/plugins/auto-playback/prompt.ts": "58c6dcaf540296ee6f6bdeeda38ee7302aca2b06ddb152b716c0c2bf9c6c96b4", + "src/plugins/auto-playback/records.ts": "133a4ba2fd2d3df724d96eb203d05cffb0b82ecb8de72403974f7979bd37ce01", + "src/plugins/autoOrientation.ts": "4a13b0c010ea7a5002e66c422260ed24bb0d18b3ed41ce10974ac7ca2804cc09", + "src/plugins/autoPlayback.ts": "e349010813bbcd53503383b707c5f6e6e60d8ade6442d020fe6ba07a128c3122", + "src/plugins/builtins.ts": "4631c9775732982dfdc87e16b1bd6b41a350be36fb27e0a9132c11a85b0c016d", + "src/plugins/fastForward.ts": "74c03e3fcfe2f87dcb0ef1a5da5410cb96322509fd07e32930128584c54f62b5", + "src/plugins/index.ts": "4c97f354769bbcb338263f321876a90745a87a9af2d267e216bd3d9d007f268a", + "src/plugins/lock-keyboard.ts": "d59ac2fc9d0daf48c7946e0b49698a74e01f5f55e903c1b090fbda5516cbd16f", + "src/plugins/lock.ts": "8f5fe4469787b7b2a0a302d0fbd925f8eb6d1b261cae6e17367e4d97666a096c", + "src/plugins/miniProgressBar.ts": "21b4850fcaf6b0e82d5e62ca7aca60c179c578f7ff6d5606e6025628ff4b1cc7", + "src/plugins/registration.ts": "9891686c32aeaa33c48ca500cf30ab24ffbb0835c6248769b4c645a5ff20129b", + "src/plugins/types.ts": "6823098d5ec1bf053f60ddfdd36bfcd3f06f3b528cc5dd30fd676a1318dac590", + "src/scheme/index.ts": "dc4a3b5e08478cf72b46b0b59c023359ad5f79b891ea8a6a119ce24a5251821a", + "src/setting/activity.ts": "699ceed4bdeddb6d48eacf79c8dbf737f5d2d8c4983be70205322b14807a91b7", + "src/setting/aspectRatio.ts": "a16eb58fadf77f0a9009cf162d957ffd59d9b8fde83cc193d510fd642e3456cb", + "src/setting/checkpoint.ts": "9d3bff311f9b15c067ca49661af4f48de939f266b8077e7c2f0d66edef22dde6", + "src/setting/events.ts": "f7a3347ca146232caf2a8c9a5a18731cf7bc91dca4cd36370e0265c6eb70df53", + "src/setting/flip.ts": "e72a4ae33300d9e48880897a4f85a04fa6d9a5fff7b06ecaf9081cfb1bb14404", + "src/setting/index.ts": "f6319af15ebe3600a466123dd9d343b86a8d6ed201693ac7ac86dc1d674d477f", + "src/setting/keyboard-focus.ts": "b9af20f66342e10564ef606d75550e9eb9c65274af615ff5719598a0620464a3", + "src/setting/keyboard-item.ts": "d94bfc0266486615ddb79b9eee3886f48891ebb2e5f465652ef98f142ada89d2", + "src/setting/keyboard.ts": "5a2c717d9ecd368efb1bab2562e8d8a06af7607e9fe6d96c1be4d8d58212d395", + "src/setting/layout.ts": "584604e8fffaeaf1d633d1ed45e64d94595c2a56976e3a3f7ede01839b83a37d", + "src/setting/model.ts": "c47348f0f9494c4ce8ea5561bcde6eb698fb11e9197ccdc1ca1359a6d5e370dd", + "src/setting/panels.ts": "64d48720971763985a2a652a18c2ed2f32300c3553d56b52049ae40c4dfceae1", + "src/setting/playbackRate.ts": "2e70e0d2a33cb0ec9fcdd6d22424979fed7b2e01f87015d6be4e520d5cf4e88a", + "src/setting/registration.ts": "c29db62b5d90e0efa4a926c753015e65e96a47add3f5b8840ee51017052edf7c", + "src/setting/render.ts": "ed73745f2c7e2d76bbe8ce7202336e5f4de217dc8f0806b769127cb25316faba", + "src/setting/resources.ts": "64c28cc2cb08cb87b0864ab957d7999bc94931be4788f282d6f190b8806a81fd", + "src/setting/selection.ts": "a642e630924eaf4ad91705fad1fa6e6dc946b32970d809a23da274399fce20ef", + "src/setting/subtitleOffset.ts": "86513835d4e542ac39e9d551507473e3e14c71fd0d5ea725267008ecbff6ab83", + "src/setting/types.ts": "21a07d75a28bbbe20b3e107b6f1a09cb6f8ef2773ea10a4bd7caa88956e9b99c", + "src/setting/update.ts": "79326cb55c52243a7aa8df347a3b081dcd84eb7932fc6162061cc0d9f7078add", + "src/source/listen.ts": "c0596b98258c1544c8e4b762509646428450e56588da36908cb8583b8b716c37", + "src/source/operation.ts": "a8d0b89fc706c4ef0ccdd6d94b220207e92b3d3bd3b42b55c90f9bd191f15cf6", + "src/source/restore-position.ts": "da98a47e8419b33069191e51fc94cc9652302ee4f3eff8ccc7a6dbd4c4c0e2bc", + "src/source/switch.ts": "c66a3db4ba52dcdb46e1f6ab1f350588a07f64d893423d3f135d9768bed74ab6", + "src/source/types.ts": "e5fa3a9cd6b84dffbbb02f61aad966d6046204d857de3e4564c795f02a0259ff", + "src/storage.ts": "9c0a0f3d8ac18261db6e49b2ea14322d1d53bfec3531c7337b85005e708fef30", + "src/style/accessibility.less": "eb9cfe282c64a059d2e102280750bcd33ac33726fa09042eb9875f534335efef", + "src/style/artplayer.less": "a0da37fc5beadee7181d20b0c4769caabce0416fe87b501cbf916d33d073a82b", + "src/style/aspectRatio.less": "2218f0db06da5287a8b7d99c3e72360d1c9af02d805d1b380f93d95df7542cd8", + "src/style/backdrop.less": "45d2518d29c294801dff1ab85e3a4bb2cec66496adccdf893854fb08d444869b", + "src/style/bottom.less": "324de61ac2a82748015168789fc48c861ba6d490a87f9a98dac931b53f0d5a95", + "src/style/contextmenu.less": "190d7e61fba903428847e4495f084306c9ddd1b45178abe04087f3ab883eda2d", + "src/style/controls.less": "eb6d4bf4e4ff903d724d45f3ff60f0cf10c02e622fba195555a8179100cdce87", + "src/style/danmuku.less": "e971e214fc4fcad36707d0a2739991e5345ed3b0d582fd9484e3e2065f4d4e45", + "src/style/flip.less": "f3169f63fbab0c8166b0f1fe58719bc980a295f160dd534855adb2670742b8b5", + "src/style/fullscreen.less": "ae20b0142cb4dab46f1062270608d47c6947a6e35d9c0915ae237f6d593287c2", + "src/style/fullscreenWeb.less": "d92057496349d44b903a4e62b4b4a6ebc2c7b93320fce81f26a5666abdf77330", + "src/style/hideCursor.less": "28c6c2150589607c2002fa7b6e7a09b525742630d0b247c3c36b414c2c693cb8", + "src/style/hint.less": "e2dc4940e6b212d8da75a404fd5ff1ad894008457677bc37554c6b64b735bc31", + "src/style/icon.less": "2751208954958b8437d10746111d192ca944f97d8cbfcbae6a2a2f5f0ceaf234", + "src/style/index.less": "ea6f4cd4ac769bbedf870e01a753c0cdc24493e9ac367c895ff3687d02f6a84c", + "src/style/index.ts": "856afc037ffcd4d18c4b54901ddbb30e310014553fe9d19560e34fb54b8378c1", + "src/style/info.less": "8cdb91746d0ad17dfd9c493f317bdbe0bac250c11ce6d907596a7f34c6f0d5d4", + "src/style/inject.ts": "9cddbe51b5de0da74f27c045ab982b509c3854cc6b81eeb02a6b974914760a4d", + "src/style/layers.less": "623d06fb1c5520e99401f6e5e3f2a6e60aec540e4d3226845582677e69fe220f", + "src/style/loading.less": "3defb61105e6229494501dfa3315cc82366eaffc9569a25dabdb54ba8ba57f9d", + "src/style/mask.less": "3bcd16bc8cb4fe573c3937ae7fa1a1435fc5479873841c21d99d83d1916cd1be", + "src/style/mini.less": "abf2b03a51d518867bdef5818ef5fd604f19c2f85dc8bc9784dbad480dd8b991", + "src/style/mixins.less": "4de7eb5642eb03388ff36b2fc37c5b2bbd9d8a68c74861aee2d9aba22cc0d171", + "src/style/mobile.less": "1c3f93a6eba38589a031478ba04d87007c02594613845c1325c22ba940629c32", + "src/style/notice.less": "4ef68e420702979d9bb6d9659fefdd52a22996edd9f528473ffc0e08bb9f70de", + "src/style/plugins.less": "7122d23a57a98f09b3d933ff15eddbadc909d3fd1cd096a8e8e25fef25cbc0b2", + "src/style/poster.less": "8bc21639753db5f5ee671b1155812ba4bb42365c218f9c53c95e42b68ec4498b", + "src/style/progress.less": "9578590a84cd446d9790ae97f89103cdd65cac0094846f0c36ea16e182275411", + "src/style/selector.less": "a33cba4ff9c8e9aad4af152547bf54fdc64fb74a1013ab99a9ac01eb55fe25c7", + "src/style/setting.less": "c7fec9fc8c3cc3e63085b405a0199e2148721050b41fca3ba33598dccb153958", + "src/style/subtitle.less": "9660cef4d9933f2e3b5f8299f1c820797df4942c18e8c9883930ad111a86b3b3", + "src/style/variables.less": "166418165eb862c669eaaf40bd068ae12beb9b784abf6ebdd83380b9aa72bedc", + "src/style/video.less": "1658e7941437268fc187c991d0fab1d2d74ec1fad5997df67b4b9cc6a1cb52d9", + "src/style/volume.less": "9c3a184f3921e026ba5e3164b6d0c52ea7d5f60214e2884959939b74360b21fd", + "src/subtitle/index.ts": "b4ead680dc82fa47c53d1ec7e5fb8bf94abbf55730d5d1130ad8d544cb42adc8", + "src/subtitle/parse.ts": "7db540c5edb1d2312eed82757fd15a7ce6a28996ba20d0087e56730f21dede74", + "src/subtitle/render.ts": "96493fc35680af635a8db225a8bf002208df79ed48b1d4ee6cc73587543add5c", + "src/subtitle/request.ts": "543c964571bd5ab984bc1adc9f64a8917dd134ed2892ad10b30ed9c859f34119", + "src/subtitle/state.ts": "9f79b982d66747170bc39bdaf99b65676310965f23da62a4dec15547c756a56b", + "src/subtitle/timing.ts": "f2c1dbb63697a51c200371127da4fb8ea6e90a5b4de888bb1c2d7eae4007a5f8", + "src/subtitle/track.ts": "707f4c43af4ebf4b87521f6f577168460e739274d0cec28b9efe5704d2540d18", + "src/subtitle/types.ts": "c7fd0568c71611fe44f0a7d2735a246250c8a63daefd15c63091e37d38bf1edb", + "src/template/html.ts": "351c472bfd01fa5ba1a4e347ed31bd5faaf823d9b4c5cab1ce8c651e3b175021", + "src/template/nodes.ts": "1572746a636647e4d313cc8752d3a110ff81fddb390ad7b0feb6a0db0d42b9d4", + "src/template/types.ts": "2bf906b4a209e17dae4d79225e758e2e53772e93f19f188d0131051ea2a0143a", + "src/template.ts": "0ea9155b9292d4c528a464d3c97996ee5a1c9c4aabc2959a744989085db2251b", + "src/thumbnails/layout.ts": "6630439242a880f53fcb374b7b15c7f486405aab8a0fad651b137f02971eeb59", + "src/utils/compatibility.ts": "1fd2a5b17ee3245712eda961d3c0a15caf3c428010112e48231890176ce1e5e2", + "src/utils/component.ts": "c3fa96467e8b315d974a42a19591aa4a4a7514853db796135b2acbcdcb160ea3", + "src/utils/dom.ts": "72f3539dabf296df37ab4cc7ade0c8ac9480f399987101589450c787e7d6719b", + "src/utils/emitter.ts": "26a93d3ff35b53e71a5f3bb22c252a854559d8151ede50a66a28d9eefae6c008", + "src/utils/error.ts": "ba303c7d4e4228919088f9d608fa364596f5853ee646eda2008deee354866f38", + "src/utils/file.ts": "ea71d7fc0e818d473bf5a596211ba9d571e4febdf1878014eadefa8d0a98d4cc", + "src/utils/format.ts": "891df5b7542b713aef46bf2b93924f42e68eee574afd802db3e6c62ff2655ede", + "src/utils/index.ts": "5211af833dddb2937d25dcc772740d62f9d5c5039ce5505bffff0796d4afd756", + "src/utils/property.ts": "c737d4582a4382f4038d12dafdf8b43418e508c9b8b859b2f0cc17c20f370343", + "src/utils/subtitle.ts": "f058851d11a418e321a8a498472b67fa535fec2c7b5d3df739b6b4f263d00337", + "src/utils/time.ts": "b8ce3d50865f6c343e8e3ce9f5c87de565a87b4e9fbcbccbe7030e30e80b93fe", + "public/artplayer.cts": "0e91e907d021db02a68004603e6190505fdc0806d873ebb6af171aa089a81da7", + "public/artplayer.mts": "f6292596a9ccb1d43a6d6a12c35f859b1889ad15924c5ae0f9f280941aade313", + "public/artplayer.ts": "2c1f228e38eeda3aba0dceb9630c5db1380ef7033037b28a12423355c8a80983", + "public/component.ts": "ec0ba441e6f834118afcefd0621d9a76143ad4fcf50b699a374249ab14d2c314", + "public/config.ts": "97322dce493ac3d1160f426e4fd0ba89fa746f7d66bfbeabd9f45454198560ad", + "public/cssVar.ts": "2ff9827aa10bf326f60f6cda7556a94fdcabafba529185a1ceae46d865f33697", + "public/emitter.ts": "9c62551cdcc6dd3966bed8a7a85dd477435db977c91a294d2ac8f162f9592537", + "public/events.ts": "cb23eb57b07a0b4725a2cbea62add2fe691f818cc4bbcb862bc62caf5b297f3d", + "public/i18n.ts": "38094c46bed0ecd5bad02a3a5fbf0d61521df45aa2e1154256cec4ad5491958f", + "public/icons.ts": "61ce1b0cb9bc7488263b644419b5fd5a13e72de1493c8113eee81d5174f1234b", + "public/language.cts": "2248040d86a8e34626755c4ecf53ea0174706c653073cf0e15884a030d173120", + "public/language.mts": "c391e863012c77769e661afbf8fa949e9373aa88d17f58cbba7f5696edb8077f", + "public/legacy/language.ts": "c452ffd764ff9b29b819b3475c42395d2ea7a33560d8c186ef5df3844b9524c3", + "public/option.ts": "88dab402e6f55c51ef7b70c0ecde3e4437116f7dfced303047e410835088a3a5", + "public/playback.ts": "1ceaed3aa1cef511fe8b20f4874647f6065c723ad805b742a0a9247e16bb1bb5", + "public/player.ts": "fe75e08e8bc3912bd1f42bba92998418b9718a688b60068c2b9843e6218b0519", + "public/plugin.ts": "2a57e148fda00ee687da5036b890b0f611cb94bb403a1ed52602179060259d35", + "public/quality.ts": "dcca8c0f5b5c25373f85825a274fc3ee8beeffd7c8b2a978468e039ff4946a9e", + "public/runtime/component.ts": "840213299c942fe058eb5436977ceec066b9dccda24c55ae9f464b399c979e39", + "public/runtime/construction.ts": "24cc5cda1f614314db382271a9b0d5583b781894cfdf6c548700b1b5270467ee", + "public/runtime/events.ts": "52848f57d35eb1037cf74c8877521edf99a015bcd77f30ef6bbcba1807a99bfe", + "public/runtime/media.ts": "8828f80953aec3e95328cefe691661e8897cb27cb309483cf806ec45a8549ae3", + "public/runtime/option.ts": "bb672e49ffe74a6fc78543217f6de80d7d738890146df0857c709d4dc283e4ce", + "public/runtime/player.ts": "a4a24794e26cfb9e4310bf0f459a7a407e85bf81b4f3a4feb6294331af8036fb", + "public/runtime/plugin.ts": "9ad482f2a77914a91450419680b8af6b314b926f0831c2f7f6d7c466690f95c9", + "public/runtime/services.ts": "8e4648d8c61bff47343f9e1c2b995af69fc00947264b826109ceadcbaf553254", + "public/runtime/setting.ts": "c48d20957b57f79f985ef76a2950cc8a5cfa25dafa8ec5939e562661778e6218", + "public/runtime/subtitle.ts": "13241c4f9a87517aa2cf7b3e0bb8cedaa12fa0b4d3f8934285797583b752557e", + "public/runtime/template.ts": "da9975513a1938e7f386f4f65f718f0fc595164bfeac8f0cd99a3e97a54919a1", + "public/runtime/utils.ts": "cab9916f5224a3b047812b9f759cc9cc62105662599744067a6955020ab36916", + "public/runtime.cts": "52cfff1daeb6841a90212c8fa8d46ca46d6650bb7ed1b59b62115d854b8ad652", + "public/runtime.mts": "1b09bc0ee0f0ee2f788689eaff441bdeda1fab0ce783e71b61b9792d81072b03", + "public/runtime.ts": "ec4b1d56993eb482a77eb0f94b701047549d009e6ba6433f27e7d464fef30c2b", + "public/setting.ts": "a60ed81da780439a55ee22ebe2611d936bd45da0d98e6bf44c92e9a5d9047492", + "public/subtitle.ts": "92f711ad0f7924e609ad4425cd26d19c73eb027cccddc6d89fcf9b8e334db065", + "public/template.ts": "b5f9bff43b4816bd2e3531a3a1750b8014fcf63d421fbc786341cedb1429035c", + "public/utils.ts": "63757d81dd9cf5b95c67ff758da71c87bf535f15aeea7dfda322637d26fd33d0", + "package.json": "82e92699e7c29847f32ac6767ece0401290e7d7a12854722bdbcfd09b90b7954", + "THIRD_PARTY_NOTICES": "b77b5b46b79fa0cda850b0781f78c3b1112c4ed9672fa291956fe8eff53098e7", + "tsconfig.json": "c074f0621b18e6f209e217a702745e4118ee7724955e8104c7e3df3a223a9921" + } + }, + { + "name": "artplayer-plugin-chapter", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-chapter\\dist\\artplayer-plugin-chapter.js", + "member": "package/dist/artplayer-plugin-chapter.js", + "sha256": "179c3ea90ddc85da27b46f000110e32d464dfa5c8c394e98316dc1b75d6f2a72", + "archiveSha256": "71963773b1ded4d260e438c97b786a16275448be821f1ad63a0f09f7368d6730", + "sourceHashes": { + "src/chapters.ts": "92206f524624ac3a7304677b6a69fda88e62caeca52e1e530d746e51579d3a4d", + "src/index.ts": "83dc022253c0539587590f7a551e090684d1944dcb2010a76e8498a683e7ef36", + "src/progress.ts": "4a18d19ed703772d73622ea3fa9d433dbc2c6092ba244c9bb1ec727368996951", + "src/style.less": "6c0b688efd9606a55c1cf7bf902e3030717a65210506a33ab1b31156a72ee85f", + "src/stylesheet.ts": "6ccd88b6d17127acf6f6c1f02a7fbb3a55d59f427d2d92c007bf658122abd51c", + "src/types.ts": "07c528f9753cc54c12211276f28ff01a5f6e8f1ef1451b2b534f2d6cfaa17ee9", + "package.json": "24eec6907b3218439189adab6af3f932c1497c47c2d41209311c01042b07fd4f", + "tsconfig.json": "732a6076acef4c8437d305af19a9da8a0e04b8740a1df32921fd30011c162492" + } + }, + { + "name": "artplayer-plugin-ambilight", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-ambilight\\dist\\artplayer-plugin-ambilight.js", + "member": "package/dist/artplayer-plugin-ambilight.js", + "sha256": "21ee5227f26cfff6e82ee6932f6eafc9741fa3be0ec2f5252a47b53ceea14599", + "archiveSha256": "33bd4d510e1192697e8c086f300a912042037cbad12377d90bf3123364e0d382", + "sourceHashes": { + "src/index.ts": "9db25144798ee667bc420b3e1f0b00ef6855185d26cefca45e05271354bf8591", + "src/sampler.ts": "e6f4ea2795b500aa2ac8ffe4b65da4269e8b3457a9912808537bdacfbe9f5328", + "src/scheduler.ts": "2c87328cfa8d916c64e8eed26802116867f9d731991a6cddf871d53808261268", + "src/view.ts": "e30ec83e0a8f1b471c4f04cc436d550b3fed3f75d8042ddfd73be98705103e8b", + "package.json": "307e07ca6259f67cd8fab2e6f4a1bc6020da434b20efecba0c2b9013d8abf37b", + "tsconfig.json": "712a3fa32ed57692d16bf854a0e77ffaecd04236efa0f557905aab7291e0aef6" + } + }, + { + "name": "artplayer-proxy-canvas", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-proxy-canvas\\dist\\artplayer-proxy-canvas.js", + "member": "package/dist/artplayer-proxy-canvas.js", + "sha256": "f572ea536107b7823452c5a99447b69e9226a3582c79dda95a4248cca819ec18", + "archiveSha256": "d31ceab913b61576d50f6ec3086f0f3e57fac4be90773331bf51690037dd9a0f", + "sourceHashes": { + "src/adapter.ts": "68acf8f0a594f31df981d776099ddd97e013ba2ced6eb61c18a1a967870d5597", + "src/geometry.ts": "067feae2cd568f153e44346d40c1e01fdcd9b4ed021ee29e3918c218e7bf19ac", + "src/index.ts": "b954a933fe8e5d63ef905b30d2592d620e0a49aad2f8ac57a17ce43518b5cbec", + "src/media.ts": "f828c55f5fb5aad02dfd3a7bd35392ae03bb10725fa0c845932264783ddbc838", + "src/renderer.ts": "ba5f2f546b296cc6f688e7ac1129e89d0f64035ad1aa203cf479ff023d520a01", + "src/scheduler.ts": "2e32a634c655bd408250f0500d7895aab3311835b89d578aad07121e727d5fc9", + "src/subtitles.ts": "b83b3e685c1b2829cc96a8729645134fbad200545862920859708226078a7e6b", + "package.json": "729430fbeed0f59b2aa2a25cf5aa6196eaaf32e89028168b45203821681b2cd5", + "tsconfig.json": "712a3fa32ed57692d16bf854a0e77ffaecd04236efa0f557905aab7291e0aef6" + } + }, + { + "name": "artplayer-plugin-document-pip", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-document-pip\\dist\\artplayer-plugin-document-pip.js", + "member": "package/dist/artplayer-plugin-document-pip.js", + "sha256": "56440aad3ed06be55ec3a57d781f7de239e9aecf40a067e88f2cffcd01a86d6a", + "archiveSha256": "cdb8478a7e9174429cffb7cd9cf8a46573a8b18a2dff721042279a65a7c3927f", + "sourceHashes": { + "src/control.ts": "9fe66b2fd59b50c05355d47a89af828b59eb9ad4e224237c72017170da7f7d65", + "src/index.ts": "28ba9b809589f4c58acc7d36bc2bb11b75832e8e6e009487c741c5b47dc4a590", + "src/projection.ts": "9a86780b54793427db448d7814d7e4a728d9f65ab3282bb6b476bb6ecedc731f", + "src/resources.ts": "6aa31086fd18104b176d6245ec297255c71993fe935db5b44ed649bedd33b8be", + "src/style.less": "a75ae94a569c8fd6ce925dcc7ab6b22cfa39a4d81decb30cc447dd7108a84a22", + "src/styles.ts": "7fed3354c81ccfd70cd70aba5afe8d1d78fa3f7022a3298c65446b5a0a0e6b96", + "src/window-session.ts": "cf6bc403caf22ecfea14da7bfa91ddb88a60ed0507d5485035abe48861e1ad17", + "package.json": "5f3671f759364be52faf3810e1534a7711270f975f06d3489d95982fbae0eafb", + "tsconfig.json": "583e4ac1afa99e3a29c7f899df9fdeefcbd14d3847d69143e3fa6a8facac6d99" + } + }, + { + "name": "artplayer-plugin-ads", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-ads\\dist\\artplayer-plugin-ads.js", + "member": "package/dist/artplayer-plugin-ads.js", + "sha256": "1429541242f49c4d558eda242a63b6e57a876c2dba06ce9f631d71d315028023", + "archiveSha256": "90de8c27a862cbacbf90420dc74f5a6866b7311209d9a893231ff0e40fb7f0c3", + "sourceHashes": { + "src/countdown.ts": "7dab796a3d8fb757da7f87e4396403f0687af52d0876cf74ebb2b8db7c2e752a", + "src/index.ts": "7b0e155a6371c71a5c3f5ba0e9e95737648a2b73b0cf124536de8b6f79a92371", + "src/options.ts": "3ce2ad78b9f0288314fa75adf14776adf10f2205789268e9599a6d551b3b8b4f", + "src/resources.ts": "ba0d5b5f25d79929a39a9cda6b80b9e60a2b746e20312aa658d84fbb9be6562f", + "src/session.ts": "c45b0c63870975cf8fbd6f93340427de387d9dc15c56dfb3ad2ddacad8380e63", + "src/style.less": "0eeed3f29ccafc6836f5bc4338f58f784edd114d2b100fda7fc395329031a406", + "src/types.ts": "219d5b06bdbece09b88640fe6f2bc27c44dd34eff5909cec9f7405a9dced759a", + "src/view.ts": "7d2cba7a3e20ce02288627723ebc9256d61cee313c3a7d00a31373b7f250eb91", + "package.json": "9a7d0a2e917902bb64282566e96123244a81aa4859a82c6b1c711d639660a9bf", + "tsconfig.json": "583e4ac1afa99e3a29c7f899df9fdeefcbd14d3847d69143e3fa6a8facac6d99" + } + }, + { + "name": "artplayer-plugin-audio-track", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-audio-track\\dist\\artplayer-plugin-audio-track.js", + "member": "package/dist/artplayer-plugin-audio-track.js", + "sha256": "23b10856628c5568f1aa7ad88e926c7da8d96edfadf6df872777062a78a4b4be", + "archiveSha256": "0f5ffddae99cfed32f4374ca9ce0423851fe1c41826629a7ece523b1ab5d79a9", + "sourceHashes": { + "src/index.ts": "769b3d04261456bfb2c10849486244c9c15529229b658e39e48f8f71403abe49", + "src/track.ts": "9c6d587dc881e30a4d55746088d0122da5e0051258303d50d14a8fe5f69be2df", + "package.json": "49cddf50186ed3607a949ffe9277071b742995fbcd68ceb40174209645b3a45c", + "tsconfig.json": "c0f7dd993cf8f0fe5ce6ab390180c56cb8e3722e571c922c2ff15cb148a283ff" + } + }, + { + "name": "artplayer-plugin-vtt-thumbnail", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-vtt-thumbnail\\dist\\artplayer-plugin-vtt-thumbnail.js", + "member": "package/dist/artplayer-plugin-vtt-thumbnail.js", + "sha256": "df70ccb5261fd988ba8c2c2d689ca58653bb5426242ffd1076569a1d225997a7", + "archiveSha256": "ce77a119cac869e266d3b783fd8397cd272a9ed4f454144291984c1ee27a1f83", + "sourceHashes": { + "src/getVttArray.ts": "b7576efb3bae92f973acdf82d0fd4e3a6bfe63c2354deb02567ba1adda25415a", + "src/index.ts": "8b01a6a0e0fade1792f480b0e1a75318a7184cfb2d32be503be40dd6c33590dd", + "src/lifetime.ts": "073d8f38ec7b37c58cf4a3e4b853068645c67d8a834510f5dc68601ace3f9176", + "src/parseVtt.ts": "66e1d8fc58029366cb78a541e75f8c0c29fa346a6de4f34bf7d262b969a84190", + "src/preview.ts": "841a16dd9d9b7ea482226cb400f48bf5998705b4a3321807e6c38ff6f7a3046e", + "src/request.ts": "afae0e57e9c61c034a1494f09d0b9ee4ab43755c61607a94f1d21292a2fee8ef", + "src/types.ts": "1c50de5f12008b6a61d16bd3a865b84433a77bdb4dc4a1d1697a9d326f497b11", + "package.json": "6f85243198e03490a29162ade8f31d5db1ab0d392a2033d1e662179598fc9013", + "tsconfig.json": "3e794cab50e16a567d3134da06fdd1b24579922dfd2098b6dd128c4476c62f95" + } + }, + { + "name": "artplayer-plugin-multiple-subtitles", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-multiple-subtitles\\dist\\artplayer-plugin-multiple-subtitles.js", + "member": "package/dist/artplayer-plugin-multiple-subtitles.js", + "sha256": "103e5f75e6ce4b8b9f14b2b8caa983c97eb24da4536048135f90517b959dcf6b", + "archiveSha256": "9a4e766e4ee751b9c6dbd0085ad83e06198cf99a6f229e16027bb55318646bab", + "sourceHashes": { + "src/ass-conversion.ts": "a8468971f6776925ad9d8897d07246a4c1a98ed30506c9558e5799d2ee8d0be4", + "src/caption.ts": "95e87b446ca42836162180e0feba8fbf40a452ed8d556c08af9869cd630e2a35", + "src/index.ts": "7231cbeca6404cc7c021b768089e3f11d59522f3479012ceec3234e25851ffb2", + "src/legacy-caption.ts": "78a503e86ed69ed14b2ae64107e244eb2cb62bcf99840d311fbdb0ade95f38ec", + "src/lifetime.ts": "469cec6a9f87311aa433ad2d74925e39d56324b8136975e818388315200f1e58", + "src/merge.ts": "d7e222c0a6fbe4bccd4f8b982edc9f5205315d4cbd969c72755752dd95c6b79c", + "src/parser.d.ts": "22a596dfb02aaa00e333e9bf3285ececfa94eda3a699726cba190ae858f7c120", + "src/parser.js": "ba582074d57fa2d72880e6e4253fe14646787916b2b68e2a1e748e685cf96ab1", + "src/render.ts": "fc8df5637e7904fb4b21512ac22d80b580eca93f576e9f01a799418b3d9afc84", + "src/request.ts": "31d8af86664b7f58c31d478e36fb5598fa1afa3970a816d1a8f4d40a7a03b2d7", + "src/text.ts": "15660d74726e36831939799d72e8126ede3e3becd22ba9cc2127db4277171d0f", + "src/types.ts": "63dbdef79f87d3dd14a31e02928e819747d52ef66d82d60b6d7810884979fedb", + "package.json": "ff9b24e039161bb2c0e2e35d81683fdec08ad44db1f3678db6fe2c8d89bb7da1", + "THIRD_PARTY_NOTICES": "50755f38458d41151c7f0b1675c744aa365f0510dc11f53832691ef5c14ce6b6", + "tsconfig.json": "db47e6a8e48caa5b3b48830243b2cdee9ab584fd6dff182dde5d198b96c86887" + } + }, + { + "name": "artplayer-plugin-hls-control", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-hls-control\\dist\\artplayer-plugin-hls-control.js", + "member": "package/dist/artplayer-plugin-hls-control.js", + "sha256": "8e163d4ab6734cbc45e7f539de7db644c7faf36d0318469a86d300bf6365cca6", + "archiveSha256": "aaf186a0e8405f366b7f022c80a043383802ecace985325ff0c94e62110438c4", + "sourceHashes": { + "src/audio.svg": "dbee5ce7487c9f8ec927e5286188cf9439345bbe947b6c06c32c07193e01e0be", + "src/index.ts": "c7ab89b964c481870f5b59fba0be4cd17b7a8ddf59b5bc8c03504f4983d64015", + "src/mapping.ts": "f517854a7825ab7783375438040602bcfeab16df0218998208dd9a3b8fe443e3", + "src/menu.ts": "774c43ebdc86555a3518b3f74d226ac03cdf41035d8cf5dd0ab519b7b144d78b", + "src/quality.svg": "4666a4c01764422f9008e442f5a889ff9691bb0386083d673943a0718f4d680c", + "src/sdk-events.ts": "4d9ee92d0720601a2c55b597bf99e7ecaf851d5fd2292adff153c539f33e460a", + "src/types.ts": "2b9c8927e4c16ab4ce486d63d2ee3fb781a01be8a5423643cabd1ec76b17f98c", + "package.json": "084bb4aea8dfce9880b062f2cf5e89b1fc94a9b403e835505631aea0e1816014", + "tsconfig.json": "583e4ac1afa99e3a29c7f899df9fdeefcbd14d3847d69143e3fa6a8facac6d99" + } + }, + { + "name": "artplayer-plugin-dash-control", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-dash-control\\dist\\artplayer-plugin-dash-control.js", + "member": "package/dist/artplayer-plugin-dash-control.js", + "sha256": "2d639a5c6a7044ada2b1d74e5b039d4cc787996b997c5a186a67724848f36c2a", + "archiveSha256": "1f7c3514f1c6fa6517aa279eeee1e6b88b79e0fceb15c466f9a1ea10728a0e60", + "sourceHashes": { + "src/audio.svg": "dbee5ce7487c9f8ec927e5286188cf9439345bbe947b6c06c32c07193e01e0be", + "src/index.ts": "e22cfd0a3a2129913278cb2fbb50e2a7b2333cc9bd53647ec764d3f8f4f30ccc", + "src/mapping.ts": "d3a3c65f3879cb1322fac55d78e5e9527d1994f7b4052ba9743412cb08c1757e", + "src/menu.ts": "f5049045ead1d47c6275b0d13fc862b53a90e2accfe99935f641d07757e06428", + "src/quality.svg": "4666a4c01764422f9008e442f5a889ff9691bb0386083d673943a0718f4d680c", + "src/sdk-events.ts": "97fdabfc6f1484ae0e95e2970ee88a6be1d71d52512db36ddf6407f3a7737570", + "src/sdk.ts": "9afd4dbc949648d7f9bb00d57dba04c71505cdd23312813f60c83a5f5506dc69", + "src/seek-buffer.ts": "ed86e48fabeac02a13cb4e7b6bd41b04bc55e432ae1d995cc432917cfaf1c33f", + "src/types.ts": "d812577c7bd877f6998b55747916117da1f400067977292907e3a910e04c239c", + "package.json": "0757055e9d84e95a3fe2278b86aefad75ddf6e3a902a2e010645f82d9936a158", + "tsconfig.json": "583e4ac1afa99e3a29c7f899df9fdeefcbd14d3847d69143e3fa6a8facac6d99" + } + }, + { + "name": "artplayer-plugin-auto-thumbnail", + "file": "D:\\github\\ArtPlayer\\refactor\\.cache\\packages\\run-UmEnUj\\artifacts\\artplayer-plugin-auto-thumbnail\\dist\\artplayer-plugin-auto-thumbnail.js", + "member": "package/dist/artplayer-plugin-auto-thumbnail.js", + "sha256": "4c8bdd75f49ad0514167e1b67c6941236c27837d09dd1d5d69d0345d69fa0357", + "archiveSha256": "54e37d53a25b85aa98ddf13f75ec9244a6e02c0e78ebea276198bf514539d02f", + "sourceHashes": { + "src/encoding.ts": "5fc75397162c86f5906c19c94c9aba873c45ec8a370bc4489570ca653ff73300", + "src/extraction.ts": "9d6867fda068f60f3dde51db67cc86486da1fc0cfc0d17cb166dd417c7b55567", + "src/frames.ts": "b3e6a286cee6b365bf0a70abd2ce48f766d6e591f82fba24573ee3fcefe68021", + "src/index.ts": "cd8ef105f52230fb31d28612309a183b577596a91dea4f8a9fd3e428e7c4156f", + "src/options.ts": "8481d30b912fca90dee72224fc87e1c6c295b03f1f01fd675643d4364ae0e4ae", + "src/session.ts": "c831c720f99d42374905e443526a336e065b041f3421e17875b42cddf1fd1659", + "src/types.ts": "96cf553974c75dc2c0f506c2666af3a026190682b5c31aa6ebee84c10a20bd4d", + "src/video.ts": "d675a45d3baddfca8d7d469050b373e3b7a66ea3f9746768469d61b408b59426", + "package.json": "dbf644376d50d0ada48e27a1c09c62b036c28cbd5df62db9cc0e47f5e3a074a9", + "tsconfig.json": "ad1b793eded53e351dbd45fd1ce537bf95c0473de717ca0e13adbfcc884eb2c9" + } + } + ], + "installed": { + "directory": "refactor/.cache/ci01-adaptive-installed-report", + "report": { + "path": "refactor/.cache/ci01-adaptive-installed-report/report.json", + "sha256": "9ef7ef114bd699b0662f9a3ff1b825e4ba5dd362277ab486a86736e41c838635" + }, + "invocation": { + "path": "refactor/.cache/ci01-adaptive-installed-report/invocation.json", + "sha256": "28db2614ca950e545c053b6118c6d22067cac9b161cd6d606b3e85e4a557bfe2" + }, + "result": { + "scope": "installed", + "exitCode": 1, + "signal": null, + "args": [ + "test", + "--config=playwright.installed.config.js", + "(hls|dash)-(control|sdk)\\.spec|auto-thumbnail.*\\.spec", + "--workers=2" + ] + }, + "stats": { + "startTime": "2026-09-14T18:23:04.854Z", + "duration": 350040.427, + "expected": 293, + "skipped": 80, + "unexpected": 2, + "flaky": 0 + }, + "files": { + "chromium/auto-thumbnail-lifecycle.spec.js": { + "total": 7, + "passed": 7, + "failed": 0, + "skipped": 0, + "installedCandidate": 7, + "sourceCandidate": 0 + }, + "firefox/auto-thumbnail-lifecycle.spec.js": { + "total": 7, + "passed": 7, + "failed": 0, + "skipped": 0, + "installedCandidate": 7, + "sourceCandidate": 0 + }, + "webkit/auto-thumbnail-lifecycle.spec.js": { + "total": 7, + "passed": 7, + "failed": 0, + "skipped": 0, + "installedCandidate": 7, + "sourceCandidate": 0 + }, + "chromium/auto-thumbnail-pixels.spec.js": { + "total": 2, + "passed": 2, + "failed": 0, + "skipped": 0, + "installedCandidate": 2, + "sourceCandidate": 0 + }, + "firefox/auto-thumbnail-pixels.spec.js": { + "total": 2, + "passed": 2, + "failed": 0, + "skipped": 0, + "installedCandidate": 2, + "sourceCandidate": 0 + }, + "webkit/auto-thumbnail-pixels.spec.js": { + "total": 2, + "passed": 2, + "failed": 0, + "skipped": 0, + "installedCandidate": 2, + "sourceCandidate": 0 + }, + "chromium/auto-thumbnail.spec.js": { + "total": 3, + "passed": 3, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 0 + }, + "firefox/auto-thumbnail.spec.js": { + "total": 3, + "passed": 3, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 0 + }, + "webkit/auto-thumbnail.spec.js": { + "total": 3, + "passed": 3, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 0 + }, + "chromium/dash-control.spec.js": { + "total": 28, + "passed": 28, + "failed": 0, + "skipped": 0, + "installedCandidate": 20, + "sourceCandidate": 0 + }, + "firefox/dash-control.spec.js": { + "total": 28, + "passed": 28, + "failed": 0, + "skipped": 0, + "installedCandidate": 20, + "sourceCandidate": 0 + }, + "webkit/dash-control.spec.js": { + "total": 28, + "passed": 28, + "failed": 0, + "skipped": 0, + "installedCandidate": 20, + "sourceCandidate": 0 + }, + "chromium/dash-sdk.spec.js": { + "total": 50, + "passed": 49, + "failed": 1, + "skipped": 0, + "installedCandidate": 44, + "sourceCandidate": 0 + }, + "firefox/dash-sdk.spec.js": { + "total": 50, + "passed": 49, + "failed": 1, + "skipped": 0, + "installedCandidate": 44, + "sourceCandidate": 0 + }, + "webkit/dash-sdk.spec.js": { + "total": 50, + "passed": 2, + "failed": 0, + "skipped": 48, + "installedCandidate": 0, + "sourceCandidate": 0 + }, + "chromium/hls-control.spec.js": { + "total": 17, + "passed": 17, + "failed": 0, + "skipped": 0, + "installedCandidate": 8, + "sourceCandidate": 0 + }, + "firefox/hls-control.spec.js": { + "total": 17, + "passed": 17, + "failed": 0, + "skipped": 0, + "installedCandidate": 8, + "sourceCandidate": 0 + }, + "webkit/hls-control.spec.js": { + "total": 17, + "passed": 1, + "failed": 0, + "skipped": 16, + "installedCandidate": 0, + "sourceCandidate": 0 + }, + "chromium/hls-sdk.spec.js": { + "total": 18, + "passed": 18, + "failed": 0, + "skipped": 0, + "installedCandidate": 14, + "sourceCandidate": 0 + }, + "firefox/hls-sdk.spec.js": { + "total": 18, + "passed": 18, + "failed": 0, + "skipped": 0, + "installedCandidate": 14, + "sourceCandidate": 0 + }, + "webkit/hls-sdk.spec.js": { + "total": 18, + "passed": 2, + "failed": 0, + "skipped": 16, + "installedCandidate": 2, + "sourceCandidate": 0 + } + }, + "attempts": 375, + "identities": [ + { + "kind": "installed", + "name": "artplayer-plugin-auto-thumbnail", + "sha256": "4c8bdd75f49ad0514167e1b67c6941236c27837d09dd1d5d69d0345d69fa0357", + "archiveSha256": "54e37d53a25b85aa98ddf13f75ec9244a6e02c0e78ebea276198bf514539d02f", + "cases": 27 + }, + { + "kind": "published", + "sha256": "f0cbbcf8badeaca13c05ae178932818cb52fbce37ed504ac0e62160b9c7e1145", + "cases": 28 + }, + { + "kind": "installed", + "name": "artplayer-plugin-dash-control", + "sha256": "2d639a5c6a7044ada2b1d74e5b039d4cc787996b997c5a186a67724848f36c2a", + "archiveSha256": "1f7c3514f1c6fa6517aa279eeee1e6b88b79e0fceb15c466f9a1ea10728a0e60", + "cases": 148 + }, + { + "kind": "published", + "sha256": "7a6ce18a0b16f61f6149e0ea77efbb6e0503f997d39afe84271b59e366759e6d", + "cases": 27 + }, + { + "kind": "installed", + "name": "artplayer-plugin-hls-control", + "sha256": "8e163d4ab6734cbc45e7f539de7db644c7faf36d0318469a86d300bf6365cca6", + "archiveSha256": "aaf186a0e8405f366b7f022c80a043383802ecace985325ff0c94e62110438c4", + "cases": 46 + } + ], + "sdks": [ + { + "name": "dashjs", + "version": "4.5.2", + "sha256": "9a0944c48deb0fd8f92b0eea436c5b0d0aea9237c7da0078c0310f1430d0a31f", + "files": { + "package/package.json": "62b2295c4a92ec996ff066f7e5739893c46fce44d80c940c61ced9d5710226d1", + "package/LICENSE.md": "f7cc4ba24850cc564766c75923d07c3d22fa27f304285f4d25ecffeaec964e28", + "package/index.d.ts": "13e6bd0a3c77e2db9378e355915929ed3dda5d8de9c48f446c9d3e9fb7154dbd", + "package/dist/dash.all.min.js": "17849c05872997095a63d74bde3fed6f79c14c6a48cdf904833d880b93a476da" + } + }, + { + "name": "dashjs", + "version": "5.2.1", + "sha256": "4eacb0cc3525276666ca3f084611cdabb5a2264d128dfe0750fe106fbddd088f", + "files": { + "package/package.json": "f89fa389855d2a21b380fa69c84735da25bd93e3b9d7c39bd0d634493425fd8c", + "package/LICENSE.md": "f7cc4ba24850cc564766c75923d07c3d22fa27f304285f4d25ecffeaec964e28", + "package/index.d.ts": "03b420509a480f893bf8253232cfd28428dc0be5f254fefe99a91e65847c010e", + "package/dist/modern/umd/dash.all.min.js": "3a22b1f4576ab294f41e56f156cec7972a5f83edda379416778293ff22d2eb49" + } + }, + { + "name": "hls.js", + "version": "1.5.17", + "sha256": "8f9e60001992f59dbfb1dbc397e145743c41bb6dde233ec8a7974013c8a031fe", + "files": { + "package/package.json": "f2172b9942a23ffb46edd4af815cf1ea161db088e7f63dc518d30e55c95d6ae9", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "package/src/hls.ts": "b3d3f797669e89bc8d05d2de2aae243ae110811d6738948f173d789cc1ac1f2d", + "package/src/controller/audio-track-controller.ts": "ff34f3cb29b66aa5fcba87758bb20d129b052a053808c150ce779e0ceb1e4626" + } + }, + { + "name": "hls.js", + "version": "1.7.2", + "sha256": "14311c46a7aea04a7ffc373653b11d019bb41df8a693a2459eb3115a262aef53", + "files": { + "package/package.json": "49918bb59328a44f4533dcfb5ecde80893db85072bd52b52721901b4ce239d81", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "afcde07437ec84b072fe8782e772ceb5046eac751b2719f73ae0d83d763bc3f5", + "package/dist/hls.d.ts": "9571b0113a7103feb8e36e9fbc04c3baba07b5ab3e5c51166b50552ebbbf17f2", + "package/src/hls.ts": "e86f0bb70e845814aa2e3a4ff6a9f1f658d1c98fbdc738b02f623c9ddcf6c72c", + "package/src/controller/audio-track-controller.ts": "f7ec55e90cc2194e64432db1336d75d0309f6cddf8b55d7eac45b0ebba0517b1" + } + } + ], + "capabilities": [ + { + "engine": "chromium", + "title": "dash.js 4.5.2: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "dash.js 5.2.1: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "dash.js 5.2.1: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "published core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "chromium", + "title": "candidate core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "dash.js 4.5.2: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "dash.js 5.2.1: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "dash.js 5.2.1: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "published core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "firefox", + "title": "candidate core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "dash.js 4.5.2: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "dash.js 5.2.1: actual SDK reports MSE capabilities and version", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / published DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "dash.js 5.2.1: native SDK track switch and paused seek without ArtPlayer", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "published core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: explicit update reflects external SDK selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: explicit update reflects external SDK selection", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + }, + { + "engine": "webkit", + "title": "candidate core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "capability": { + "sdk": false, + "mse": "undefined", + "managed": "undefined", + "avc": false, + "aac": false + }, + "pluginLoaded": false + } + ], + "failures": [ + { + "engine": "chromium", + "file": "dash-sdk.spec.js", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "errors": [ + "Error: expect(received).toBeGreaterThan(expected)\n\nExpected: > 6.2\nReceived: 6\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate\n\n 274 | })\n 275 | await page.locator('#play').click()\n> 276 | await expect.poll(() => page.evaluate(() => (window.art?.video || window.nativeVideo).currentTime)).toBeGreaterThan(6.2)\n | ^\n 277 | }\n 278 |\n 279 | for (const core of ['published', 'candidate']) {\n at seekAtEmptyBoundary (D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js:276:103)\n at D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js:328:5" + ], + "attachments": [ + { + "name": "dash-sdk-state", + "data": { + "errors": [], + "events": [ + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 190.0999999642372, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/init-0.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 191.19999998807907, + "mediaType": "video", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 191.5, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/init-2.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 192.69999998807907, + "mediaType": "audio", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 196.0999999642372, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-0-00001.m4s", + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 197, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00001.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 197.5999999642372, + "mediaType": "video", + "bufferLevel": 1.999999, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 197.5999999642372, + "mediaType": "video", + "state": "bufferLoaded", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 198, + "mediaType": "video", + "bufferLevel": 1.999999, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 198.19999998807907, + "mediaType": "audio", + "bufferLevel": 1.983999, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 198.19999998807907, + "mediaType": "audio", + "state": "bufferLoaded", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 198.19999998807907, + "mediaType": "audio", + "bufferLevel": 1.983999, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 202, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00002.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 202.39999997615814, + "mediaType": "audio", + "bufferLevel": 3.989333, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 202.39999997615814, + "mediaType": "audio", + "bufferLevel": 3.989333, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 557.1999999880791, + "mediaType": "video", + "bufferLevel": 1.811204, + "time": 0.188795 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 557.1999999880791, + "mediaType": "audio", + "bufferLevel": 3.800538, + "time": 0.188795 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 593.6999999880791, + "mediaType": "video", + "bufferLevel": 1.774582, + "time": 0.225417 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 593.7999999523163, + "mediaType": "video", + "time": 0.225417 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 593.7999999523163, + "mediaType": "video", + "time": 0.225417 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 593.7999999523163, + "mediaType": "audio", + "bufferLevel": 3.7639159999999996, + "time": 0.225417 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 593.8999999761581, + "mediaType": "audio", + "time": 0.225417 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 593.8999999761581, + "mediaType": "audio", + "time": 0.225417 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 704.6999999880791, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/init-1.m4s", + "time": 0.335856 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 705, + "mediaType": "video", + "bufferLevel": 1.6638840000000001, + "time": 0.336115 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 709.6999999880791, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-1-00002.m4s", + "time": 0.3406 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 710.3999999761581, + "mediaType": "video", + "bufferLevel": 3.6586529999999997, + "time": 0.341346 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 710.3999999761581, + "mediaType": "video", + "bufferLevel": 3.6586529999999997, + "time": 0.341346 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 857.7999999523163, + "mediaType": "video", + "bufferLevel": 3.511217, + "time": 0.488782 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 857.8999999761581, + "mediaType": "audio", + "bufferLevel": 3.5005509999999997, + "time": 0.488782 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 920.3999999761581, + "mediaType": "video", + "bufferLevel": 3.4485979999999996, + "time": 0.551401 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 920.3999999761581, + "mediaType": "audio", + "bufferLevel": 3.437932, + "time": 0.551401 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1123.7999999523163, + "mediaType": "video", + "bufferLevel": 3.2456899999999997, + "time": 0.754309 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1123.7999999523163, + "mediaType": "audio", + "bufferLevel": 3.2350239999999997, + "time": 0.754309 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 1208.2999999523163, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00003.m4s", + "time": 0.839471 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1208.699999988079, + "mediaType": "audio", + "bufferLevel": 5.154254999999999, + "time": 0.840411 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1208.7999999523163, + "mediaType": "audio", + "bufferLevel": 5.154254999999999, + "time": 0.840411 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1280.8999999761581, + "mediaType": "video", + "bufferLevel": 3.087881, + "time": 0.912118 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1281, + "mediaType": "audio", + "bufferLevel": 5.082547999999999, + "time": 0.912118 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1389.5999999642372, + "mediaType": "video", + "bufferLevel": 2.978867, + "time": 1.021132 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1389.5999999642372, + "mediaType": "audio", + "bufferLevel": 4.973534, + "time": 1.021132 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1655.2999999523163, + "mediaType": "video", + "bufferLevel": 2.713269, + "time": 1.28673 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1655.3999999761581, + "mediaType": "audio", + "bufferLevel": 4.707936, + "time": 1.28673 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1921.199999988079, + "mediaType": "video", + "bufferLevel": 2.447192, + "time": 1.552807 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1921.2999999523163, + "mediaType": "audio", + "bufferLevel": 4.441858999999999, + "time": 1.552807 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2186.399999976158, + "mediaType": "video", + "bufferLevel": 2.182508, + "time": 1.817491 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2186.399999976158, + "mediaType": "audio", + "bufferLevel": 4.177175, + "time": 1.817491 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2451.899999976158, + "mediaType": "video", + "bufferLevel": 1.9171459999999998, + "time": 2.082853 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 2451.899999976158, + "mediaType": "video", + "time": 2.082853 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2451.899999976158, + "mediaType": "audio", + "bufferLevel": 3.9118129999999995, + "time": 2.082853 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2717.2999999523163, + "mediaType": "video", + "bufferLevel": 1.651043, + "time": 2.348956 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2717.2999999523163, + "mediaType": "audio", + "bufferLevel": 3.64571, + "time": 2.348956 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 2719.199999988079, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-1-00003.m4s", + "time": 2.350935 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2719.699999988079, + "mediaType": "video", + "bufferLevel": 3.6485339999999997, + "time": 2.351465 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2719.699999988079, + "mediaType": "video", + "bufferLevel": 3.6485339999999997, + "time": 2.351465 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2983.399999976158, + "mediaType": "video", + "bufferLevel": 3.385017, + "time": 2.614982 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2983.399999976158, + "mediaType": "audio", + "bufferLevel": 3.3796839999999997, + "time": 2.614982 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3076.899999976158, + "mediaType": "video", + "bufferLevel": 3.292465, + "time": 2.707534 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3076.899999976158, + "mediaType": "audio", + "bufferLevel": 3.2871319999999997, + "time": 2.707534 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3218.199999988079, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00004.m4s", + "time": 2.850401 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3218.599999964237, + "mediaType": "audio", + "bufferLevel": 5.149184999999999, + "time": 2.850814 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3218.699999988079, + "mediaType": "audio", + "bufferLevel": 5.149184999999999, + "time": 2.850814 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3248.599999964237, + "mediaType": "video", + "bufferLevel": 3.119856, + "time": 2.880143 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3248.599999964237, + "mediaType": "audio", + "bufferLevel": 5.119856, + "time": 2.880143 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3436.099999964237, + "mediaType": "video", + "bufferLevel": 2.932359, + "time": 3.06764 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3436.199999988079, + "mediaType": "audio", + "bufferLevel": 4.932359, + "time": 3.06764 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3487.599999964237, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.118973 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 3487.599999964237, + "mediaType": "audio", + "state": "bufferStalled", + "time": 3.118973 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3487.699999988079, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.118973 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3491.699999988079, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/init-3.m4s", + "time": 3.122991 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3491.899999976158, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.123258 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3496.699999988079, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00002.m4s", + "time": 3.127976 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3497.199999988079, + "mediaType": "audio", + "bufferLevel": 0.8607369999999999, + "time": 3.128596 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 3497.2999999523163, + "mediaType": "audio", + "state": "bufferLoaded", + "time": 3.128596 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3497.399999976158, + "mediaType": "audio", + "bufferLevel": 0.8607369999999999, + "time": 3.128596 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3501.2999999523163, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00003.m4s", + "time": 3.132635 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3501.699999988079, + "mediaType": "audio", + "bufferLevel": 2.8616179999999996, + "time": 3.133048 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3501.699999988079, + "mediaType": "audio", + "bufferLevel": 2.8616179999999996, + "time": 3.133048 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3505.5, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00004.m4s", + "time": 3.136867 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3506.7999999523163, + "mediaType": "audio", + "bufferLevel": 4.861943, + "time": 3.138056 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3506.7999999523163, + "mediaType": "audio", + "bufferLevel": 4.861943, + "time": 3.138056 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3513.7999999523163, + "mediaType": "video", + "bufferLevel": 2.855666, + "time": 3.144333 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3513.7999999523163, + "mediaType": "audio", + "bufferLevel": 4.855665999999999, + "time": 3.144333 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 3513.899999976158, + "mediaType": "audio", + "time": 3.144333 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 3513.899999976158, + "mediaType": "audio", + "time": 3.144333 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3539.399999976158, + "mediaType": "video", + "bufferLevel": 2.842561, + "time": 3.157438 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3539.5, + "mediaType": "audio", + "bufferLevel": 4.842561, + "time": 3.157438 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3795, + "mediaType": "video", + "bufferLevel": 2.842561, + "time": 3.157438 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3795, + "mediaType": "audio", + "bufferLevel": 4.842561, + "time": 3.157438 + }, + { + "name": "PLAYBACK_SEEKING", + "at": 4062.199999988079, + "time": 6, + "seekTime": 6 + } + ], + "mediaEvents": [ + { + "name": "play", + "at": 339.39999997615814, + "time": 0.011554, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 1.999999 + ] + ] + }, + { + "name": "playing", + "at": 339.7999999523163, + "time": 0.012127, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 1.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 593.5, + "time": 0.225242, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 1.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 857.6999999880791, + "time": 0.488671, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.989333 + ] + ] + }, + { + "name": "timeupdate", + "at": 1123.699999988079, + "time": 0.754204, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.989333 + ] + ] + }, + { + "name": "timeupdate", + "at": 1389.3999999761581, + "time": 1.020992, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 1655.199999988079, + "time": 1.286574, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 1921.199999988079, + "time": 1.552714, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 2186.2999999523163, + "time": 1.817354, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 2451.7999999523163, + "time": 2.082717, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 2717.099999964237, + "time": 2.348826, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 2983.2999999523163, + "time": 2.614854, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 5.994666 + ] + ] + }, + { + "name": "timeupdate", + "at": 3248.599999964237, + "time": 2.880038, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 5.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 3513.699999988079, + "time": 3.144208, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + }, + { + "name": "timeupdate", + "at": 3539.2999999523163, + "time": 3.157438, + "paused": true, + "readyState": 4, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + }, + { + "name": "pause", + "at": 3539.5, + "time": 3.157438, + "paused": true, + "readyState": 4, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + }, + { + "name": "seeking", + "at": 4062, + "time": 6, + "paused": true, + "readyState": 1, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + }, + { + "name": "play", + "at": 4106.699999988079, + "time": 6, + "paused": false, + "readyState": 1, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + }, + { + "name": "waiting", + "at": 4106.799999952316, + "time": 6, + "paused": false, + "readyState": 1, + "buffered": [ + [ + 1.984, + 5.999999 + ] + ] + } + ], + "nativePlay": "pending", + "tracks": [ + { + "id": 1, + "index": 1, + "lang": "en" + }, + { + "id": 2, + "index": 2, + "lang": "fr" + } + ], + "levels": [ + { + "qualityIndex": 0, + "height": 90 + }, + { + "qualityIndex": 1, + "height": 180 + } + ], + "buffered": [ + [ + 1.984, + 5.999999 + ] + ], + "paused": false, + "seeking": true, + "time": 6, + "width": 320, + "height": 180, + "readyState": 1, + "bufferState": { + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + "bufferEvents": [ + { + "name": "sourcebuffer:updateend", + "at": 190.69999998807907, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 0, + "video": [], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 192.5, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 0, + "video": [], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 197.39999997615814, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [ + [ + 0, + 1.983999 + ] + ], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.983999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 198, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [ + [ + 0, + 1.983999 + ] + ], + "levels": { + "video": 2, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 1.999999, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.983999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 202.19999998807907, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [ + [ + 0, + 1.999999 + ] + ], + "levels": { + "video": 2, + "audio": 1.984 + }, + "processors": [ + { + "type": "video", + "level": 1.999999, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 1.983999, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:play", + "at": 339.5, + "time": 0.011554, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 1.999999 + ] + ], + "levels": { + "video": 2, + "audio": 3.989 + }, + "processors": [ + { + "type": "video", + "level": 1.999999, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.989333, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:playing", + "at": 339.7999999523163, + "time": 0.012127, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 1.999999 + ] + ], + "levels": { + "video": 2, + "audio": 3.989 + }, + "processors": [ + { + "type": "video", + "level": 1.999999, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.989333, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 593.5999999642372, + "time": 0.225242, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 1.999999 + ] + ], + "levels": { + "video": 1.811, + "audio": 3.801 + }, + "processors": [ + { + "type": "video", + "level": 1.811204, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.800538, + "target": 2.811, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 704.8999999761581, + "time": 0.336066, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 1.999999 + ] + ], + "levels": { + "video": 1.775, + "audio": 3.764 + }, + "processors": [ + { + "type": "video", + "level": 1.774582, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.7639159999999996, + "target": 2.775, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 710.2999999523163, + "time": 0.341287, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.989333 + ] + ], + "levels": { + "video": 1.664, + "audio": 3.764 + }, + "processors": [ + { + "type": "video", + "level": 1.6638840000000001, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.7639159999999996, + "target": 2.6639999999999997, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 857.6999999880791, + "time": 0.488671, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.989333 + ] + ], + "levels": { + "video": 3.659, + "audio": 3.764 + }, + "processors": [ + { + "type": "video", + "level": 3.6586529999999997, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.7639159999999996, + "target": 4.659, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1123.699999988079, + "time": 0.754204, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.989333 + ] + ], + "levels": { + "video": 3.449, + "audio": 3.438 + }, + "processors": [ + { + "type": "video", + "level": 3.4485979999999996, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.437932, + "target": 4.449, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 1208.699999988079, + "time": 0.840361, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 3.246, + "audio": 3.235 + }, + "processors": [ + { + "type": "video", + "level": 3.2456899999999997, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.2350239999999997, + "target": 4.246, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1389.3999999761581, + "time": 1.020992, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 3.088, + "audio": 5.083 + }, + "processors": [ + { + "type": "video", + "level": 3.087881, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 5.082547999999999, + "target": 4.088, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1655.199999988079, + "time": 1.286574, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 2.979, + "audio": 4.974 + }, + "processors": [ + { + "type": "video", + "level": 2.978867, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.973534, + "target": 3.979, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1921.199999988079, + "time": 1.552714, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 2.713, + "audio": 4.708 + }, + "processors": [ + { + "type": "video", + "level": 2.713269, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.707936, + "target": 3.713, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2186.2999999523163, + "time": 1.817354, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 2.447, + "audio": 4.442 + }, + "processors": [ + { + "type": "video", + "level": 2.447192, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.441858999999999, + "target": 3.447, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2451.7999999523163, + "time": 2.082717, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 2.183, + "audio": 4.177 + }, + "processors": [ + { + "type": "video", + "level": 2.182508, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.177175, + "target": 3.183, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2717.199999988079, + "time": 2.348826, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.999999 + ] + ], + "levels": { + "video": 1.917, + "audio": 3.912 + }, + "processors": [ + { + "type": "video", + "level": 1.9171459999999998, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.9118129999999995, + "target": 2.917, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 2719.699999988079, + "time": 2.351421, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.994666 + ] + ], + "levels": { + "video": 1.651, + "audio": 3.646 + }, + "processors": [ + { + "type": "video", + "level": 1.651043, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.64571, + "target": 2.651, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2983.2999999523163, + "time": 2.614854, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.994666 + ] + ], + "levels": { + "video": 3.649, + "audio": 3.646 + }, + "processors": [ + { + "type": "video", + "level": 3.6485339999999997, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.64571, + "target": 4.649, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3218.599999964237, + "time": 2.850769, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.999999 + ] + ], + "levels": { + "video": 3.292, + "audio": 3.287 + }, + "processors": [ + { + "type": "video", + "level": 3.292465, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.2871319999999997, + "target": 4.292, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 3248.599999964237, + "time": 2.880038, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.999999 + ] + ], + "levels": { + "video": 3.292, + "audio": 5.149 + }, + "processors": [ + { + "type": "video", + "level": 3.292465, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 5.149184999999999, + "target": 4.292, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3487.5, + "time": 3.118894, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [], + "levels": { + "video": 2.932, + "audio": 4.932 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.932359, + "target": 3.932, + "complete": false, + "pruning": true, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3491.7999999523163, + "time": 3.123214, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [], + "levels": { + "video": 2.932, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 3.932, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3497.199999988079, + "time": 3.128548, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 3.989333 + ] + ], + "levels": { + "video": 2.932, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 3.932, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3501.699999988079, + "time": 3.132998, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.994666 + ] + ], + "levels": { + "video": 2.932, + "audio": 0.861 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0.8607369999999999, + "target": 3.932, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3506.599999964237, + "time": 3.137996, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.932, + "audio": 2.862 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 2.8616179999999996, + "target": 3.932, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 3513.699999988079, + "time": 3.144208, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.932, + "audio": 4.862 + }, + "processors": [ + { + "type": "video", + "level": 2.932359, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.861943, + "target": 3.932, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 3539.2999999523163, + "time": 3.157438, + "paused": true, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.856, + "audio": 4.856 + }, + "processors": [ + { + "type": "video", + "level": 2.855666, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.855665999999999, + "target": 3.856, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:pause", + "at": 3539.599999964237, + "time": 3.157438, + "paused": true, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "before-seek", + "at": 4061.699999988079, + "time": 3.157438, + "paused": true, + "seeking": false, + "readyState": 4, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "assigned-seek", + "at": 4061.899999976158, + "time": 6, + "paused": true, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:seeking", + "at": 4062, + "time": 6, + "paused": true, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:play", + "at": 4106.699999988079, + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:waiting", + "at": 4106.799999952316, + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 5.999999 + ] + ], + "levels": { + "video": 2.843, + "audio": 4.843 + }, + "processors": [ + { + "type": "video", + "level": 2.842561, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 4.842561, + "target": 3.843, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.999999 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 7.999999 + ] + ], + "timestampOffset": 0 + } + ] + } + ] + } + } + ], + "browserState": { + "url": "http://127.0.0.1:8084/test/player.html?core=candidate", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.8010.12 Safari/537.36", + "media": { + "source": "blob:http://127.0.0.1:8084/10791116-047d-4cdd-9e91-5ede09293e8d", + "width": 0, + "height": 0, + "duration": null, + "currentTime": 0 + } + } + }, + { + "engine": "firefox", + "file": "dash-sdk.spec.js", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "errors": [ + "Error: expect(received).toBeGreaterThan(expected)\n\nExpected: > 6.2\nReceived: 6\n\nCall Log:\n- Timeout 7000ms exceeded while waiting on the predicate\n\n 274 | })\n 275 | await page.locator('#play').click()\n> 276 | await expect.poll(() => page.evaluate(() => (window.art?.video || window.nativeVideo).currentTime)).toBeGreaterThan(6.2)\n | ^\n 277 | }\n 278 |\n 279 | for (const core of ['published', 'candidate']) {\n at seekAtEmptyBoundary (D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js:276:103)\n at D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js:328:5" + ], + "attachments": [ + { + "name": "dash-sdk-state", + "data": { + "errors": [], + "events": [ + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 215, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/init-0.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 216, + "mediaType": "video", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 216, + "mediaType": "audio", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 217, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/init-2.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 217, + "mediaType": "video", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 220, + "mediaType": "audio", + "bufferLevel": 0, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 224, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-0-00001.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 225, + "mediaType": "video", + "bufferLevel": 2, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 225, + "mediaType": "video", + "state": "bufferLoaded", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 225, + "mediaType": "video", + "bufferLevel": 2, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 226, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00001.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 227, + "mediaType": "audio", + "bufferLevel": 1.984, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 227, + "mediaType": "audio", + "state": "bufferLoaded", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 227, + "mediaType": "audio", + "bufferLevel": 1.984, + "time": 0 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 233, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00002.m4s", + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 233, + "mediaType": "audio", + "bufferLevel": 3.989333, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 233, + "mediaType": "audio", + "bufferLevel": 3.989333, + "time": 0 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 383, + "mediaType": "video", + "bufferLevel": 1.999971, + "time": 0.000029 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 383, + "mediaType": "video", + "time": 0.000029 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 383, + "mediaType": "video", + "time": 0.000029 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 383, + "mediaType": "audio", + "bufferLevel": 3.9893039999999997, + "time": 0.000029 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 383, + "mediaType": "audio", + "time": 0.000029 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 383, + "mediaType": "audio", + "time": 0.000029 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 582, + "mediaType": "video", + "bufferLevel": 1.833007, + "time": 0.166993 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 582, + "mediaType": "audio", + "bufferLevel": 3.8223399999999996, + "time": 0.166993 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 673, + "mediaType": "video", + "bufferLevel": 1.709339, + "time": 0.290661 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 673, + "mediaType": "audio", + "bufferLevel": 3.6986719999999997, + "time": 0.290661 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 732, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/init-1.m4s", + "time": 0.333437 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 732, + "mediaType": "video", + "bufferLevel": 1.666563, + "time": 0.333437 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 737, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-1-00002.m4s", + "time": 0.333437 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 738, + "mediaType": "video", + "bufferLevel": 3.666563, + "time": 0.333437 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 738, + "mediaType": "video", + "bufferLevel": 3.666563, + "time": 0.333437 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 932, + "mediaType": "video", + "bufferLevel": 3.460455, + "time": 0.539545 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 932, + "mediaType": "audio", + "bufferLevel": 3.449788, + "time": 0.539545 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 966, + "mediaType": "video", + "bufferLevel": 3.416391, + "time": 0.583609 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 966, + "mediaType": "audio", + "bufferLevel": 3.4057239999999998, + "time": 0.583609 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 1239, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00003.m4s", + "time": 0.833833 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1240, + "mediaType": "audio", + "bufferLevel": 5.160832999999999, + "time": 0.833833 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1240, + "mediaType": "audio", + "bufferLevel": 5.160832999999999, + "time": 0.833833 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1301, + "mediaType": "video", + "bufferLevel": 3.124691, + "time": 0.875309 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1301, + "mediaType": "audio", + "bufferLevel": 5.119357, + "time": 0.875309 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1505, + "mediaType": "video", + "bufferLevel": 2.877145, + "time": 1.122855 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1505, + "mediaType": "audio", + "bufferLevel": 4.871810999999999, + "time": 1.122855 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1758, + "mediaType": "video", + "bufferLevel": 2.624768, + "time": 1.375232 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 1758, + "mediaType": "audio", + "bufferLevel": 4.619434, + "time": 1.375232 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2049, + "mediaType": "video", + "bufferLevel": 2.333078, + "time": 1.666922 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2049, + "mediaType": "audio", + "bufferLevel": 4.327743999999999, + "time": 1.666922 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2549, + "mediaType": "video", + "bufferLevel": 1.8327719999999998, + "time": 2.167228 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 2549, + "mediaType": "video", + "time": 2.167228 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2549, + "mediaType": "audio", + "bufferLevel": 3.8274379999999995, + "time": 2.167228 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 2746, + "mediaType": "video", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-1-00003.m4s", + "time": 2.334543 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2747, + "mediaType": "video", + "bufferLevel": 3.665457, + "time": 2.334543 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2747, + "mediaType": "audio", + "bufferLevel": 3.6601229999999996, + "time": 2.334543 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2747, + "mediaType": "video", + "bufferLevel": 3.665457, + "time": 2.334543 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2747, + "mediaType": "video", + "bufferLevel": 3.665457, + "time": 2.334543 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2841, + "mediaType": "video", + "bufferLevel": 3.541099, + "time": 2.458901 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 2841, + "mediaType": "audio", + "bufferLevel": 3.5357649999999996, + "time": 2.458901 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3248, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-2-00004.m4s", + "time": 2.835319 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3248, + "mediaType": "video", + "bufferLevel": 3.164681, + "time": 2.835319 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3249, + "mediaType": "audio", + "bufferLevel": 5.164681, + "time": 2.835319 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3249, + "mediaType": "audio", + "bufferLevel": 5.164681, + "time": 2.835319 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3249, + "mediaType": "audio", + "bufferLevel": 5.164681, + "time": 2.835319 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3382, + "mediaType": "video", + "bufferLevel": 2.999766, + "time": 3.000234 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3382, + "mediaType": "audio", + "bufferLevel": 4.999766, + "time": 3.000234 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3566, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 3566, + "mediaType": "audio", + "state": "bufferStalled", + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3566, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.16706 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3577, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/init-3.m4s", + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3577, + "mediaType": "audio", + "bufferLevel": 0, + "time": 3.16706 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3582, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00002.m4s", + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3582, + "mediaType": "audio", + "bufferLevel": 0.8222729999999996, + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_STATE_CHANGED", + "at": 3582, + "mediaType": "audio", + "state": "bufferLoaded", + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3582, + "mediaType": "audio", + "bufferLevel": 0.8222729999999996, + "time": 3.16706 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3586, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00003.m4s", + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3587, + "mediaType": "audio", + "bufferLevel": 2.8276059999999994, + "time": 3.16706 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3587, + "mediaType": "audio", + "bufferLevel": 2.8276059999999994, + "time": 3.16706 + }, + { + "name": "FRAGMENT_LOADING_COMPLETED", + "at": 3594, + "mediaType": "audio", + "url": "http://127.0.0.1:8084/dash-fixture/chunk-3-00004.m4s", + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3594, + "mediaType": "audio", + "bufferLevel": 4.7923860000000005, + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3594, + "mediaType": "audio", + "bufferLevel": 4.7923860000000005, + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3629, + "mediaType": "video", + "bufferLevel": 2.792386, + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3629, + "mediaType": "audio", + "bufferLevel": 4.7923860000000005, + "time": 3.207614 + }, + { + "name": "TRACK_CHANGE_RENDERED", + "at": 3629, + "mediaType": "audio", + "time": 3.207614 + }, + { + "name": "QUALITY_CHANGE_RENDERED", + "at": 3629, + "mediaType": "audio", + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3775, + "mediaType": "video", + "bufferLevel": 2.792386, + "time": 3.207614 + }, + { + "name": "BUFFER_LEVEL_UPDATED", + "at": 3775, + "mediaType": "audio", + "bufferLevel": 4.7923860000000005, + "time": 3.207614 + }, + { + "name": "PLAYBACK_SEEKING", + "at": 4151, + "time": 6, + "seekTime": 6 + } + ], + "mediaEvents": [ + { + "name": "play", + "at": 382, + "time": 0, + "paused": false, + "readyState": 3, + "buffered": [ + [ + 0, + 2 + ] + ] + }, + { + "name": "playing", + "at": 382, + "time": 0, + "paused": false, + "readyState": 3, + "buffered": [ + [ + 0, + 2 + ] + ] + }, + { + "name": "timeupdate", + "at": 382, + "time": 0.000029, + "paused": false, + "readyState": 3, + "buffered": [ + [ + 0, + 2 + ] + ] + }, + { + "name": "timeupdate", + "at": 672, + "time": 0.290661, + "paused": false, + "readyState": 3, + "buffered": [ + [ + 0, + 2 + ] + ] + }, + { + "name": "timeupdate", + "at": 966, + "time": 0.583609, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 3.989333 + ] + ] + }, + { + "name": "timeupdate", + "at": 1505, + "time": 1.122855, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 4 + ] + ] + }, + { + "name": "timeupdate", + "at": 1757, + "time": 1.375232, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 4 + ] + ] + }, + { + "name": "timeupdate", + "at": 2048, + "time": 1.666922, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 4 + ] + ] + }, + { + "name": "timeupdate", + "at": 2549, + "time": 2.167228, + "paused": false, + "readyState": 3, + "buffered": [ + [ + 0, + 4 + ] + ] + }, + { + "name": "timeupdate", + "at": 2840, + "time": 2.458901, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 5.994666 + ] + ] + }, + { + "name": "timeupdate", + "at": 3382, + "time": 3.000234, + "paused": false, + "readyState": 4, + "buffered": [ + [ + 0, + 6 + ] + ] + }, + { + "name": "timeupdate", + "at": 3629, + "time": 3.207614, + "paused": true, + "readyState": 3, + "buffered": [ + [ + 1.984, + 6 + ] + ] + }, + { + "name": "pause", + "at": 3629, + "time": 3.207614, + "paused": true, + "readyState": 3, + "buffered": [ + [ + 1.984, + 6 + ] + ] + }, + { + "name": "seeking", + "at": 4151, + "time": 6, + "paused": true, + "readyState": 1, + "buffered": [ + [ + 1.984, + 6 + ] + ] + }, + { + "name": "play", + "at": 4196, + "time": 6, + "paused": false, + "readyState": 1, + "buffered": [ + [ + 1.984, + 6 + ] + ] + }, + { + "name": "waiting", + "at": 4196, + "time": 6, + "paused": false, + "readyState": 1, + "buffered": [ + [ + 1.984, + 6 + ] + ] + } + ], + "nativePlay": "pending", + "tracks": [ + { + "id": 1, + "index": 1, + "lang": "en" + }, + { + "id": 2, + "index": 2, + "lang": "fr" + } + ], + "levels": [ + { + "qualityIndex": 0, + "height": 90 + }, + { + "qualityIndex": 1, + "height": 180 + } + ], + "buffered": [ + [ + 1.984, + 6 + ] + ], + "paused": false, + "seeking": true, + "time": 6, + "width": 320, + "height": 180, + "readyState": 1, + "bufferState": { + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + "bufferEvents": [ + { + "name": "sourcebuffer:updateend", + "at": 217, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 0, + "video": [], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": true, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 220, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": false + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 224, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [], + "levels": { + "video": 0, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 0, + "target": 12, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 1.984, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 227, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 1, + "video": [ + [ + 0, + 1.984 + ] + ], + "levels": { + "video": 2, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 2, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 1.984 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 233, + "time": 0, + "paused": true, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 2, + "audio": 1.984 + }, + "processors": [ + { + "type": "video", + "level": 2, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 1.984, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:play", + "at": 382, + "time": 0, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 2, + "audio": 3.989 + }, + "processors": [ + { + "type": "video", + "level": 2, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.989333, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:playing", + "at": 382, + "time": 0, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 2, + "audio": 3.989 + }, + "processors": [ + { + "type": "video", + "level": 2, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.989333, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 382, + "time": 0.000029, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 2, + "audio": 3.989 + }, + "processors": [ + { + "type": "video", + "level": 2, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.989333, + "target": 3, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 672, + "time": 0.290661, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 1.833, + "audio": 3.822 + }, + "processors": [ + { + "type": "video", + "level": 1.833007, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.8223399999999996, + "target": 2.833, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 732, + "time": 0.333437, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 2 + ] + ], + "levels": { + "video": 1.709, + "audio": 3.699 + }, + "processors": [ + { + "type": "video", + "level": 1.709339, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.6986719999999997, + "target": 2.709, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 2 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 738, + "time": 0.333437, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 3.989333 + ] + ], + "levels": { + "video": 1.667, + "audio": 3.699 + }, + "processors": [ + { + "type": "video", + "level": 1.666563, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.6986719999999997, + "target": 2.667, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 966, + "time": 0.583609, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 3.989333 + ] + ], + "levels": { + "video": 3.46, + "audio": 3.45 + }, + "processors": [ + { + "type": "video", + "level": 3.460455, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.449788, + "target": 4.46, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 1239, + "time": 0.833833, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 4 + ] + ], + "levels": { + "video": 3.416, + "audio": 3.406 + }, + "processors": [ + { + "type": "video", + "level": 3.416391, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.4057239999999998, + "target": 4.416, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1505, + "time": 1.122855, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 4 + ] + ], + "levels": { + "video": 3.125, + "audio": 5.119 + }, + "processors": [ + { + "type": "video", + "level": 3.124691, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 5.119357, + "target": 4.125, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 1757, + "time": 1.375232, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 4 + ] + ], + "levels": { + "video": 2.877, + "audio": 4.872 + }, + "processors": [ + { + "type": "video", + "level": 2.877145, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.871810999999999, + "target": 3.877, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2048, + "time": 1.666922, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 4 + ] + ], + "levels": { + "video": 2.625, + "audio": 4.619 + }, + "processors": [ + { + "type": "video", + "level": 2.624768, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.619434, + "target": 3.625, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2549, + "time": 2.167228, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 0, + 4 + ] + ], + "levels": { + "video": 2.333, + "audio": 4.328 + }, + "processors": [ + { + "type": "video", + "level": 2.333078, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.327743999999999, + "target": 3.333, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 4 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 2747, + "time": 2.334543, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.994666 + ] + ], + "levels": { + "video": 3.665, + "audio": 3.66 + }, + "processors": [ + { + "type": "video", + "level": 3.665457, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.6601229999999996, + "target": 4.665, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 2840, + "time": 2.458901, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 5.994666 + ] + ], + "levels": { + "video": 3.665, + "audio": 3.66 + }, + "processors": [ + { + "type": "video", + "level": 3.665457, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 3.6601229999999996, + "target": 4.665, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3249, + "time": 2.835319, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 6 + ] + ], + "levels": { + "video": 3.165, + "audio": 5.165 + }, + "processors": [ + { + "type": "video", + "level": 3.164681, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 5.164681, + "target": 4.165, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 3382, + "time": 3.000234, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [ + [ + 0, + 6 + ] + ], + "levels": { + "video": 3.165, + "audio": 5.165 + }, + "processors": [ + { + "type": "video", + "level": 3.164681, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 5.164681, + "target": 4.165, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3565, + "time": 3.16706, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [], + "levels": { + "video": 3, + "audio": 5 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.999766, + "target": 4, + "complete": false, + "pruning": true, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3577, + "time": 3.16706, + "paused": false, + "seeking": false, + "readyState": 4, + "video": [], + "levels": { + "video": 3, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 4, + "complete": false, + "pruning": false, + "hasTarget": false + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3582, + "time": 3.16706, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 3.989333 + ] + ], + "levels": { + "video": 3, + "audio": 0 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0, + "target": 4, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 3.989333 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3586, + "time": 3.16706, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 5.994666 + ] + ], + "levels": { + "video": 3, + "audio": 0.822 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 0.8222729999999996, + "target": 4, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 5.994666 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "sourcebuffer:updateend", + "at": 3594, + "time": 3.207614, + "paused": false, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 3, + "audio": 2.828 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 2.8276059999999994, + "target": 4, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:timeupdate", + "at": 3629, + "time": 3.207614, + "paused": true, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 3, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.999766, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 4, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:pause", + "at": 3629, + "time": 3.207614, + "paused": true, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "before-seek", + "at": 4151, + "time": 3.207614, + "paused": true, + "seeking": false, + "readyState": 3, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "assigned-seek", + "at": 4151, + "time": 6, + "paused": true, + "seeking": true, + "readyState": 3, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:seeking", + "at": 4151, + "time": 6, + "paused": true, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:play", + "at": 4196, + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + }, + { + "name": "media:waiting", + "at": 4196, + "time": 6, + "paused": false, + "seeking": true, + "readyState": 1, + "video": [ + [ + 1.984, + 6 + ] + ], + "levels": { + "video": 2.792, + "audio": 4.792 + }, + "processors": [ + { + "type": "video", + "level": 2.792386, + "target": 2, + "complete": false, + "pruning": false, + "hasTarget": true + }, + { + "type": "audio", + "level": 4.7923860000000005, + "target": 3.792, + "complete": false, + "pruning": false, + "hasTarget": true + } + ], + "buffers": [ + { + "mime": "video/mp4;codecs=\"avc1.42c01e\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 0, + 6 + ] + ], + "timestampOffset": 0 + }, + { + "mime": "audio/mp4;codecs=\"mp4a.40.2\"", + "sourceState": "open", + "updating": false, + "ranges": [ + [ + 1.984, + 8 + ] + ], + "timestampOffset": 0 + } + ] + } + ] + } + } + ], + "browserState": { + "url": "http://127.0.0.1:8084/test/player.html?core=candidate", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0", + "media": { + "source": "", + "width": 0, + "height": 0, + "duration": null, + "currentTime": 0 + } + } + } + ], + "skipped": [ + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / published DASH / 4.5.2: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / published DASH / 4.5.2: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / candidate DASH / 4.5.2: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / candidate DASH 4.5.2: stable paused boundary seek preserves media and SDK ownership", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / candidate DASH 5.2.1: stable paused boundary seek preserves media and SDK ownership", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "dash.js 4.5.2: native SDK track switch and paused seek without ArtPlayer", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; no native DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 293, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "dash.js 5.2.1: native SDK track switch and paused seek without ArtPlayer", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; no native DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 293, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: explicit update reflects external SDK selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: explicit update reflects external SDK selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "published core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open quality settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: actual settings quality selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: SDK refresh preserves the open audio settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: actual settings audio selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: same SDK source replacement refreshes topology without plugin update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: asynchronous formatter error clears menus and explicit update recovers", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: SDK events refresh external selections without explicit update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: explicit update reflects external SDK selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 4.5.2: actual source topology replacement and owned cleanup", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open quality settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: actual settings quality selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: SDK refresh preserves the open audio settings panel", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: actual settings audio selection survives SDK refresh", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: same SDK source replacement refreshes topology without plugin update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: asynchronous formatter error clears menus and explicit update recovers", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: SDK events refresh external selections without explicit update", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: explicit update reflects external SDK selection", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "dash-sdk.spec.js", + "title": "candidate core / DASH 5.2.1: actual source topology replacement and owned cleanup", + "annotations": [ + { + "type": "skip", + "description": "Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\dash-sdk.spec.js", + "line": 129, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / published HLS: real decoding, manual quality, Auto and audio", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / published HLS: failed manifest and actual SDK teardown", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / published HLS: source switch drops SDK audio topology", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / candidate HLS: real decoding, manual quality, Auto and audio", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / candidate HLS: failed manifest and actual SDK teardown", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / candidate HLS: source switch drops SDK audio topology", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / published HLS: real Auto playback loses Auto label on update", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "published core / candidate HLS: SDK events synchronize Auto and audio without replacing menus", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / published HLS: real decoding, manual quality, Auto and audio", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / published HLS: failed manifest and actual SDK teardown", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / published HLS: source switch drops SDK audio topology", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / candidate HLS: real decoding, manual quality, Auto and audio", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / candidate HLS: failed manifest and actual SDK teardown", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / candidate HLS: source switch drops SDK audio topology", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / published HLS: real Auto playback loses Auto label on update", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-control.spec.js", + "title": "candidate core / candidate HLS: SDK events synchronize Auto and audio without replacing menus", + "annotations": [ + { + "type": "skip", + "description": "Bundled Windows WebKit exposes neither MediaSource nor ManagedMediaSource; this is an unverified playback environment, not compatibility approval", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-control.spec.js", + "line": 116, + "column": 8 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core / published plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core / candidate plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core: group changes reindex actual audio tracks and UI", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core: actual SDK detaches and reattaches to the same media", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core / published plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core / candidate plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core: group changes reindex actual audio tracks and UI", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core: actual SDK detaches and reattaches to the same media", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core / published plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core / candidate plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core: group changes reindex actual audio tracks and UI", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "published core: actual SDK detaches and reattaches to the same media", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core / published plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core / candidate plugin: actual worker playback, source replacement and cleanup", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core: group changes reindex actual audio tracks and UI", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + }, + { + "engine": "webkit", + "file": "hls-sdk.spec.js", + "title": "candidate core: actual SDK detaches and reattaches to the same media", + "annotations": [ + { + "type": "skip", + "description": "Windows WebKit has no MSE; explicit capability/error cleanup is tested separately", + "location": { + "file": "D:\\github\\ArtPlayer\\test\\browser\\hls-sdk.spec.js", + "line": 130, + "column": 10 + } + } + ] + } + ], + "limitations": [ + { + "engine": "webkit", + "file": "auto-thumbnail-pixels.spec.js", + "title": "Auto-thumbnail candidate verifies presented auto-thumbnail-timeline pixels and records fallback limits", + "annotation": { + "type": "remaining-initial-frame-risk", + "description": "webkit: no native presentation callback; cells 0-1 remain evidence only and cannot close AUTO-THUMB-PIXEL-01 or PKG-AUTO-THUMB-03." + } + }, + { + "engine": "webkit", + "file": "auto-thumbnail-pixels.spec.js", + "title": "Auto-thumbnail candidate verifies presented pattern pixels and records fallback limits", + "annotation": { + "type": "remaining-initial-frame-risk", + "description": "webkit: no native presentation callback; cells 0-1 remain evidence only and cannot close AUTO-THUMB-PIXEL-01 or PKG-AUTO-THUMB-03." + } + } + ] + }, + "source": { + "directory": "refactor/.cache/ci01-adaptive-source-report", + "report": { + "path": "refactor/.cache/ci01-adaptive-source-report/report.json", + "sha256": "ff148ca46f90e856211bf9ade8a4acb0eb9b59e91d64d1c8c6a4a1889b4647a7" + }, + "invocation": { + "path": "refactor/.cache/ci01-adaptive-source-report/invocation.json", + "sha256": "0dd27aa316cd29c8c21b74d77bd4b898a0c4cc7ba1f4d6af655036044bd517aa" + }, + "result": { + "scope": "source", + "exitCode": 0, + "signal": null, + "args": [ + "test", + "--config=playwright.source.config.js", + "--project=chromium", + "--workers=2", + "--grep", + "candidate core / candidate HLS: real decoding|candidate core / candidate DASH / 5.2.1: real MPD|Auto-thumbnail candidate verifies presented pattern pixels" + ] + }, + "stats": { + "startTime": "2026-09-14T18:29:19.815Z", + "duration": 37066.199, + "expected": 3, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "files": { + "chromium/auto-thumbnail-pixels.spec.js": { + "total": 1, + "passed": 1, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 1 + }, + "chromium/dash-sdk.spec.js": { + "total": 1, + "passed": 1, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 1 + }, + "chromium/hls-control.spec.js": { + "total": 1, + "passed": 1, + "failed": 0, + "skipped": 0, + "installedCandidate": 0, + "sourceCandidate": 1 + } + }, + "attempts": 3, + "identities": [ + { + "kind": "source-build", + "sha256": "61ebff9e0768230781fdb10489801fe189562d125d5d7e80d6dcf8374e8cf26c", + "cases": 1 + }, + { + "kind": "source-build", + "sha256": "5bd2e6b031996c2b42970a790769f6e91752cef76697522d0e57c6d8909fb568", + "cases": 1 + }, + { + "kind": "source-build", + "sha256": "10adca6e8613c7640193fab2b1b943652f234bfa0a12fca55c05e2246c3ed1c0", + "cases": 1 + } + ], + "sdks": [ + { + "name": "dashjs", + "version": "5.2.1", + "sha256": "4eacb0cc3525276666ca3f084611cdabb5a2264d128dfe0750fe106fbddd088f", + "files": { + "package/package.json": "f89fa389855d2a21b380fa69c84735da25bd93e3b9d7c39bd0d634493425fd8c", + "package/LICENSE.md": "f7cc4ba24850cc564766c75923d07c3d22fa27f304285f4d25ecffeaec964e28", + "package/index.d.ts": "03b420509a480f893bf8253232cfd28428dc0be5f254fefe99a91e65847c010e", + "package/dist/modern/umd/dash.all.min.js": "3a22b1f4576ab294f41e56f156cec7972a5f83edda379416778293ff22d2eb49" + } + }, + { + "name": "hls.js", + "version": "1.5.17", + "sha256": "8f9e60001992f59dbfb1dbc397e145743c41bb6dde233ec8a7974013c8a031fe", + "files": { + "package/package.json": "f2172b9942a23ffb46edd4af815cf1ea161db088e7f63dc518d30e55c95d6ae9", + "package/LICENSE": "ca8773cf798c7ed997d4dd7c8e23c348699f8d5b7462636694cc14de6cda12db", + "package/dist/hls.min.js": "484054e8cd03d3f6d1781fb7f402bdc318d8a4c527f933a95c624e27cc9a9470", + "package/src/hls.ts": "b3d3f797669e89bc8d05d2de2aae243ae110811d6738948f173d789cc1ac1f2d", + "package/src/controller/audio-track-controller.ts": "ff34f3cb29b66aa5fcba87758bb20d129b052a053808c150ce779e0ceb1e4626" + } + } + ], + "capabilities": [ + { + "engine": "chromium", + "title": "candidate core / candidate DASH / 5.2.1: real MPD decoding and UI selection", + "capability": { + "sdk": true, + "mse": "function", + "managed": "undefined", + "avc": true, + "aac": true + }, + "pluginLoaded": false + } + ], + "failures": [], + "skipped": [], + "limitations": [] + }, + "checks": [ + { + "path": "refactor/.cache/ci01-adaptive-packages.log", + "sha256": "a886b0c7b3d1843136ce3f4db1afa6442390a1134174aa6f51ece6fe4ece8fc0" + }, + { + "path": "refactor/.cache/ci01-adaptive-packages-final.log", + "sha256": "fb6f1287831f5292bede197f3ef9428637b996c31abdd39137df6437d6c4a325" + }, + { + "path": "refactor/.cache/ci01-adaptive-node.log", + "sha256": "9c134c496484fa62d70cd9f8b37032ebe9244dcedbd76194f905e717b5d613ed" + }, + { + "path": "refactor/.cache/ci01-adaptive-unit.log", + "sha256": "1a32d292cbcedcd0a50baf2c45e1ec20adcc2f83a1fe678d55871689bfd1a26a" + }, + { + "path": "refactor/.cache/ci01-adaptive-lint-initial.log", + "sha256": "2fddc3a82dc47aa78b1e50837a46c6d600292acbcd0a8910d21caedec208e3f4" + }, + { + "path": "refactor/.cache/ci01-adaptive-lint-fix.log", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "refactor/.cache/ci01-adaptive-lint.log", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "refactor/.cache/ci01-adaptive-types.log", + "sha256": "6bd564a17710a414587e9c44b09f5897bac7ca35f9f7e831b68f4114630a549a" + }, + { + "path": "refactor/.cache/ci01-adaptive-toolchain.log", + "sha256": "35e9ca3e673b0490ae59ac84ded7955bd2d4d442b6e5f5c724d6b0c435ef3a01" + }, + { + "path": "refactor/.cache/ci01-adaptive-ci.log", + "sha256": "dfbf70c9193a15ce9f60f2dd75d15ceca9722ebcf69178f3e815dc06f8d829c8" + }, + { + "path": "refactor/.cache/ci01-adaptive-actionlint.log", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "path": "refactor/.cache/ci01-adaptive-collection.log", + "sha256": "7f05b832cccdc507e0243a85727ec91467ffd5d12a41ddd6e26c2a269a4aa61d" + }, + { + "path": "refactor/.cache/ci01-adaptive-installed.log", + "sha256": "e894198ca067e12d22eb3729a25cbbf4587ea2939173623d23b6eaa9f49e7c93" + }, + { + "path": "refactor/.cache/ci01-adaptive-source.log", + "sha256": "49112516f6369ee1b9e52f520b1ad11697e85bb0db934d31c36cfc6674558d7b" + } + ], + "executableInputs": { + "refactor/scripts/ci-workflow.mjs": "71b682437614a939e81aa3bbe41a23e263ed34186f886472100b0d2ff7d6a895", + "scripts/browser-validation/scope.ts": "e70155502831cb52fd1ad75f7c64ea1e1fe1fbcccb544f4541f2565105864511", + "scripts/package-check.mjs": "532382f4dcf1e9e3bf9bde124d219d334440b58a986a3278b43c2079016b7558", + "test/browser-validation.test.js": "c71b1d8212465b64437d8bf28eb2ca485e1c7c854cb1bf5e10876f788c764282", + "test/browser/auto-thumbnail-lifecycle.spec.js": "875a04d9fe76309df8e27cceb5ac64ccd2142a5627c454a3de0bcb46233f1a51", + "test/browser/auto-thumbnail-pixels.spec.js": "10423d48ada982abeaee6d64728d81d5ad2b62f1b77086cf3d3ef3fa3ffb0aca", + "test/browser/dash-control.spec.js": "f82235bdd196bcd81468b553e2ec18833a4f5df773c4c2e28004a16f200ef574", + "test/browser/dash-sdk.spec.js": "e42f8c85fed89c1dd14ccb2ea2487df650469d172320ada7edd61e713e5a80da", + "test/browser/hls-control.spec.js": "8f82132d80659a726a517fc8100b6825c08369df8190ca96c6de96aed2df6d5d", + "test/browser/hls-sdk.spec.js": "a20df6f39ca8cb7e3f1a66b94778488acbb74520a90f6a48a62731e441e704f4", + "test/helpers/auto-thumbnail.js": "1622f3de7c9fa4e2c07c981b9f1159076b9d47a132f67e1da75ae37f2a142ec4", + "test/package-check.test.js": "4ddd1ca214a11b32f495c3b175fc9e3c0cfd49feae773474522c378f1aba0252" + }, + "limitations": [ + "Installed execution covers seven newly added files, not the complete twelve-package collection. Old Chapter/Audio failures remain independently open.", + "Native Windows WebKit MSE capability skips and Auto Thumbnail initial-cell diagnostics are not playback/pixel acceptance.", + "Controlled DASH uses a stub SDK with real core DOM/MP4; real SDK integrations and no-plugin SDK controls remain distinct.", + "SDK capability records describe an available candidate but do not claim plugin loading; selected plugin attachments apply only to integration cases.", + "Generic installed runtime/type consumer remains core/chapter only; all module forms, devices and release readiness retain their own gates.", + "Initial package preparation failure is preserved; HLS packaging fix is a separate PKG-HLS-PACK-01 completion commit." + ] +} diff --git a/refactor/changes/2026-09-15-CI-01-adaptive-installed.md b/refactor/changes/2026-09-15-CI-01-adaptive-installed.md new file mode 100644 index 000000000..0bd1509d2 --- /dev/null +++ b/refactor/changes/2026-09-15-CI-01-adaptive-installed.md @@ -0,0 +1,65 @@ +# CI-01 HLS、DASH 与 Auto Thumbnail 接入安装范围 + +## 实现与边界 + +十二包统一安装名单新增 HLS Control、DASH Control、Auto Thumbnail。七个浏览器 +文件通过 browser-candidate.js 加载校验后的实际 tarball 安装文件,拒绝显式产物 +覆盖和 Auto Thumbnail frozen baseline;缺失/过期/篡改安装不退回源码。 +既有源码入口保留,DASH 安装入口额外拒绝诊断 SDK 替换与恢复探针,防止诊断变体 +混入正常验收。source 模式仍保留明确诊断开关。相关守卫负例已纳入 Node 测试。 + +HLS 使用固定实际 SDK、manifest/分片,区分无 Worker 与有真实 Worker 两套用例。 +DASH 的 controlled 文件仅验证真实核心 DOM/原生 MP4 和受控 SDK 方法;SDK 文件 +加载真实固定 dash.js 4.5.2/5.2.1。SDK 能力附件只记录可用候选,不声称加载插件; +dash-plugin-inputs 记录集成场景的实际选包。纯原生 SDK 无插件对照保持不变。 +Auto Thumbnail 使用原生视频、Canvas 和 JPEG,但核心宿主是 stub;无原生帧呈现 +回调时首两格仍为诊断而非通过,AUTO-THUMB-PIXEL-01 不因此关闭。 + +首次十二包准备被 HLS 的 tsconfig 泄漏拦截;PKG-HLS-PACK-01 已独立修复并提交 +7094cf6f9,详细旧/中间/新归档证据另存。CI 接入未改公开生产 API、超时、SDK 或 +断言;lint 自动修正了改动文件内既有 finally 括号格式。无新增依赖,根锁不变。 + +## 工程验证 + +Windows x64,固定 Node 24.21.0、Yarn 1.22.22。run-UmEnUj 实际十二包构建/pack/ +隔离安装/冻结复装和完整成员核验通过。通用消费者仍只覆盖 core/chapter 的 +36 运行时、5 旧类型模式、8 精确类型模式,不是全生态 Node/类型准入。 + +相关单元 278/278、工程 47/47、scoped lint、library 严格类型、严格工具链、CI +工作流契约与 actionlint 1.7.12 通过;未调用 shellcheck/pyflakes。初始 lint +四处格式错误日志保留,最终改正。完整 installed collection 为 32 文件/1137 项; +本轮实跑仅新增七文件三引擎 375 项,workers=2,retries=0,结果见机器证据。 + +## 维护与剩余工作 + +维护入口为三个包的 ARCHITECTURE.md、scripts/browser-validation/README.md、 +test/package/README.md。所有实际失败、能力跳过和原生对照单独计数;保留旧 +AUDIO-BUFFER-01 与 CHAPTER-TIMING-01 报告,未在本次重复执行此前插件集合。 +CI-01 与各包真实 SDK/设备/完整分发门槛继续开放。尚未运行远端 Actions,也没有 +发布候选授权。回退此检查点恢复九包 installed 范围;HLS 排除配置修复为独立提交。 + +## 实测结果 + +Chromium 153.0.8010.12、Firefox 155.0、WebKit 26.6。375 项共 293 通过、 +2 失败、80 跳过,耗时 350.040 秒,实际退出 1、无重试;Chromium/Firefox 各 +124 通过与 1 失败,WebKit 45 通过与 80 能力跳过。32 文件/1137 项只是完整 +collection,本轮没有重跑其他二十五文件,不能将新子集结果当成完整十二包 CI。 + +两项失败均为裸 dash.js 4.5.2 的暂停边界 seek,重新播放后 currentTime 停在 6, +未达到大于 6.2 的断言。该路径未创建 ArtPlayer 实例,候选插件没有参与;已有 +DASH-SEEK-01 与候选插件的精确版本修复分别保留。实际候选插件集成通过并不修复 +裸 SDK。状态附件在清理后的视频尺寸/时间归零不能被反推为失败当时的解码状态。 +原始 trace/截图/报告保留在 ci01-adaptive-installed-report,读取旧附件路径时映射 +到归档目录的 results;没有重跑覆盖、升级 SDK 或放宽 seek 断言。 + +80 项跳过全部在 Windows WebKit:DASH SDK 48、HLS 主矩阵 16、HLS SDK 矩阵 16。 +实际能力记录仍验证无 MSE 的边界,不等于适配流播放通过。Auto Thumbnail 三引擎 +候选 27 项通过,但 WebKit 两个像素用例对首两格仅记录诊断,不能关闭首帧风险。 +测试输入附件确认 221 项选择已验证候选安装文件,其中含能力边界与受控宿主, +不把该数当作 221 项真实自适应解码。固定 SDK 为 hls.js 1.5.17/1.7.2、dash.js +4.5.2/5.2.1,来源和实际包成员哈希均保留。 + +刻意继承 installed map 后,source 入口清除了它。三个 Chromium 源码定向用例 +(HLS 解码/选择、DASH 5.2.1 MPD/选择、Auto Thumbnail pattern 像素)3/3 通过, +附件均为 source-build;这不重验所有源码文件。所有结果见 +[机器证据](../baselines/ci-adaptive-installed-validation.json)。 diff --git a/refactor/ci-setup.md b/refactor/ci-setup.md index 34acf99c1..990caa9b9 100644 --- a/refactor/ci-setup.md +++ b/refactor/ci-setup.md @@ -2,7 +2,7 @@ 浏览器CI现在分别执行 `yarn test:browser:source` 和 `yarn test:browser:installed`。前者清除继承的安装map并保留全部spec;后者要求已 -核验的core/chapter/Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles安装,执行明确列出的installed子集。两步不 +核验的core/chapter/Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles/HLS Control/DASH Control/Auto Thumbnail安装,执行明确列出的installed子集。两步不 吞失败,普通失败后仍保存另一范围的证据,分别上传browser-source/browser-installed。 入口与报告规则见[维护说明](../scripts/browser-validation/README.md)。source全量 耗时/60分钟预算、其余插件安装矩阵与远端运行仍待CI-01/CI-04,不计为已通过。 diff --git a/refactor/plan.md b/refactor/plan.md index bc38fb5ff..5b9e02768 100644 --- a/refactor/plan.md +++ b/refactor/plan.md @@ -509,7 +509,7 @@ - ENG-09: [记录](changes/2026-09-12-ENG-09-integration.md) [记录](baselines/engineering-integration.json) - ENG-10: [记录](changes/2026-09-10-ENG-10-test-reliability.md) [记录](test-reliability.md) - ENG-11: [记录](build-analysis.md) [记录](baselines/bundle-attribution.json) [记录](changes/2026-09-11-ENG-11-build-analysis.md) -- CI-01: [记录](ci-setup.md) [记录](changes/2026-09-13-CI-01-matrix-summary.md) [记录](baselines/ci-matrix-validation.json) [记录](changes/2026-09-13-CI-01-node-consumers.md) [记录](baselines/node-consumer-validation.json) [记录](changes/2026-09-14-CI-01-installed-full.md) [记录](baselines/ci-installed-full-validation.json) [记录](changes/2026-09-14-CI-01-source-chromium.md) [记录](baselines/ci-source-chromium-validation.json) [记录](changes/2026-09-15-CI-01-ads-installed.md) [记录](baselines/ci-ads-installed-validation.json) [记录](changes/2026-09-15-CI-01-subtitles-installed.md) [记录](baselines/ci-subtitles-installed-validation.json) +- CI-01: [记录](ci-setup.md) [记录](changes/2026-09-13-CI-01-matrix-summary.md) [记录](baselines/ci-matrix-validation.json) [记录](changes/2026-09-13-CI-01-node-consumers.md) [记录](baselines/node-consumer-validation.json) [记录](changes/2026-09-14-CI-01-installed-full.md) [记录](baselines/ci-installed-full-validation.json) [记录](changes/2026-09-14-CI-01-source-chromium.md) [记录](baselines/ci-source-chromium-validation.json) [记录](changes/2026-09-15-CI-01-ads-installed.md) [记录](baselines/ci-ads-installed-validation.json) [记录](changes/2026-09-15-CI-01-subtitles-installed.md) [记录](baselines/ci-subtitles-installed-validation.json) [记录](changes/2026-09-15-CI-01-adaptive-installed.md) [记录](baselines/ci-adaptive-installed-validation.json) - CI-02: [记录](changes/2026-09-14-CI-02-pages-artifact.md) [记录](baselines/pages-artifact-validation.json) [记录](pages-deployment.md) - PILOT-01: [记录](changes/2026-09-10-PILOT-01-chapter.md) [记录](baselines/pilot-validation.json) - CORE-01: [记录](changes/2026-09-10-CORE-01-typed-utils.md) [记录](baselines/core-utils-validation.json) diff --git a/refactor/progress.md b/refactor/progress.md index b106253f1..92b5d9629 100644 --- a/refactor/progress.md +++ b/refactor/progress.md @@ -1,5 +1,13 @@ # 进度与证据 +## CI-01 自适应控制和自动缩略图接入安装矩阵 + +十二包实际安装通过,清单扩展到 32 文件/1137 项。新增七文件三引擎实跑 +375 项:293 通过、2 裸 dash.js 4.5.2 seek 失败、80 Windows WebKit MSE 能力 +跳过。Auto Thumbnail 首帧限制仍保留,未把能力诊断计为通过。源码定向 3/3、 +相关单元 278/278、工程 47/47 通过;见[记录](changes/2026-09-15-CI-01-adaptive-installed.md)。 +CI-01 继续 doing,197/263 完成;后续补齐其余安装覆盖并审查全矩阵耗时与失败归类。 + ## PKG-HLS-PACK-01 修正实现配置进入 npm 包 十二包安装准备发现 HLS 的内部 tsconfig 未排除。已修正 .npmignore,实际旧包 diff --git a/refactor/risks.json b/refactor/risks.json index e6586d029..aa0f4e15f 100644 --- a/refactor/risks.json +++ b/refactor/risks.json @@ -3080,10 +3080,13 @@ "refactor/changes/2026-09-14-CI-01-source-chromium.md", "refactor/baselines/ci-source-chromium-validation.json", "refactor/changes/2026-09-14-PKG-DASH-SEEK-01-buffer-metrics.md", - "refactor/baselines/dash-seek-recovery-validation.json" + "refactor/baselines/dash-seek-recovery-validation.json", + "refactor/changes/2026-09-15-CI-01-adaptive-installed.md", + "refactor/baselines/ci-adaptive-installed-validation.json" ], "compatibleResolution": "PKG-DASH-SEEK-01 已在候选插件按精确版本和真实空缓冲同步 SDK 指标,新旧核心及两引擎严格跳转通过。裸 SDK 4.5.2 和冻结旧插件仍保留原始失败;不伪造媒体事件、不偏移 seek、不强制升级 SDK,完整组合及发布验收仍开放。", - "closureCriteria": "原失败的新旧核心/插件组合有确定根因与对应修复/可验证环境边界;原生对照及原顺序、原目标回归成立,后续偶然通过不能关闭。" + "closureCriteria": "原失败的新旧核心/插件组合有确定根因与对应修复/可验证环境边界;原生对照及原顺序、原目标回归成立,后续偶然通过不能关闭。", + "workspaceState": "CI-01 十二包安装扩展中,裸 SDK 4.5.2 在 Chromium/Firefox 的恢复时间仍为 6,原断言大于 6.2 失败;候选插件集成通过不关闭裸 SDK 原始缺陷,完整失败报告保留。" }, { "id": "ADS-TYPE-01", @@ -4259,11 +4262,13 @@ "refactor/changes/2026-09-14-PKG-AUTO-THUMB-03-first-seek.md", "refactor/baselines/auto-thumbnail-first-seek.json", "refactor/changes/2026-09-14-PKG-AUTO-THUMB-03-native-decoder.md", - "refactor/baselines/auto-thumbnail-native-decoder.json" + "refactor/baselines/auto-thumbnail-native-decoder.json", + "refactor/changes/2026-09-15-CI-01-adaptive-installed.md", + "refactor/baselines/ci-adaptive-installed-validation.json" ], "compatibleResolution": "Establish actual decoded-frame readiness for the existing timeline/grid and preserve silent independent extraction; do not waive colored pixel checks as unsupported media. Intrinsic-size hidden/opacity/clip/visible rendering crossed with current/readyState/first-loadeddata-event strategies still misses the unique first frame in all 12 Windows WebKit profiles. Correct Firefox frames retain totalVideoFrames=0, so that counter cannot be a portable readiness gate. Do not reintroduce these unvalidated workarounds. First-seek diagnostics additionally exclude drawing the first loadeddata frame without seek, one/two RAF waits, post-seek RAF waits and verified forward/back seeking on the recorded Windows WebKit host. The warm comparison first had an invalid stale-event completion, then a timeout; final bounded retries verify actual [1,1,0] seeking and still miss purple. Controls retain purple. These are exclusions, not production fixes.", "closureCriteria": "Candidate source and artifacts generate usable sampled pixels on native browser controls with lifecycle checks; supported Safari and core combinations remain explicit final gates.", - "workspaceState": "The frames module now waits for native presentation and seek completion on capable browsers. Chromium/Firefox source/main/legacy assert all five cells including first purple frame, second red cell, legitimate black and presentation times. Callback-less Windows WebKit first two cells remain diagnostic, later cells asserted; physical Safari/core combinations remain open. 84 native lifecycle/pixel cases passed with explicit held native-frame vs Blob-fallback paths; 19 new Node cases fail 17 ways on prior checkpoint and all 52 current cases pass per candidate. Risk and task03 remain open. Native-only18-case Windows probe also misses the purple first frame in all6 WebKit26.6 cases (hidden/visible paused and immediate play-pause, original and no-B-frame H.264);12 Chromium/Firefox controls recover it. No ArtPlayer/plugin is imported, narrowing but not resolving the native surface boundary. Rate/offset/layout explorations failed and must not be reintroduced as assumed fixes." + "workspaceState": "The frames module now waits for native presentation and seek completion on capable browsers. Chromium/Firefox source/main/legacy assert all five cells including first purple frame, second red cell, legitimate black and presentation times. Callback-less Windows WebKit first two cells remain diagnostic, later cells asserted; physical Safari/core combinations remain open. 84 native lifecycle/pixel cases passed with explicit held native-frame vs Blob-fallback paths; 19 new Node cases fail 17 ways on prior checkpoint and all 52 current cases pass per candidate. Risk and task03 remain open. Native-only18-case Windows probe also misses the purple first frame in all6 WebKit26.6 cases (hidden/visible paused and immediate play-pause, original and no-B-frame H.264);12 Chromium/Firefox controls recover it. No ArtPlayer/plugin is imported, narrowing but not resolving the native surface boundary. Rate/offset/layout explorations failed and must not be reintroduced as assumed fixes. CI-01 实际安装候选三引擎生命周期/像素 27 项通过;Windows WebKit 两个像素用例仍明确仅验证后面三格,首两格为诊断。没有将此结果用于关闭原首帧风险或认定完整核心组合。" }, { "id": "VTT-THUMB-DIST-01", diff --git a/refactor/scripts/ci-workflow.mjs b/refactor/scripts/ci-workflow.mjs index ee7977808..969353291 100644 --- a/refactor/scripts/ci-workflow.mjs +++ b/refactor/scripts/ci-workflow.mjs @@ -90,7 +90,7 @@ export function validateCIWorkflow(source) { const vueIndex = browser.steps.findIndex(step => step.run === 'yarn test:vue-consumer 2>&1 | tee refactor/.cache/ci/vue-consumer.log') assert(vueIndex > consumerIndex && !Object.hasOwn(browser.steps[vueIndex], 'if'), 'Run Vue installed consumers after restoring canonical Node') assert(browser.steps.some(step => step.uses?.startsWith('actions/upload-artifact@') && step.if === 'always()' && step.with.path.split('\n').includes('refactor/.cache/vue-consumer-*/')), 'Retain Vue consumer failure evidence') - const extraIndex = browser.steps.findIndex(step => step.run?.startsWith('yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles ')) + const extraIndex = browser.steps.findIndex(step => step.run?.startsWith('yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles,artplayer-plugin-hls-control,artplayer-plugin-dash-control,artplayer-plugin-auto-thumbnail ')) const sourceEngineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:source 2>&1 | tee refactor/.cache/ci/browser-source.log') const engineIndex = browser.steps.findIndex(step => step.run === 'yarn test:browser:installed 2>&1 | tee refactor/.cache/ci/browser-installed.log') assert(extraIndex > Math.max(consumerIndex, reactIndex, vueIndex) && extraIndex < engineIndex, 'Prepare installed Ambilight/Canvas/Document PiP/Ads after consumer probes and before browser checks') diff --git a/refactor/tasks.json b/refactor/tasks.json index 6c32eebf6..34a1f62fa 100644 --- a/refactor/tasks.json +++ b/refactor/tasks.json @@ -766,7 +766,9 @@ "changes/2026-09-15-CI-01-ads-installed.md", "baselines/ci-ads-installed-validation.json", "changes/2026-09-15-CI-01-subtitles-installed.md", - "baselines/ci-subtitles-installed-validation.json" + "baselines/ci-subtitles-installed-validation.json", + "changes/2026-09-15-CI-01-adaptive-installed.md", + "baselines/ci-adaptive-installed-validation.json" ] }, { diff --git a/scripts/browser-validation/README.md b/scripts/browser-validation/README.md index 81c402960..9dbdde6f6 100644 --- a/scripts/browser-validation/README.md +++ b/scripts/browser-validation/README.md @@ -14,8 +14,8 @@ also retains explicit historical and committed-artifact cases; its name does not promise that every dependency is rebuilt from current source in every test. `yarn test:browser:installed` requires ARTPLAYER_BROWSER_ARTIFACTS from -`yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles`. -Both launcher and config validate the selected nine packages' installed hashes +`yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles,artplayer-plugin-hls-control,artplayer-plugin-dash-control,artplayer-plugin-auto-thumbnail`. +Both launcher and config validate the selected twelve packages' installed hashes and source/build freshness. `scope.ts` lists the currently supported installed test files. This is a growing installed subset, not full ecosystem acceptance. Source checks remain complete when the installed list grows. @@ -74,3 +74,12 @@ not be counted as successful feature acceptance. Shared Node/type consumers reta the core/chapter scope. See ../../refactor/changes/2026-09-15-CI-01-subtitles-installed.md for the executed subset and results; extending collection does not revalidate the previous Chapter failure or establish a green complete matrix. + +HLS Control, DASH Control and Auto Thumbnail add seven installed files. HLS/DASH +real SDK cases retain frozen release and media hashes; controlled DASH DOM cases +are separate from adaptive playback. DASH SDK capability probes do not load the +plugin; dash-plugin-inputs identifies actual plugin integration. Installed mode +rejects diagnostic SDK patches/debug replacements and synthetic recovery probes, +while source diagnostics remain explicit. Auto Thumbnail uses native media/JPEG +with a stub host and retains its presentation/fallback pixel limitations. See +../../refactor/changes/2026-09-15-CI-01-adaptive-installed.md for executed results. diff --git a/scripts/browser-validation/scope.ts b/scripts/browser-validation/scope.ts index 2f45a5201..389f687cb 100644 --- a/scripts/browser-validation/scope.ts +++ b/scripts/browser-validation/scope.ts @@ -2,7 +2,7 @@ import type { PlaywrightTestConfig } from '@playwright/test' import assert from 'node:assert/strict' export type BrowserScope = 'source' | 'installed' -export const installedPackages = ['artplayer', 'artplayer-plugin-chapter', 'artplayer-plugin-ambilight', 'artplayer-proxy-canvas', 'artplayer-plugin-document-pip', 'artplayer-plugin-ads', 'artplayer-plugin-audio-track', 'artplayer-plugin-vtt-thumbnail', 'artplayer-plugin-multiple-subtitles'] +export const installedPackages = ['artplayer', 'artplayer-plugin-chapter', 'artplayer-plugin-ambilight', 'artplayer-proxy-canvas', 'artplayer-plugin-document-pip', 'artplayer-plugin-ads', 'artplayer-plugin-audio-track', 'artplayer-plugin-vtt-thumbnail', 'artplayer-plugin-multiple-subtitles', 'artplayer-plugin-hls-control', 'artplayer-plugin-dash-control', 'artplayer-plugin-auto-thumbnail'] export const installedTests = [ 'playback.spec.js', 'lifecycle.spec.js', @@ -29,16 +29,27 @@ export const installedTests = [ 'multiple-subtitles-combinations.spec.js', 'multiple-subtitles-ass.spec.js', 'multiple-subtitles-switch.spec.js', + 'hls-control.spec.js', + 'hls-sdk.spec.js', + 'dash-control.spec.js', + 'dash-sdk.spec.js', + 'auto-thumbnail.spec.js', + 'auto-thumbnail-lifecycle.spec.js', + 'auto-thumbnail-pixels.spec.js', ] export function browserInvocation(scope: string, args: string[], environment: NodeJS.ProcessEnv) { assert(scope === 'source' || scope === 'installed', 'Choose source or installed browser scope') assert(!args.some(arg => /^(?:--(?:config|reporter|output|pass-with-no-tests)(?:=|$)|-c)/.test(arg)), 'Do not override browser scope configuration or evidence output') const env: NodeJS.ProcessEnv = { ...environment, ARTPLAYER_BROWSER_SCOPE: scope } - if (scope === 'source') + if (scope === 'source') { delete env.ARTPLAYER_BROWSER_ARTIFACTS - else + } + else { assert(env.ARTPLAYER_BROWSER_ARTIFACTS, 'Installed browser checks require ARTPLAYER_BROWSER_ARTIFACTS') + assert(!env.ARTPLAYER_DASH_DIAGNOSTIC_SDK || env.ARTPLAYER_DASH_DIAGNOSTIC_SDK === 'none', 'Installed browser checks require the unchanged DASH SDK') + assert(!['ARTPLAYER_DASH_DIAGNOSE_STALL', 'ARTPLAYER_DASH_DIAGNOSE_GETTER', 'ARTPLAYER_DASH_DIAGNOSE_METRICS'].some(name => env[name] === '1'), 'Installed browser checks cannot use DASH recovery diagnostics') + } return { scope, env, args: ['test', `--config=playwright.${scope}.config.js`, ...args], directory: `refactor/.cache/browser-${scope}` } } diff --git a/scripts/package-check.mjs b/scripts/package-check.mjs index 38fdac7df..bd079d4db 100644 --- a/scripts/package-check.mjs +++ b/scripts/package-check.mjs @@ -77,6 +77,9 @@ export async function checkPackages({ release = false, include = [] } = {}) { 'artplayer-proxy-canvas': async () => (await import('../refactor/scripts/canvas-contract.mjs')).verifyCanvasContract(), 'artplayer-plugin-document-pip': async () => (await import('../refactor/scripts/dpip-contract.mjs')).verifyDpipContract(), 'artplayer-plugin-ads': async () => (await import('../refactor/scripts/ads-contract.mjs')).verifyAdsContract(), + 'artplayer-plugin-hls-control': async () => (await import('../refactor/scripts/hls-contract.mjs')).verifyHlsContract(), + 'artplayer-plugin-dash-control': async () => (await import('../refactor/scripts/dash-contract.mjs')).verifyDashContract(), + 'artplayer-plugin-auto-thumbnail': async () => (await import('../refactor/scripts/auto-thumbnail-contract.mjs')).verifyAutoThumbnailContract(), 'artplayer-plugin-audio-track': async () => (await import('../refactor/scripts/audio-contract.mjs')).verifyAudioContract(), 'artplayer-plugin-vtt-thumbnail': async () => (await import('../refactor/scripts/vtt-thumbnail-contract.mjs')).verifyVttThumbnailContract(), 'artplayer-plugin-multiple-subtitles': async () => (await import('../refactor/scripts/multiple-subtitles-contract.mjs')).verifyMultipleSubtitlesContract(), diff --git a/test/browser-validation.test.js b/test/browser-validation.test.js index 8bed29f65..dab8f4c6f 100644 --- a/test/browser-validation.test.js +++ b/test/browser-validation.test.js @@ -31,6 +31,18 @@ test('Browser invocation rejects ambiguous scopes and output/configuration overr assert.throws(() => browserInvocation('source', [flag], {}), /Do not override/) }) +test('Installed validation rejects diagnostic SDK substitutions and recovery probes', () => { + const base = { ARTPLAYER_BROWSER_ARTIFACTS: '/installed/map.json' } + for (const mode of ['upstream4', 'bufferlevel4']) { + const env = { ...base, ARTPLAYER_DASH_DIAGNOSTIC_SDK: mode } + assert.throws(() => browserInvocation('installed', [], env), /unchanged DASH SDK/) + assert.equal(browserInvocation('source', [], env).env.ARTPLAYER_DASH_DIAGNOSTIC_SDK, mode) + } + for (const name of ['ARTPLAYER_DASH_DIAGNOSE_STALL', 'ARTPLAYER_DASH_DIAGNOSE_GETTER', 'ARTPLAYER_DASH_DIAGNOSE_METRICS']) + assert.throws(() => browserInvocation('installed', [], { ...base, [name]: '1' }), /recovery diagnostics/) + assert.equal(browserInvocation('installed', [], { ...base, ARTPLAYER_DASH_DIAGNOSTIC_SDK: 'none' }).env.ARTPLAYER_DASH_DIAGNOSTIC_SDK, 'none') +}) + for (const code of [0, 17]) { test(`Browser runner preserves actual child exit ${code} and source input identity`, () => { const root = fs.mkdtempSync(path.join(os.tmpdir(), 'artplayer-browser-runner-')) diff --git a/test/browser/auto-thumbnail-lifecycle.spec.js b/test/browser/auto-thumbnail-lifecycle.spec.js index c97404760..3a68e7ee0 100644 --- a/test/browser/auto-thumbnail-lifecycle.spec.js +++ b/test/browser/auto-thumbnail-lifecycle.spec.js @@ -108,7 +108,9 @@ for (const variant of ['destroy', 'restart', 'complete', 'frame-destroy', 'frame throw new Error('No owned encoding deadline') probe.encodingDeadline.callback() } - else probe.art.emit(scenario.replace('frame-', '')) + else { + probe.art.emit(scenario.replace('frame-', '')) + } if (probe.blobs[0]) { probe.blobs[0].callback(probe.blobs[0].blob) probe.blobs[0].callback(probe.blobs[0].blob) @@ -136,14 +138,16 @@ for (const variant of ['destroy', 'restart', 'complete', 'frame-destroy', 'frame probe.restore() return { before, after, video, canvasDimensions, publishedImage, final, blobs, pendingDeadlines: probe.timers.size, warnings: probe.warnings, heldFrames: probe.frames.length, frameSupport: probe.frameSupport, result: probe.result } }, scenario) - await testInfo.attach('auto-thumbnail-candidate-native-lifecycle', { contentType: 'application/json', body: JSON.stringify({ scenario, useDefault, sha256: hash(implementation.code), scope: 'Actual HTTP decoding/seek/JPEG and held native presentation callback lifecycle with a stub player host. Frame scenarios use a held Blob fallback only when native frame callbacks are absent. Pixel acceptance is separate; AUTO-THUMB-PIXEL-01 remains open.', ...state }) }) + await testInfo.attach('auto-thumbnail-candidate-native-lifecycle', { contentType: 'application/json', body: JSON.stringify({ scenario, useDefault, sha256: hash(implementation.code), provenance: implementation.provenance, scope: 'Actual HTTP decoding/seek/JPEG and held native presentation callback lifecycle with a stub player host. Frame scenarios use a held Blob fallback only when native frame callbacks are absent. Pixel acceptance is separate; AUTO-THUMB-PIXEL-01 remains open.', ...state }) }) expect(state.result).toEqual({ name: 'artplayerPluginAutoThumbnail' }) expect(state.pendingDeadlines).toBe(0) if (scenario === 'encoding-timeout') { expect(state.warnings).toHaveLength(1) expect(state.warnings[0][1]).toContain('encoding timed out') } - else expect(state.warnings).toEqual([]) + else { + expect(state.warnings).toEqual([]) + } expect(state.before).toEqual(scenario === 'complete' ? { urls: 1, updates: 2 } : { urls: 0, updates: 0 }) expect(state.after).toEqual(state.before) expect(state.video).toEqual({ connected: false, src: null, readyState: 0, paused: true, handlers: [true, true, true, true] }) diff --git a/test/browser/auto-thumbnail-pixels.spec.js b/test/browser/auto-thumbnail-pixels.spec.js index f1f42e795..0280830f9 100644 --- a/test/browser/auto-thumbnail-pixels.spec.js +++ b/test/browser/auto-thumbnail-pixels.spec.js @@ -91,6 +91,7 @@ for (const media of ['auto-thumbnail-timeline', 'pattern']) { }) await testInfo.attach('auto-thumbnail-candidate-hidden-pixels', { contentType: 'application/json', body: JSON.stringify({ sha256: hash(implementation.code), + provenance: implementation.provenance, media, scope: 'All five cells are asserted where native frame presentation callbacks are available. Without that capability only cells 2-4 are asserted, with cells 0-1 recorded as unresolved diagnostics under AUTO-THUMB-PIXEL-01. Native HTTP/JPEG and a stub player host, not a core integration.', ...state, diff --git a/test/browser/dash-control.spec.js b/test/browser/dash-control.spec.js index 5ecda9c0f..9bb6eb5d5 100644 --- a/test/browser/dash-control.spec.js +++ b/test/browser/dash-control.spec.js @@ -2,7 +2,7 @@ import assert from 'node:assert/strict' import fs from 'node:fs' import process from 'node:process' import { ensureArchive, hash, readMember } from '../../refactor/scripts/releases.mjs' -import { compilePackage } from '../helpers/load.js' +import { browserCandidate } from '../helpers/browser-candidate.js' import { expect, test } from './fixtures.js' let publishedCode @@ -14,9 +14,9 @@ test.beforeAll(async () => { const bytes = readMember(await ensureArchive(release), member) assert.equal(hash(bytes), release.files[member]) publishedCode = bytes.toString() - assert(!process.env.ARTPLAYER_BROWSER_ARTIFACTS, 'Controlled DASH source tests do not represent installed SDK/package acceptance') - sourceCode = process.env.ARTPLAYER_DASH_ARTIFACT ? fs.readFileSync(process.env.ARTPLAYER_DASH_ARTIFACT, 'utf8') : await compilePackage(release.name, 'umd') - evidence = { published: release, sourceSHA256: hash(sourceCode), candidate: process.env.ARTPLAYER_DASH_ARTIFACT || 'workspace source build', scope: 'Real ArtPlayer DOM and native MP4 with controlled SDK methods. No dash.js instance, MPD, ABR or adaptive media validation.' } + const candidate = await browserCandidate(release.name, process.env.ARTPLAYER_DASH_ARTIFACT) + sourceCode = candidate.code + evidence = { published: release, sourceSHA256: hash(sourceCode), candidate: candidate.provenance, scope: 'Real ArtPlayer DOM and native MP4 with controlled SDK methods. No dash.js instance, MPD, ABR or adaptive media validation.' } }) test.afterEach(async ({ page }, testInfo) => { const state = await page.evaluate(() => ({ @@ -37,7 +37,7 @@ test.afterEach(async ({ page }, testInfo) => { } }) async function openDash(page, core, plugin, sdk, testInfo) { - await testInfo.attach('controlled-dash-inputs', { contentType: 'application/json', body: JSON.stringify(evidence) }) + await testInfo.attach('controlled-dash-inputs', { contentType: 'application/json', body: JSON.stringify({ ...evidence, core, plugin, selected: plugin === 'published' ? { kind: 'published', sha256: hash(publishedCode) } : evidence.candidate }) }) await page.goto(`/test/player.html?core=${core}`) await page.addScriptTag({ content: plugin === 'published' ? publishedCode : sourceCode }) await page.evaluate((sdk) => { diff --git a/test/browser/dash-sdk.spec.js b/test/browser/dash-sdk.spec.js index 54f696ac3..07dd37c7b 100644 --- a/test/browser/dash-sdk.spec.js +++ b/test/browser/dash-sdk.spec.js @@ -2,7 +2,7 @@ import assert from 'node:assert/strict' import fs from 'node:fs' import process from 'node:process' import { ensureArchive, hash, readMember } from '../../refactor/scripts/releases.mjs' -import { compilePackage } from '../helpers/load.js' +import { browserCandidate } from '../helpers/browser-candidate.js' import { observeDashBuffers } from './dash-buffer-observer.js' import { probeBufferGetter, probeBufferMetric } from './dash-seek-diagnostics.js' import { expect, test } from './fixtures.js' @@ -10,6 +10,7 @@ import { expect, test } from './fixtures.js' const sdks = new Map() const media = new Map() let candidate +let candidateProvenance let published let mediaManifest let pluginRelease @@ -18,6 +19,7 @@ assert(['none', 'upstream4', 'bufferlevel4'].includes(diagnosticSDK), 'Unknown d const recoveryModes = ['ARTPLAYER_DASH_DIAGNOSE_STALL', 'ARTPLAYER_DASH_DIAGNOSE_GETTER', 'ARTPLAYER_DASH_DIAGNOSE_METRICS'].filter(name => process.env[name] === '1') assert(recoveryModes.length <= 1, 'Choose only one DASH recovery diagnostic') assert(!recoveryModes.length || diagnosticSDK === 'none', 'Recovery diagnostics require the unchanged published SDK') +assert(!process.env.ARTPLAYER_BROWSER_ARTIFACTS || (diagnosticSDK === 'none' && recoveryModes.length === 0), 'Installed DASH checks cannot use SDK or recovery diagnostics') test.beforeAll(async () => { const baseline = JSON.parse(fs.readFileSync(new URL('../../refactor/baselines/dash-sdk.json', import.meta.url))) @@ -44,7 +46,9 @@ test.beforeAll(async () => { const bytes = readMember(await ensureArchive(pluginRelease), 'package/dist/artplayer-plugin-dash-control.js') assert.equal(hash(bytes), pluginRelease.files['package/dist/artplayer-plugin-dash-control.js']) published = bytes.toString() - candidate = process.env.ARTPLAYER_DASH_ARTIFACT ? fs.readFileSync(process.env.ARTPLAYER_DASH_ARTIFACT, 'utf8') : await compilePackage('artplayer-plugin-dash-control', 'umd') + const input = await browserCandidate('artplayer-plugin-dash-control', process.env.ARTPLAYER_DASH_ARTIFACT) + candidate = input.code + candidateProvenance = input.provenance mediaManifest = JSON.parse(fs.readFileSync(new URL('./media/dash/manifest.json', import.meta.url))) for (const [name, expected] of Object.entries(mediaManifest.files)) { assert(/^[\w.-]+$/.test(name)) @@ -116,7 +120,7 @@ async function loadSDK(page, version, core, testInfo) { await page.evaluate(observeDashBuffers) await page.addScriptTag({ content: sdk.code }) const capability = await page.evaluate(() => ({ sdk: window.dashjs.supportsMediaSource(), mse: typeof window.MediaSource, managed: typeof window.ManagedMediaSource, avc: Boolean(window.MediaSource?.isTypeSupported('video/mp4; codecs="avc1.42c01e"')), aac: Boolean(window.MediaSource?.isTypeSupported('audio/mp4; codecs="mp4a.40.2"')) })) - await testInfo.attach('dash-sdk-inputs', { contentType: 'application/json', body: JSON.stringify({ sdk: sdk.release, codeMember: sdk.diagnostic?.member || sdk.codeMember, diagnostic: sdk.diagnostic, pluginRelease, candidateSHA256: hash(candidate), candidate: process.env.ARTPLAYER_DASH_ARTIFACT || 'workspace source build', media: mediaManifest, capability }) }) + await testInfo.attach('dash-sdk-inputs', { contentType: 'application/json', body: JSON.stringify({ sdk: sdk.release, codeMember: sdk.diagnostic?.member || sdk.codeMember, diagnostic: sdk.diagnostic, pluginRelease, candidateSHA256: hash(candidate), availableCandidate: candidateProvenance, pluginLoaded: false, media: mediaManifest, capability }) }) return capability } @@ -124,6 +128,7 @@ async function openDash(page, version, core, plugin, testInfo) { const capability = await loadSDK(page, version, core, testInfo) test.skip(!capability.sdk, 'Actual SDK reports no MediaSource support; this engine has no DASH playback acceptance') await routeMedia(page) + await testInfo.attach('dash-plugin-inputs', { contentType: 'application/json', body: JSON.stringify({ version, core, plugin, selected: plugin === 'published' ? { kind: 'published', sha256: hash(published) } : candidateProvenance }) }) await page.addScriptTag({ content: plugin === 'published' ? published : candidate }) await page.evaluate(() => { window.sdkErrors = [] diff --git a/test/browser/hls-control.spec.js b/test/browser/hls-control.spec.js index 768755cd9..6a676d8f0 100644 --- a/test/browser/hls-control.spec.js +++ b/test/browser/hls-control.spec.js @@ -2,7 +2,7 @@ import assert from 'node:assert/strict' import fs from 'node:fs' import process from 'node:process' import { ensureArchive, hash, readMember } from '../../refactor/scripts/releases.mjs' -import { compilePackage } from '../helpers/load.js' +import { browserCandidate } from '../helpers/browser-candidate.js' import { expect, test } from './fixtures.js' let sdkCode @@ -38,11 +38,8 @@ test.beforeAll(async () => { } sdkCode = await code(sdk.release, 'package/dist/hls.min.js') publishedCode = await code(plugin.release, 'package/dist/artplayer-plugin-hls-control.js') - // This task exercises source builds. Installed artifacts are a separate HLS-06 gate. - assert(!process.env.ARTPLAYER_BROWSER_ARTIFACTS, 'HLS source fixture cannot masquerade as an installed plugin') - sourceCode = process.env.ARTPLAYER_HLS_ARTIFACT - ? fs.readFileSync(process.env.ARTPLAYER_HLS_ARTIFACT, 'utf8') - : await compilePackage('artplayer-plugin-hls-control', 'umd') + const candidate = await browserCandidate('artplayer-plugin-hls-control', process.env.ARTPLAYER_HLS_ARTIFACT) + sourceCode = candidate.code const manifest = JSON.parse(fs.readFileSync(new URL('./media/hls/manifest.json', import.meta.url))) media = new Map() for (const [name, expected] of Object.entries(manifest.files)) { @@ -52,11 +49,11 @@ test.beforeAll(async () => { assert.equal(bytes.length, expected.bytes) media.set(name, bytes) } - evidence = { sdk: sdk.release, plugin: plugin.release, sourceSHA256: hash(sourceCode), candidate: process.env.ARTPLAYER_HLS_ARTIFACT || 'workspace source build', media: manifest, limitations: ['SDK worker disabled', 'local deterministic media', 'not an isolated installed package', 'no physical device certification'] } + evidence = { sdk: sdk.release, plugin: plugin.release, sourceSHA256: hash(sourceCode), candidate: candidate.provenance, media: manifest, limitations: ['SDK worker disabled', 'local deterministic media', 'no physical device certification'] } }) async function openHls(page, core, plugin, testInfo, manifest = 'master.m3u8') { - await testInfo.attach('hls-inputs', { contentType: 'application/json', body: JSON.stringify(evidence) }) + await testInfo.attach('hls-inputs', { contentType: 'application/json', body: JSON.stringify({ ...evidence, core, plugin, selected: plugin === 'published' ? { kind: 'published', sha256: hash(publishedCode) } : evidence.candidate }) }) await page.route('**/hls-fixture/**', async (route) => { const name = new URL(route.request().url()).pathname.split('/').at(-1) const bytes = media.get(name) diff --git a/test/browser/hls-sdk.spec.js b/test/browser/hls-sdk.spec.js index 99c98deea..e9b08771c 100644 --- a/test/browser/hls-sdk.spec.js +++ b/test/browser/hls-sdk.spec.js @@ -3,22 +3,22 @@ import { Buffer } from 'node:buffer' import fs from 'node:fs' import process from 'node:process' import { ensureArchive, hash, readMember } from '../../refactor/scripts/releases.mjs' -import { compilePackage } from '../helpers/load.js' +import { browserCandidate } from '../helpers/browser-candidate.js' import { observeWorkers } from '../helpers/worker-observer.js' import { expect, test } from './fixtures.js' const matrix = JSON.parse(fs.readFileSync(new URL('../../refactor/baselines/hls-sdk-matrix.json', import.meta.url))) const grouped = fs.readFileSync(new URL('./fixtures/hls-grouped.m3u8', import.meta.url), 'utf8') let candidate +let candidateProvenance let published const sdks = new Map() const media = new Map() test.beforeAll(async () => { - assert(!process.env.ARTPLAYER_BROWSER_ARTIFACTS, 'HLS installed artifact map remains a separate HLS-06 gate') - candidate = process.env.ARTPLAYER_HLS_ARTIFACT - ? fs.readFileSync(process.env.ARTPLAYER_HLS_ARTIFACT, 'utf8') - : await compilePackage('artplayer-plugin-hls-control', 'umd') + const input = await browserCandidate('artplayer-plugin-hls-control', process.env.ARTPLAYER_HLS_ARTIFACT) + candidate = input.code + candidateProvenance = input.provenance const baseline = JSON.parse(fs.readFileSync(new URL('../../refactor/baselines/hls-control-release.json', import.meta.url))) const bytes = readMember(await ensureArchive(baseline.release), 'package/dist/artplayer-plugin-hls-control.js') assert.equal(hash(bytes), baseline.release.files['package/dist/artplayer-plugin-hls-control.js']) @@ -55,7 +55,7 @@ test.afterEach(async ({ page }, testInfo) => { }) async function open(page, testInfo, release, core, plugin = 'candidate', manifest = 'master.m3u8') { - await testInfo.attach('hls-sdk-inputs', { contentType: 'application/json', body: JSON.stringify({ sdk: release, core, plugin, pluginSHA256: hash(plugin === 'candidate' ? candidate : published), candidate: process.env.ARTPLAYER_HLS_ARTIFACT || 'workspace source build', media: Object.fromEntries([...media].map(([name, bytes]) => [name, hash(bytes)])), enableWorker: true }) }) + await testInfo.attach('hls-sdk-inputs', { contentType: 'application/json', body: JSON.stringify({ sdk: release, core, plugin, pluginSHA256: hash(plugin === 'candidate' ? candidate : published), selected: plugin === 'candidate' ? candidateProvenance : { kind: 'published', sha256: hash(published) }, media: Object.fromEntries([...media].map(([name, bytes]) => [name, hash(bytes)])), enableWorker: true }) }) await page.route('**/hls-sdk-fixture/**', async (route) => { const name = new URL(route.request().url()).pathname.split('/').at(-1) const bytes = media.get(name) diff --git a/test/helpers/auto-thumbnail.js b/test/helpers/auto-thumbnail.js index f42d6f81b..580ecde9f 100644 --- a/test/helpers/auto-thumbnail.js +++ b/test/helpers/auto-thumbnail.js @@ -1,10 +1,10 @@ -import fs from 'node:fs' +import assert from 'node:assert/strict' import process from 'node:process' import vm from 'node:vm' import { transform } from 'esbuild' import { verifyAutoThumbnailContract } from '../../refactor/scripts/auto-thumbnail-contract.mjs' import { readMember } from '../../refactor/scripts/releases.mjs' -import { compilePackage } from './load.js' +import { browserCandidate } from './browser-candidate.js' export async function autoThumbnailHistorical() { const { baseline, archives, sources } = await verifyAutoThumbnailContract() @@ -26,9 +26,11 @@ export async function autoThumbnailHistorical() { } export async function autoThumbnailCandidate() { - if (process.env.ARTPLAYER_AUTO_THUMBNAIL_BASELINE === '1') + if (process.env.ARTPLAYER_AUTO_THUMBNAIL_BASELINE === '1') { + assert(!process.env.ARTPLAYER_BROWSER_ARTIFACTS, 'Installed auto-thumbnail checks cannot use the frozen workspace') return (await autoThumbnailHistorical()).find(item => item.name === 'frozen-workspace-js') - return { name: 'candidate', code: process.env.ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT ? fs.readFileSync(process.env.ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT, 'utf8') : await compilePackage('artplayer-plugin-auto-thumbnail', 'umd') } + } + return { name: 'candidate', ...await browserCandidate('artplayer-plugin-auto-thumbnail', process.env.ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT) } } // Controlled media events and deferred encodes are not evidence of native decoding. diff --git a/test/package-check.test.js b/test/package-check.test.js index 15c743acf..5b6ce574d 100644 --- a/test/package-check.test.js +++ b/test/package-check.test.js @@ -8,6 +8,7 @@ import { checkFiles, checkPackages, publishedConsumer } from '../scripts/package import { removeConsumer, runtimeConsumer } from '../scripts/package-consumer.mjs' import { emitterContracts } from './contracts/emitter.js' import { ambilightCandidate } from './helpers/ambilight.js' +import { autoThumbnailCandidate } from './helpers/auto-thumbnail.js' import { browserCandidate } from './helpers/browser-candidate.js' import { canvasCandidate } from './helpers/canvas.js' import { dpipCandidate } from './helpers/dpip.js' @@ -20,6 +21,7 @@ test('Additional browser packages cannot be mistaken for full release consumer a test('Explicit installed plugin maps never fall back to source or frozen workspace', async () => { const keys = ['ARTPLAYER_BROWSER_ARTIFACTS', 'ARTPLAYER_AMBILIGHT_BASELINE', 'ARTPLAYER_CANVAS_BASELINE', 'ARTPLAYER_DPIP_BASELINE', 'ARTPLAYER_DPIP_ARTIFACT', 'ARTPLAYER_VTT_THUMBNAIL_BASELINE', 'ARTPLAYER_VTT_THUMBNAIL_ARTIFACT', 'ARTPLAYER_MULTIPLE_SUBTITLES_ARTIFACT'] + keys.push('ARTPLAYER_AUTO_THUMBNAIL_BASELINE', 'ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT') const previous = Object.fromEntries(keys.map(key => [key, process.env[key]])) try { process.env.ARTPLAYER_BROWSER_ARTIFACTS = path.resolve('refactor/.cache/absent-installed-plugin-map.json') @@ -31,6 +33,18 @@ test('Explicit installed plugin maps never fall back to source or frozen workspa delete process.env.ARTPLAYER_VTT_THUMBNAIL_BASELINE delete process.env.ARTPLAYER_VTT_THUMBNAIL_ARTIFACT delete process.env.ARTPLAYER_MULTIPLE_SUBTITLES_ARTIFACT + delete process.env.ARTPLAYER_AUTO_THUMBNAIL_BASELINE + delete process.env.ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT + await assert.rejects(autoThumbnailCandidate(), { code: 'ENOENT' }) + process.env.ARTPLAYER_AUTO_THUMBNAIL_BASELINE = '1' + await assert.rejects(autoThumbnailCandidate(), /cannot use the frozen workspace/) + delete process.env.ARTPLAYER_AUTO_THUMBNAIL_BASELINE + process.env.ARTPLAYER_AUTO_THUMBNAIL_ARTIFACT = 'override.js' + await assert.rejects(autoThumbnailCandidate(), /cannot override artplayer-plugin-auto-thumbnail artifact/) + for (const name of ['artplayer-plugin-hls-control', 'artplayer-plugin-dash-control']) { + await assert.rejects(browserCandidate(name), { code: 'ENOENT' }) + await assert.rejects(browserCandidate(name, 'override.js'), new RegExp(`cannot override ${name} artifact`)) + } await assert.rejects(ambilightCandidate(), { code: 'ENOENT' }) await assert.rejects(canvasCandidate(), { code: 'ENOENT' }) await assert.rejects(dpipCandidate(), { code: 'ENOENT' }) diff --git a/test/package/README.md b/test/package/README.md index 60effadfe..bb12b01a4 100644 --- a/test/package/README.md +++ b/test/package/README.md @@ -9,8 +9,8 @@ step through `ARTPLAYER_BROWSER_ARTIFACTS`. See browser scope and the remaining package-specific release gates. Run `yarn test:package` with the pinned Node and Yarn after a frozen install. The -default consumer scope is core and chapter. For Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles browser work, -run `yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles`. +default consumer scope is core and chapter. For Ambilight/Canvas/Document PiP/Ads/Audio Track/VTT Thumbnail/Multiple Subtitles/HLS Control/DASH Control/Auto Thumbnail browser work, +run `yarn test:package --include=artplayer-plugin-ambilight,artplayer-proxy-canvas,artplayer-plugin-document-pip,artplayer-plugin-ads,artplayer-plugin-audio-track,artplayer-plugin-vtt-thumbnail,artplayer-plugin-multiple-subtitles,artplayer-plugin-hls-control,artplayer-plugin-dash-control,artplayer-plugin-auto-thumbnail`. These four additional packages have reviewed published contracts and use the same source snapshot/build/pack/offline-install/frozen-reinstall pipeline. Installed files are copied only after archive hash checks. The report explicitly separates