Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Unified Diff: third_party/WebKit/LayoutTests/webaudio/Analyser/handle-silent-inputs.html

Issue 2666063003: Continue to process AnalyserNode if inputs are silent. (Closed)
Patch Set: Add test Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/webaudio/Analyser/handle-silent-inputs.html
diff --git a/third_party/WebKit/LayoutTests/webaudio/Analyser/handle-silent-inputs.html b/third_party/WebKit/LayoutTests/webaudio/Analyser/handle-silent-inputs.html
new file mode 100644
index 0000000000000000000000000000000000000000..7b8c50d310edc6422028f025b9637e3455ab4192
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/webaudio/Analyser/handle-silent-inputs.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<html>
+ <head>
+ <script src="../../resources/testharness.js"></script>
+ <script src="../../resources/testharnessreport.js"></script>
+ <script src="../resources/audit-util.js"></script>
+ <script src="../resources/audit.js"></script>
+ <title>Handle Silent Inputs to AnalyserNode</title>
+ </head>
+
+ <body>
+ <script>
+ let audit = Audit.createTaskRunner();
+ let sampleRate = 16000;
+ let renderDuration = 1;
+ let renderFrames = renderDuration * sampleRate;
+
+ audit.define('connected', function(task, should) {
+ task.describe('Test handling of silent inputs');
+
+ tester(should, false).then(task.done.bind(task));
+ });
+
+ audit.define('auto-pull', function(task, should) {
+ task.describe('Test handling of silent inputs');
+
+ tester(should, true).then(task.done.bind(task));
+ });
+
+ audit.run();
+
+ function tester(should, isAutoPullTest) {
+ // Connect an oscillator to an analyser for testing the time data of the
+ // analyser after the oscillator stops.
+ let context = new OfflineAudioContext(1, renderFrames, sampleRate);
+ let source = new OscillatorNode(context);
+ let analyser = new AnalyserNode(context, {fftSize: 128});
+ let timeData = new Float32Array(analyser.fftSize);
+ timeData.fill(NaN);
+
+ source.connect(analyser);
+
+ // For the automatic pull test, leave the analyser output disconnected.
+ if (isAutoPullTest) {
+ source.connect(context.destination);
+ } else {
+ analyser.connect(context.destination);
+ }
+
+ source.start();
+
+ // Stop the source well in advance of when we want to get the time data
+ // from the analyser.
+ let stopTime = 0.1;
+ let dataTime = 0.5;
+
+ source.stop(stopTime);
+ context.suspend(dataTime)
+ .then(() => { analyser.getFloatTimeDomainData(timeData); })
+ .then(context.resume.bind(context));
+
+ return context.startRendering().then(buffer => {
+ should(timeData, 'Analyser time data at time ' + dataTime)
+ .beConstantValueOf(0);
+ });
+ }
+ </script>
+ </body>
+</html>

Powered by Google App Engine
This is Rietveld 408576698