Auto merge of #23476 - ferjm:multi.streams, r=ceyusa

Allow simultaneous playback of audio and video for getUserMedia

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23476)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-05-29 21:28:18 -04:00 committed by GitHub
commit 0a9a222356
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 18 deletions

View file

@ -846,13 +846,14 @@ impl HTMLMediaElement {
self.fetch_request(None);
},
SrcObject::MediaStream(ref stream) => {
for stream in &*stream.get_tracks() {
let tracks = &*stream.get_tracks();
for (pos, track) in tracks.iter().enumerate() {
if let Err(_) = self
.player
.borrow()
.as_ref()
.unwrap()
.set_stream(&stream.id())
.set_stream(&track.id(), pos == tracks.len() - 1)
{
self.queue_dedicated_media_source_failure_steps();
}
@ -1222,13 +1223,13 @@ impl HTMLMediaElement {
_ => StreamType::Seekable,
};
let player = ServoMedia::get()
.unwrap()
.create_player(stream_type, Box::new(PlayerContextDummy()));
let (action_sender, action_receiver) = ipc::channel().unwrap();
player.register_event_handler(action_sender);
player.register_frame_renderer(self.frame_renderer.clone());
let player = ServoMedia::get().unwrap().create_player(
stream_type,
action_sender,
Some(self.frame_renderer.clone()),
Box::new(PlayerContextDummy()),
);
*self.player.borrow_mut() = Some(player);