Files
ArtPlayer/refactor/baselines/asr-fallback-validation.json
T

4632 lines
167 KiB
JSON

{
"schemaVersion": 1,
"task": "PKG-ASR-08",
"capturedAt": "2026-09-13T07:39:57.953Z",
"baseCommit": "3e3bed2b93f0dc34eeeab07d2f6deef855bfc885",
"correction": "Only captured fallback uses recorder -> gain(0) -> destination. No raw captured speaker route; external owner remains intact.",
"publicSignatureChanged": false,
"versionChanged": false,
"dependenciesAdded": [],
"red": {
"file": "refactor/.cache/asr08-fallback-red/report.json",
"sha256": "fcd1e985915fd2dd213e5d5bdd1ba2e17826a26b590d950ead1614f4085f9b98",
"failed": 2,
"observation": "Both candidate cores produced a second native ASR output while video was muted on Chromium."
},
"branchProbe": {
"file": "refactor/.cache/asr08-native-branch-probe/report.json",
"sha256": "f17e17ca9d408ee0eb4a0e18aa21123258a61d0b90e9526fc3b0fc1bd843e9ab",
"failed": 4,
"observation": "Firefox accepted duplicate native element bindings and did not enter capture fallback. Both external and ASR branches produced signal. Remains ASR-FOREIGN-01."
},
"browserMode": "Chromium natural duplicate-binding rejection. Firefox explicitly controlled rejection with native captureStream/Worklet/tracks/analyser. Windows WebKit lacks WebAudio.",
"browsers": [
{
"mode": "source",
"file": "refactor/.cache/asr08-browser-source/report.json",
"sha256": "4d9ab4b2c097da308cda4ffccef599a56dba82cfe6c7fc2fce3ea0dfdeecf4ab",
"passed": 28,
"skipped": 14,
"rows": [
{
"title": "ASR 2.0.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.0.0",
"core": "published",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.0.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.0.0",
"core": "candidate",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.0.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.0.0",
"core": "published",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.0.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.0.0",
"core": "candidate",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR 2.0.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.0.0",
"core": "published",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR 2.0.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.0.0",
"core": "candidate",
"pluginSha256": "30c7b1fc92a262cda8c3aba63afea9c6c038f52c057039d1c6aa957baed155b6",
"integrity": "sha512-nXTf2drMSKnHRbyU9CQ+3o7Jsf1Meam2O9T8LqYakIr18ag/+i71p2x9zdFrLz16Xa6jfQgKeddmU5r3sXp4LA==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"integrity": "sha512-15gXff458PAx9LeJxKzZEvmpFhfwKUfSLgb1Mfr7Xb/ZGsnE+6EA7ezTnO5S55W5mFExjv/e95iOIXP4ijuruQ==",
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"integrity": null,
"candidate": "workspace source",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + published: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08762481388661633,
"asr": [
0.08758629723718069
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0.08888106836226659
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08836963739741921,
"asr": [
0.08873759885352435
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08759580548385439,
"asr": [
0.08776218864356003
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4169,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0.08871286074040662
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08800560294657865,
"asr": [
0.08888106836226659
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08759580548385439,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08802307825410978,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08843834429457656,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4192,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4263,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4247,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08798611880382642,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08800639246669537,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08862216379888067,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4192,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4245,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08875186186068326,
"asr": [
0.08875186186068326
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4215,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0.08853254925784836
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4258,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08854881078207408,
"asr": [
0.08818815547122286
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4307,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4258,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08774571319741767,
"asr": [
0.08774571319741767
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0.0887048021485559
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08785763309746902,
"asr": [
0.08864678897747748
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08854340470395779,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4183,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4252,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08892189663503984,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08866202715264984,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.0880712446666184,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08824565096595674,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08790303719713795,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + candidate: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + published: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "published",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + candidate: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "2.1.0",
"core": "candidate",
"pluginSha256": "7f975b131a9ea207f88a157aafec778bc4906230500db9b30f5bbfbf327b251d",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "17f0b26199a13a40338f51365c55ef4bd9c0f12edb9e4a4c2ce61904ea044edf",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR 2.1.0 + published: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
},
{
"title": "ASR 2.1.0 + candidate: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
}
]
},
{
"mode": "main",
"file": "refactor/.cache/asr08-browser-main/report.json",
"sha256": "3903498d7d02c553a9b800cd9b22747eac6d4f1de5f77d772099fe391cff6eb4",
"passed": 12,
"skipped": 6,
"rows": [
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08836286954075324,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08833319439117504,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08869046588295236,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4192,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4263,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4250,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08798611880382642,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08811563255895567,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08896275868833134,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4158,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4263,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4250,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08843546012492767,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08862752847073793,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08906111312585639,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08791119445452536,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.08812234452410372,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08866202715264984,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
}
]
},
{
"mode": "legacy",
"file": "refactor/.cache/asr08-browser-legacy/report.json",
"sha256": "ceeb52df1711fcb184ee76653c65c62dec42ee8221d2734dad8a50fc3b36bc0f",
"passed": 12,
"skipped": 6,
"rows": [
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native Worklet supplies local PCM with owned stop and destroy",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"integrity": null,
"candidate": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"media": "local mono AAC 440 Hz tone",
"networkService": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit 26.6 has no AudioContext/AudioWorkletNode; native ASR acceptance remains open",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-audio.spec.js",
"line": 30,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08798611880382642,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08800639246669537,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08869046588295236,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4250,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08779609911638686,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4260,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"stopped": {
"external": 0.08799690350970676,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4272,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4280,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4264,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
},
"restarted": {
"external": 0.08869046588295236,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4290,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4192,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4263,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
},
{
"name": "InvalidStateError",
"message": "Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode."
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08866202715264984,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4183,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4252,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.0889824932438642,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08866202715264984,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "function",
"worklet": "function",
"capture": "function",
"mozCapture": "function"
},
"forcedException": true,
"reason": "Firefox permits a second native media source; force only binding rejection to reach real captureStream/Worklet",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"fallback": {
"output": {
"playing": {
"external": 0.08866202715264984,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4252,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"muted": {
"external": 0,
"asr": [
0
],
"contexts": [
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"stopped": {
"external": 0.088905419835137,
"asr": [
0
],
"contexts": [
"closed"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
]
],
"chunks": [
{
"max": 4190,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
},
{
"max": 4248,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
},
"restarted": {
"external": 0.08895963860169126,
"asr": [
0,
0,
0
],
"contexts": [
"closed",
"closed",
"running"
],
"owner": "running",
"streams": [
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "ended"
}
],
[
{
"kind": "audio",
"state": "live"
}
]
],
"chunks": [
{
"max": 4303,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4187,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
},
{
"max": 4255,
"source": "http://127.0.0.1:8084/test/audio-tone.m4a?asr=fallback-second",
"samples": 1600
}
],
"failures": [
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
},
{
"name": "InvalidStateError",
"message": "Controlled duplicate binding rejection for native capture test"
}
]
}
},
"annotations": []
},
{
"title": "ASR candidate + published: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native capture fallback does not create a second audible route",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"capabilities": {
"context": "undefined",
"worklet": "undefined",
"capture": "undefined",
"mozCapture": "undefined"
},
"forcedException": false,
"reason": "Native duplicate binding rejection",
"externalContext": "Native media-element source remains owned and running",
"physicalOutput": false
},
"annotations": [
{
"type": "skip",
"description": "Windows WebKit has no native WebAudio",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-fallback.spec.js",
"line": 26,
"column": 14
}
}
]
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "chromium",
"status": "passed",
"browser": "153.0.8010.12",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "published",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "firefox",
"status": "passed",
"browser": "155.0",
"inputs": {
"version": "candidate",
"core": "candidate",
"pluginSha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"mediaSha256": "83e6672b880b5d1c97093b1e26bdc40221c0b279615f40e99dbf9d2ade7b4d56",
"meter": "Native unity analyser inserted between plugin gain and destination",
"physicalAudioOutput": false
},
"annotations": []
},
{
"title": "ASR candidate + published: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
},
{
"title": "ASR candidate + candidate: native playback volume and mute",
"project": "webkit",
"status": "skipped",
"browser": "26.6",
"annotations": [
{
"type": "skip",
"description": "Windows WebKit lacks native AudioContext/AudioWorkletNode",
"location": {
"file": "D:\\github\\ArtPlayer\\test\\browser\\asr-playback.spec.js",
"line": 24,
"column": 14
}
}
]
}
]
}
],
"artifacts": [
{
"file": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.js",
"sha256": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"bytes": 8739,
"docsCopyIdentical": true
},
{
"file": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.legacy.js",
"sha256": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"bytes": 9216,
"docsCopyIdentical": true
},
{
"file": "packages/artplayer-plugin-asr/dist/artplayer-plugin-asr.mjs",
"sha256": "41b06ee8f88ed3392d1c02232994d00766d553fdc0745976279669d59c3c3717",
"bytes": 13115,
"docsCopyIdentical": true
}
],
"unit": {
"focused": 213,
"repeatedMain": 30,
"repeatedLegacy": 30,
"newFallbackRed": {
"file": "refactor/.cache/asr08-unit-red.log",
"failed": 5
},
"helperCorrection": "Register the actual Worklet mock object rather than a shallow copy so cleanup observes true node identity."
},
"installed": {
"file": "refactor/.cache/asr-package-types-LFOcfJ/report.json",
"sha256": "c25ece0e7b0369545194dbf3e80442f34deb36a56f8a53b30121259935c3b38c",
"cases": 17,
"candidateConfigurations": 7,
"rejectedUsesPerCandidate": 12,
"packages": [
{
"name": "artplayer",
"archive": "D:\\github\\ArtPlayer\\refactor\\.cache\\asr-package-types-LFOcfJ\\artplayer.tgz",
"sha256": "0c0ea52d41575261b836aefac68280733b119c75834ecad6d4bc78edb073f4c1",
"files": {
"package/ARCHITECTURE.md": "bee98fc9d93a3911d58e98ef15f2dbe07e12f2274c444d989094248a22079e46",
"package/README.md": "1e185e65f67fc2081b4182bbc6c4558ea05b6e3fa3acc5dd0c3ac7df1d542b09",
"package/THIRD_PARTY_NOTICES": "b77b5b46b79fa0cda850b0781f78c3b1112c4ed9672fa291956fe8eff53098e7",
"package/dist/artplayer.js": "6dc8ca6d6eb34aa8a056cbc31328efd634530b3c5c60f0014cb7ce719fabc335",
"package/dist/artplayer.legacy.js": "80f74a8a39df4baf64cc00c65d21cd57c011bfcdead0da38eea077fbc67c5c04",
"package/dist/artplayer.mjs": "432e2b0ad92009a09743e020bf7c928c8b8f18a52496622b16259ec9ab20059f",
"package/dist/i18n/ar.js": "bd0bef65f4f7dc3f8ed562904cc6fa9071ff4537fb64c1e0fc3d554141bcd3cb",
"package/dist/i18n/ar.mjs": "59310b7bbeea83bbb7d73aadc5ca82a6ec269c3530d19aa741c94d5c64fc5da8",
"package/dist/i18n/cs.js": "6e2c93daba24c2e48dfa206bcf4f2f2a8a02713b856e404d2e4e4ecd8309ca2f",
"package/dist/i18n/cs.mjs": "c73fba18797d62d7b2581e67fe7340c35fe84510b2250ff1ecaad253d9cabbac",
"package/dist/i18n/es.js": "f4133ac6ea06b69a474b33c4a1809a4066e2376bb9464a3f3aa8330f01f1944a",
"package/dist/i18n/es.mjs": "1390bca3def2be115e811de337df0a0c3f63998e51359f283023246245c552a7",
"package/dist/i18n/fa.js": "8d3ef2e0f0cc0ea480c2167b6fcb87cdf444e90759c3519e8daa139fec576da4",
"package/dist/i18n/fa.mjs": "ab441e8a2d79043b29ceca87c783bf06874bb9d3a149c1604bc167eb481be2a9",
"package/dist/i18n/fr.js": "89dc4194a6c0a962b9ce756b52c90401c1acf3b159f265f3bc0d7d6d7d987f03",
"package/dist/i18n/fr.mjs": "99491878430fb7b6f2b7bf93da0588a831704b412e01116f23ba1d9d45863816",
"package/dist/i18n/id.js": "4c6dc86db741bcc2857df55a9d037e82e91d375fa6fd22e0562809ff621b92db",
"package/dist/i18n/id.mjs": "383e5803a6b6686c6de4e867770241de75b6f517dcca2bdedc6f2004bf6e1fb3",
"package/dist/i18n/pl.js": "3a38828b1c3d719c0aca9906cf6a46c23555a8411f8d57645f0e0ce8147dc664",
"package/dist/i18n/pl.mjs": "079ed96732979035297af387c64a7b99519b5a43107fb86735a654ea4fe8e9b5",
"package/dist/i18n/ru.js": "62fac9dddb302eb16382e6e9301fc4b2c66f5f69d4a358a26b67026a5fa4e787",
"package/dist/i18n/ru.mjs": "a893aeaee1d79409db72e324fbff200e3864f33ed168f04d91d25f7cf2efa765",
"package/dist/i18n/tr.js": "1492c36b069a7d73db4f3913bd18085faff7afd8b3c158138fe264e31600e38c",
"package/dist/i18n/tr.mjs": "a90478cac078836b76c2a98261907610fee07f3e4b28671b8e7dbf533778f918",
"package/dist/i18n/vi.js": "c7216ef7e608a79b7e2c479a07bf310d4ab79577947ac4a62d676faaced0e9cf",
"package/dist/i18n/vi.mjs": "66270fdfa0b5da396322d1769169b7df37a030ba15ac18eb30bd87b3af8074ec",
"package/dist/i18n/zh-tw.js": "11c49857d6d40a5ffd224ffa59c9026e71621b345f63c5a086326db80a22371a",
"package/dist/i18n/zh-tw.mjs": "a38e630cb96de96c15d824686aec750e25cf6c8ada01285a292442a81566314f",
"package/package.json": "82e92699e7c29847f32ac6767ece0401290e7d7a12854722bdbcfd09b90b7954",
"package/types/COMPATIBILITY.md": "a7da9e102a116104b513df4f7451247b7759bc502d3375f30bd5b14a541826e0",
"package/types/README.md": "1bd9868e773610e6312fd48a1c5aa20772d29df0af40c3db66e75b7ab4a1aee0",
"package/types/artplayer.d.cts": "3685065e4263abcfd9d953176e461d5b3eb990b0363b54689a7f55deba770fef",
"package/types/artplayer.d.mts": "b664fec51ee5c5381f2ceab25d99d52aee56feab04a2ee7b4ea5b2145ea5fa0e",
"package/types/artplayer.d.ts": "5d0162adf7ac6d0f2bb9b5cfe361f28657c4d9c540cadbf36eba3cc954ce50f8",
"package/types/component.d.ts": "ae5bc1ddeaa1ee1ebbc62573e32423993727079205c64751a5a314170e588a32",
"package/types/config.d.ts": "36f9a84cd436f17701a0d11d3417fc1fe0414e0c52c80083b94a85dfc329e37e",
"package/types/cssVar.d.ts": "93217860fff2ebf750f606d95ddd22220a58837119e63bdf2f5f78fd7488458b",
"package/types/emitter.d.ts": "7e1f9a2a8ce65feb95734f1ed52d1334e57aa388bbef2a43d8bc53a9b6f6623c",
"package/types/events.d.ts": "f83624c9268a284477e8bd793fe3562a2363b72f2a44d5c64fe8c6a6cede8830",
"package/types/i18n.d.ts": "f4f2f05bdfda73c74fef34767cb18ee8e11b743120b1c4598e9714d7846018e5",
"package/types/icons.d.ts": "326a67ba7bdcf52862c5b2a269e540140aff98d05c7b96196485a77f84fe5960",
"package/types/language.d.cts": "f7928e108cf7b7814c2d75cb0a525333e95873fca6cd6d89a740450656b9c1cd",
"package/types/language.d.mts": "6619a26d604b7cccbe2f596243d87ae37cfaae33b8b52874ec071d9787446f9e",
"package/types/legacy/language.d.ts": "c7abda4d506fd933c350e9030290bf9e64347a921d683a66115da1995ebe0a81",
"package/types/option.d.ts": "ccf2c8ddc537dc65c9682d39f044726e23bff18f476b622512d7e6a4b949b5f6",
"package/types/playback.d.ts": "58705c273df6e76a77a6575e769a9ec6c013785c25080f2551aa22415788d870",
"package/types/player.d.ts": "92b00211b70ac71336e495899df972a0519dd138111846044fe4e0f967966177",
"package/types/plugin.d.ts": "fc3594a41c51d8248713e33c486fb1f6a518ac5c7ce31be6988a6cd8d052c5f3",
"package/types/quality.d.ts": "1ac1a48b4f74ff9ba1ce60443e1463d50d1c6a2e5d87d63dc7d2a8eb7f4c2c34",
"package/types/runtime.d.cts": "7ee988dfea9a0ac71a34a656f96f7b74e78aa92547cfdfab7ff7e1139a77d4a3",
"package/types/runtime.d.mts": "dcb85f59a8b7714918ced0c1d18c2bb24e8b80b56d8c594e019dcbdb5ad88b08",
"package/types/runtime.d.ts": "9c6ccd39a1be293f17ae46dae8ea077053e12635ee79d73a5e3b3a559230fcff",
"package/types/runtime/component.d.ts": "1b4c0cee44568649e80140fe778febfcae88af0ac85515f1cbeff78ab0c6d14f",
"package/types/runtime/construction.d.ts": "7a87bedf6f7ffff0c46078aa5f1551e0077d35574e286516121f5f935e2d9ce4",
"package/types/runtime/events.d.ts": "a1e2f9d387475453eaf95c2a5ee79e228636c0bb859bda3fcc46da46574a0c31",
"package/types/runtime/media.d.ts": "8fc89401be7fe25542c169d07dd5675f10916ed20be8493e19695966cf3864a8",
"package/types/runtime/option.d.ts": "6e334e1a76fdcc40b4665c02523bd31c3994d96078fadeb40e23422aa54c1a1d",
"package/types/runtime/player.d.ts": "8ac6383502e4872e83659838844856903031a81a0adc8e8535feb78453aa042c",
"package/types/runtime/plugin.d.ts": "8528f2b17843149f42f9cc16d6fd70baa238c9dc2c329b67d2c38096799c69bd",
"package/types/runtime/services.d.ts": "604c9f8e4b6c0da818f96576bf9f4b0e96085a9003927b2f7ba30027b1ba237e",
"package/types/runtime/setting.d.ts": "349c1fcb205ad312916bd3ee55e6bf241ea8a569fb2ab6c80822e69fc518f7d7",
"package/types/runtime/subtitle.d.ts": "269ff84678d327b3a9dc2f5bc6cc0d731d1e081b85422e474621d5d792efb153",
"package/types/runtime/template.d.ts": "7a62f968a38b4bf9109a4439557c02074eb1d62ba1f6e21a8eb194e91f0badfe",
"package/types/runtime/utils.d.ts": "6bf731705d86853e066dbaf3b8d4003b6548423fe615b7412b722bd0d3a6e48b",
"package/types/setting.d.ts": "08305a75dff96f06490430e099338b463df471b550c1d0dac3abc8995b39eb09",
"package/types/subtitle.d.ts": "b18314e2d64efdb6045830b6e12f615ae2ed585416130e562329ad3ea337f6ce",
"package/types/template.d.ts": "4792bc0c2cbcb7966e4375118bd34b326166e0831862e94ace4cf6b1bbe6a8c8",
"package/types/utils.d.ts": "fca0d3d814df94a25f9eb067c86fa0cf272e2791bac793b91229d57680797712"
}
},
{
"name": "artplayer-plugin-asr",
"archive": "D:\\github\\ArtPlayer\\refactor\\.cache\\asr-package-types-LFOcfJ\\artplayer-plugin-asr.tgz",
"sha256": "985a048827b843f4e792f6dd96bc0491fd83a179ee2d97d620f4bf30e96fe022",
"files": {
"package/ARCHITECTURE.md": "4c7a1f0f0167b5a1341a1c3e549208422bddea696edc2d02bb8fb1ea88bcd846",
"package/README.md": "d8eec6fafd308a3f52c16548a27ea07c2cb247d950b3e155d94f98e010e6b994",
"package/dist/artplayer-plugin-asr.js": "e31dbd6225d2a703fbe7025d4d07e9434103ebf332307b7771a6139e420fb8f4",
"package/dist/artplayer-plugin-asr.legacy.js": "c3b770394ab585ee7823204b07fb586ac6c386cd60dbe465da071cd10c543cb5",
"package/dist/artplayer-plugin-asr.mjs": "41b06ee8f88ed3392d1c02232994d00766d553fdc0745976279669d59c3c3717",
"package/package.json": "781b1eebefdff5fdc234b793ff9d6d8263275115ccff4c4d90c55eca942f2444",
"package/types/artplayer-plugin-asr.d.ts": "8fce55a45c368dc95fc6169750d2157ad57f683f62b586b8162ac720e1efdf42",
"package/types/runtime.d.cts": "2965dccc49a3a75c3b16c0c13501077b8ac199e78bac2d19d57be3d811583606",
"package/types/runtime.d.mts": "ff0769d3e408d66c7d38574171ff2621456afccc50ee8191ca4ee394dc57666e",
"package/types/runtime.d.ts": "2965dccc49a3a75c3b16c0c13501077b8ac199e78bac2d19d57be3d811583606"
}
}
]
},
"logs": [
{
"file": "refactor/.cache/asr08-build.log",
"sha256": "ad4f4c42c20232252e37a5e4b09fac942bf774b5323e32c20fe8edca1e1840b9"
},
{
"file": "refactor/.cache/asr08-lint.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"file": "refactor/.cache/asr08-strict.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"file": "refactor/.cache/asr08-unit.log",
"sha256": "b96f5f42469663cca31a4972b81eb816d121532f42e9525aa0b9cd282500671a"
},
{
"file": "refactor/.cache/asr08-unit-main.log",
"sha256": "4e07391cf520bdffac59340957b5175bda0dc422e2290ccb59203ce3c30c5a82"
},
{
"file": "refactor/.cache/asr08-unit-legacy.log",
"sha256": "10ef2c91df5be778633a27b91dc278a6667480468aaec153ce7355b9126226a5"
},
{
"file": "refactor/.cache/asr08-installed.log",
"sha256": "7c351a89f2e005c112b60ca67b54b2e809acc97520083564ca5facab23937463"
}
],
"inputs": {
"packages/artplayer-plugin-asr/src/audio-graph.ts": "80e0becb48d8856b4067fd2d76e3c01235504a3948a8758f37470e9e1eddadbc",
"test/helpers/asr-audio.js": "9c973b596a61284a34dcd565e1d86b29295947c556cc5121e197005c130f5531",
"test/asr-fallback-routing.test.js": "5971941f005e0a0c5e58b5633da2c6a9661c37a749180a4780d40763e52115e9",
"test/browser/asr-fallback.spec.js": "676ad7f12b9368d14b3a748c117593302fe5c8ed3cae80b24bf6480a3b4ca455"
},
"limitation": [
"Firefox automatic external-owner detection is not fixed; ASR-FOREIGN-01 remains open.",
"No physical audio output, Safari/device acceptance or cross-origin/other-plugin coverage.",
"No full CI rerun; no publish."
],
"releaseReady": false
}