From ceb2cd2279e06449fb4f98d7f95b39832384f0c2 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Wed, 10 Oct 2018 15:00:04 -0700 Subject: [PATCH 1/2] Handle case when OfflineAudioContext doesn't receive all the buffers --- components/script/dom/offlineaudiocontext.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/script/dom/offlineaudiocontext.rs b/components/script/dom/offlineaudiocontext.rs index 32aaa926ec9..7e967d0078a 100644 --- a/components/script/dom/offlineaudiocontext.rs +++ b/components/script/dom/offlineaudiocontext.rs @@ -151,10 +151,14 @@ impl OfflineAudioContextMethods for OfflineAudioContext { task!(resolve: move || { let this = this.root(); let processed_audio = processed_audio.lock().unwrap(); - let processed_audio: Vec<_> = processed_audio + let mut processed_audio: Vec<_> = processed_audio .chunks(this.length as usize) .map(|channel| channel.to_vec()) .collect(); + // it can end up being empty if the task failed + if processed_audio.len() != this.length as usize { + processed_audio.resize(this.length as usize, Vec::new()) + } let buffer = AudioBuffer::new( &this.global().as_window(), this.channel_count, From 600f997a5185dffd30282a1066794e216a3de7b5 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Wed, 10 Oct 2018 16:29:27 -0700 Subject: [PATCH 2/2] Increase webaudio sample rate threshold to match firefox --- components/script/dom/audiobuffer.rs | 4 ++-- .../the-biquadfilternode-interface/biquad-tail.html.ini | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html.ini diff --git a/components/script/dom/audiobuffer.rs b/components/script/dom/audiobuffer.rs index a7b7467f14c..dd396f3aab9 100644 --- a/components/script/dom/audiobuffer.rs +++ b/components/script/dom/audiobuffer.rs @@ -20,10 +20,10 @@ use servo_media::audio::buffer_source_node::AudioBuffer as ServoMediaAudioBuffer use std::cmp::min; use std::ptr::{self, NonNull}; -// This range is defined by the spec. +// Spec mandates at least [8000, 96000], we use [8000, 192000] to match Firefox // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-createbuffer pub const MIN_SAMPLE_RATE: f32 = 8000.; -pub const MAX_SAMPLE_RATE: f32 = 96000.; +pub const MAX_SAMPLE_RATE: f32 = 192000.; type JSAudioChannel = Heap<*mut JSObject>; diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html.ini deleted file mode 100644 index 98840c3cb20..00000000000 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[biquad-tail.html] - expected: ERROR