{ "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 }