diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/media/test/crashtests/buffer-source-slow-resampling-1.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | dom/media/test/crashtests/buffer-source-slow-resampling-1.html | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/dom/media/test/crashtests/buffer-source-slow-resampling-1.html b/dom/media/test/crashtests/buffer-source-slow-resampling-1.html new file mode 100644 index 0000000000..5d8a50442b --- /dev/null +++ b/dom/media/test/crashtests/buffer-source-slow-resampling-1.html @@ -0,0 +1,34 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<script> +const blockSize = 128; +// The sample rate is a prime number so that the resampler is not expected to +// simplify in/out fractions. +const rate = 44101; +var context = new window.OfflineAudioContext(1, 3 * blockSize, rate); +// Non-zero buffer, so it can't be optimized away. +var buffer = context.createBuffer(1, 128, rate); +buffer.getChannelData(0)[0] = 1.0; +var source = context.createBufferSource(); +source.buffer = buffer; +source.loop = true; +// Initialize the resampler with a slow input rate. +// With the current (Mar 2017) implementation, very slow rates give the +// resampler a very large denominator. +source.playbackRate.setValueAtTime(rate / 0x7fffffff, 0.0); +// Change to a moderate input rate. +// With the current implementation, skip_frac_num increases by den_rate for +// each output sample and so one block before the change in playback rate is +// enough for high skip_frac_num at the time of the change. +const changeBlock = 1; +const changeBlockSeconds = changeBlock * blockSize / rate; +// With the current speex_resampler_set_rate_frac() implementation, the +// moderate resampler denominator is still large enough to trigger overflow of +// 32-bit unsigned integer arithmetic. +source.playbackRate.setValueAtTime(rate / (rate + 1), changeBlockSeconds); +source.start(0); +context.startRendering(). + then(function() { + document.documentElement.removeAttribute("class"); + }); +</script> |