New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement MediaStreamAudioDestinationNode, MediaStreamAudioSourceNode, MediaStreamTrackAudioSourceNode #27143
Merged
+348
−213
Merged
Changes from 1 commit
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
45af4fa
Update servo-media
Manishearth 6a001e7
Add MediaStreamAudioDestinationNode
Manishearth bf9614e
Add MediaStream::new_single()
Manishearth 2a838d9
Add MedaStreamAudioDestinationNode::stream
Manishearth bc2267f
Add MediaStreamAudioSourceNode
Manishearth 6143173
Add MediaStreamTrackAudioSourceNode
Manishearth 0b998a1
Unpref MediaStream and MediaStreamTrack
Manishearth 7183047
Add AudioContext constructors for media stream nodes
Manishearth 19f5edf
Update WPT
Manishearth 3b3e2e0
Add loopback html test
Manishearth File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.
Add MediaStreamAudioDestinationNode
- Loading branch information
commit 6a001e7523e321059e915ffd86627a2609c4137c
| @@ -0,0 +1,67 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
|
|
||
| use crate::dom::audiocontext::AudioContext; | ||
| use crate::dom::audionode::AudioNode; | ||
| use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions; | ||
| use crate::dom::bindings::codegen::Bindings::AudioNodeBinding::{ | ||
| ChannelCountMode, ChannelInterpretation, | ||
| }; | ||
| 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::window::Window; | ||
| use dom_struct::dom_struct; | ||
| use servo_media::audio::node::AudioNodeInit; | ||
| use servo_media::streams::MediaStreamType; | ||
| use servo_media::ServoMedia; | ||
|
|
||
| #[dom_struct] | ||
| pub struct MediaStreamAudioDestinationNode { | ||
| node: AudioNode, | ||
| } | ||
|
|
||
| impl MediaStreamAudioDestinationNode { | ||
| #[allow(unrooted_must_root)] | ||
| pub fn new_inherited( | ||
| context: &AudioContext, | ||
| options: &AudioNodeOptions, | ||
| ) -> Fallible<MediaStreamAudioDestinationNode> { | ||
| let media = ServoMedia::get().unwrap(); | ||
| let (socket, _id) = media.create_stream_and_socket(MediaStreamType::Audio); | ||
| let node_options = options.unwrap_or( | ||
| 2, | ||
| ChannelCountMode::Explicit, | ||
| ChannelInterpretation::Speakers, | ||
| ); | ||
| let node = AudioNode::new_inherited( | ||
| AudioNodeInit::MediaStreamDestinationNode(socket), | ||
| &context.upcast(), | ||
| node_options, | ||
| 1, // inputs | ||
| 0, // outputs | ||
| )?; | ||
| Ok(MediaStreamAudioDestinationNode { node }) | ||
| } | ||
|
|
||
| #[allow(unrooted_must_root)] | ||
| pub fn new( | ||
| window: &Window, | ||
| context: &AudioContext, | ||
| options: &AudioNodeOptions, | ||
| ) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> { | ||
| let node = MediaStreamAudioDestinationNode::new_inherited(context, options)?; | ||
| Ok(reflect_dom_object(Box::new(node), window)) | ||
| } | ||
|
|
||
| #[allow(non_snake_case)] | ||
| pub fn Constructor( | ||
| window: &Window, | ||
| context: &AudioContext, | ||
| options: &AudioNodeOptions, | ||
| ) -> Fallible<DomRoot<MediaStreamAudioDestinationNode>> { | ||
| MediaStreamAudioDestinationNode::new(window, context, options) | ||
| } | ||
| } |
| @@ -0,0 +1,13 @@ | ||
| /* This Source Code Form is subject to the terms of the Mozilla Public | ||
| * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
| /* | ||
| * The origin of this IDL file is | ||
| * https://webaudio.github.io/web-audio-api/#mediastreamaudiodestinationnode | ||
| */ | ||
|
|
||
| [Exposed=Window] | ||
| interface MediaStreamAudioDestinationNode : AudioNode { | ||
| [Throws] constructor (AudioContext context, optional AudioNodeOptions options = {}); | ||
| // readonly attribute MediaStream stream; | ||
| }; | ||
|
||
ProTip!
Use n and p to navigate between commits in a pull request.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
No newline at end of file