From b755d9cebec3eb1923de3f5453ced750b21dbe19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Sun, 1 Jul 2018 17:26:49 +0200 Subject: [PATCH] Expose setters for AudioBufferSourceNode params --- servo-media/src/audio/buffer_source_node.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/servo-media/src/audio/buffer_source_node.rs b/servo-media/src/audio/buffer_source_node.rs index 0bf54efe..221ca3d4 100644 --- a/servo-media/src/audio/buffer_source_node.rs +++ b/servo-media/src/audio/buffer_source_node.rs @@ -1,14 +1,15 @@ use audio::node::ChannelInfo; use audio::block::{Block, Chunk, Tick, FRAMES_PER_BLOCK}; use audio::node::{AudioNodeEngine, AudioScheduledSourceNodeMessage, BlockInfo}; -use audio::param::Param; +use audio::param::{Param, UserAutomationEvent}; /// Control messages directed to AudioBufferSourceNodes. #[derive(Debug, Clone)] pub enum AudioBufferSourceNodeMessage { /// Set the data block holding the audio sample data to be played. - // XXX handle channels SetBuffer(AudioBuffer), + SetPlaybackRate(UserAutomationEvent), + SetDetune(UserAutomationEvent), } /// This specifies options for constructing an AudioBufferSourceNode. @@ -88,10 +89,16 @@ impl AudioBufferSourceNode { } } - pub fn handle_message(&mut self, message: AudioBufferSourceNodeMessage, _: f32) { + pub fn handle_message(&mut self, message: AudioBufferSourceNodeMessage, sample_rate: f32) { match message { AudioBufferSourceNodeMessage::SetBuffer(buffer) => { self.buffer = Some(buffer); + }, + AudioBufferSourceNodeMessage::SetPlaybackRate(event) => { + self.playback_rate.insert_event(event.to_event(sample_rate)); + }, + AudioBufferSourceNodeMessage::SetDetune(event) => { + self.detune.insert_event(event.to_event(sample_rate)); } } }