From f5f10c49ccffab59fdf9752c5f9be28bf48e12a9 Mon Sep 17 00:00:00 2001 From: Shamir Khodzha Date: Mon, 27 Jan 2020 15:36:16 +0300 Subject: [PATCH 1/2] linear extrapolation of endpoint samples in AudioBufferSourceNode --- audio/buffer_source_node.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/audio/buffer_source_node.rs b/audio/buffer_source_node.rs index 64470ffa..9f517975 100644 --- a/audio/buffer_source_node.rs +++ b/audio/buffer_source_node.rs @@ -394,10 +394,18 @@ impl AudioBuffer { let prev = pos.floor() as usize; let offset = pos - pos.floor(); - let next_sample = *self.buffers[chan as usize].get(prev + 1).unwrap_or(&0.0); - - ((1. - offset) * (self.buffers[chan as usize][prev] as f64) + offset * (next_sample as f64)) - as f32 + match self.buffers[chan as usize].get(prev + 1) { + Some(next_sample) => { + ((1. - offset) * (self.buffers[chan as usize][prev] as f64) + + offset * (*next_sample as f64)) as f32 + } + _ => { + // linear extrapolation of two prev samples + ((1. + offset) * (self.buffers[chan as usize][prev] as f64) + - offset * (self.buffers[chan as usize][prev - 1] as f64)) + as f32 + } + } } pub fn data_chan_mut(&mut self, chan: u8) -> &mut [f32] { From b5f15162cebe23300500a8049e2946ac78920efe Mon Sep 17 00:00:00 2001 From: Shamir Khodzha Date: Tue, 28 Jan 2020 12:27:06 +0300 Subject: [PATCH 2/2] style fix for PannerNode --- audio/panner_node.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/audio/panner_node.rs b/audio/panner_node.rs index 05d70678..71d539f0 100644 --- a/audio/panner_node.rs +++ b/audio/panner_node.rs @@ -333,7 +333,7 @@ impl AudioNodeEngine for PannerNode { let x = if mono { (azimuth + 90.) / 180. } else if azimuth <= 0. { - (azimuth + 90. / 90.) + (azimuth + 90.) / 90. } else { azimuth / 90. };