diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2020-07-01 16:10:13 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2020-07-02 13:26:55 -0700 |
commit | 2a838d935bdb3ac2d74be619a183cacb3fd17bcd (patch) | |
tree | eab0e768433f4ac240bab0c1083e58ca1b84dd74 /components/script/dom/mediastreamaudiodestinationnode.rs | |
parent | bf9614edf77c4e7aa0a74a5a98923b3d2f77821b (diff) | |
download | servo-2a838d935bdb3ac2d74be619a183cacb3fd17bcd.tar.gz servo-2a838d935bdb3ac2d74be619a183cacb3fd17bcd.zip |
Add MedaStreamAudioDestinationNode::stream
Diffstat (limited to 'components/script/dom/mediastreamaudiodestinationnode.rs')
-rw-r--r-- | components/script/dom/mediastreamaudiodestinationnode.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/components/script/dom/mediastreamaudiodestinationnode.rs b/components/script/dom/mediastreamaudiodestinationnode.rs index 88edbf052dd..d402f07b590 100644 --- a/components/script/dom/mediastreamaudiodestinationnode.rs +++ b/components/script/dom/mediastreamaudiodestinationnode.rs @@ -8,10 +8,12 @@ use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions; use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ ChannelCountMode, ChannelInterpretation, }; +use crate::dom::bindings::codegen::Bindings::MediaStreamAudioDestinationNodeBinding::MediaStreamAudioDestinationNodeMethods; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; -use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; +use crate::dom::bindings::root::{Dom, DomRoot}; +use crate::dom::mediastream::MediaStream; use crate::dom::window::Window; use dom_struct::dom_struct; use servo_media::audio::node::AudioNodeInit; @@ -21,6 +23,7 @@ use servo_media::ServoMedia; #[dom_struct] pub struct MediaStreamAudioDestinationNode { node: AudioNode, + stream: Dom<MediaStream>, } impl MediaStreamAudioDestinationNode { @@ -30,7 +33,8 @@ impl MediaStreamAudioDestinationNode { options: &AudioNodeOptions, ) -> Fallible<MediaStreamAudioDestinationNode> { let media = ServoMedia::get().unwrap(); - let (socket, _id) = media.create_stream_and_socket(MediaStreamType::Audio); + let (socket, id) = media.create_stream_and_socket(MediaStreamType::Audio); + let stream = MediaStream::new_single(&context.global(), id, MediaStreamType::Audio); let node_options = options.unwrap_or( 2, ChannelCountMode::Explicit, @@ -43,7 +47,10 @@ impl MediaStreamAudioDestinationNode { 1, // inputs 0, // outputs )?; - Ok(MediaStreamAudioDestinationNode { node }) + Ok(MediaStreamAudioDestinationNode { + node, + stream: Dom::from_ref(&stream), + }) } #[allow(unrooted_must_root)] @@ -65,3 +72,10 @@ impl MediaStreamAudioDestinationNode { MediaStreamAudioDestinationNode::new(window, context, options) } } + +impl MediaStreamAudioDestinationNodeMethods for MediaStreamAudioDestinationNode { + /// https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiodestinationnode-stream + fn Stream(&self) -> DomRoot<MediaStream> { + DomRoot::from_ref(&self.stream) + } +} |