<!DOCTYPE html>
<html>
<head>
<title>
Validate Reduction Value of DynamicsComporessor after Disabling
</title>
<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>
</head>
<body>
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
let context;
let buffer;
let source;
let compressor;
// Use a low sample rate to reduce complexity because we need to run for
// quite a few seconds to get the reduction to converge.
let sampleRate = 8192;
let testDurationSamples = 10 * sampleRate;
audit.define(
{
label: 'test',
description:
'Validate Reduction Value of DynamicsCompressor after Disabling'
},
function(task, should) {
// Create the offline context for the test.
context =
new OfflineAudioContext(1, testDurationSamples, sampleRate);
// Create the constant sample buffer of 0.5 sec.
buffer = createConstantBuffer(context, testDurationSamples / 2, 1);
// Create compressor and use default parameters for the compression.
compressor = context.createDynamicsCompressor();
// Create the source and connect it to the destination
source = context.createBufferSource();
source.buffer = buffer;
source.connect(compressor);
compressor.connect(context.destination);
source.start(0.0);
// Render it!
context.startRendering().then(() => {
// Check that the reduction value sufficiently close to 0.
// Error threshold experimentally determined.
let errorThreshold = 4.8223e-2;
should(
Math.abs(compressor.reduction),
'Math.abs(compressor.reduction) ('
+ Math.abs(compressor.reduction) + ')')
.beLessThanOrEqualTo(errorThreshold);
task.done();
});
});
audit.run();
</script>
</body>
</html>