aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/baseaudiocontext.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs
index 14c6bc94e1c..42836dd61f0 100644
--- a/components/script/dom/baseaudiocontext.rs
+++ b/components/script/dom/baseaudiocontext.rs
@@ -481,14 +481,17 @@ impl BaseAudioContextMethods for BaseAudioContext {
.unwrap()
.resize(channel_count as usize, Vec::new());
})
- .progress(move |buffer, channel_pos| {
+ .progress(move |buffer, channel_pos_mask| {
let mut decoded_audio = decoded_audio_.lock().unwrap();
let mut channels = channels.lock().unwrap();
- let channel = match channels.entry(channel_pos) {
+ let channel = match channels.entry(channel_pos_mask) {
Entry::Occupied(entry) => *entry.get(),
- Entry::Vacant(entry) => *entry.insert(decoded_audio.len()),
+ Entry::Vacant(entry) => {
+ let x = (channel_pos_mask as f32).log2() as usize;
+ *entry.insert(x)
+ },
};
- decoded_audio[(channel - 1) as usize].extend_from_slice((*buffer).as_ref());
+ decoded_audio[channel].extend_from_slice((*buffer).as_ref());
})
.eos(move || {
let _ = task_source.queue_with_canceller(