mirror of
https://github.com/servo/servo.git
synced 2025-07-04 05:53:39 +01:00
Allow simultaneous playback of audio and video for getUserMedia
This commit is contained in:
parent
2a61a0dbb0
commit
dfbf7e37ab
2 changed files with 19 additions and 18 deletions
20
Cargo.lock
generated
20
Cargo.lock
generated
|
@ -3995,7 +3995,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media"
|
name = "servo-media"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"servo-media-audio 0.1.0 (git+https://github.com/servo/media)",
|
"servo-media-audio 0.1.0 (git+https://github.com/servo/media)",
|
||||||
"servo-media-player 0.1.0 (git+https://github.com/servo/media)",
|
"servo-media-player 0.1.0 (git+https://github.com/servo/media)",
|
||||||
|
@ -4006,7 +4006,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-audio"
|
name = "servo-media-audio"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4022,7 +4022,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-dummy"
|
name = "servo-media-dummy"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"ipc-channel 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ipc-channel 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4036,7 +4036,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer"
|
name = "servo-media-gstreamer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byte-slice-cast 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4070,7 +4070,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render"
|
name = "servo-media-gstreamer-render"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"gstreamer-video 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"gstreamer-video 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4080,7 +4080,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-gstreamer-render-unix"
|
name = "servo-media-gstreamer-render-unix"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"glib 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"gstreamer 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4093,7 +4093,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-player"
|
name = "servo-media-player"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ipc-channel 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ipc-channel 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4104,7 +4104,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-streams"
|
name = "servo-media-streams"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4113,7 +4113,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo-media-webrtc"
|
name = "servo-media-webrtc"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"boxfnonce 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -4212,7 +4212,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "servo_media_derive"
|
name = "servo_media_derive"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/servo/media#ecd5a7c6e4f51c5409321649dfb4a387bbd41925"
|
source = "git+https://github.com/servo/media#2dabf1ab7e3b6d3b6764eebdf8855431367752c4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
"proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
|
|
@ -846,13 +846,14 @@ impl HTMLMediaElement {
|
||||||
self.fetch_request(None);
|
self.fetch_request(None);
|
||||||
},
|
},
|
||||||
SrcObject::MediaStream(ref stream) => {
|
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
|
if let Err(_) = self
|
||||||
.player
|
.player
|
||||||
.borrow()
|
.borrow()
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.set_stream(&stream.id())
|
.set_stream(&track.id(), pos == tracks.len() - 1)
|
||||||
{
|
{
|
||||||
self.queue_dedicated_media_source_failure_steps();
|
self.queue_dedicated_media_source_failure_steps();
|
||||||
}
|
}
|
||||||
|
@ -1222,13 +1223,13 @@ impl HTMLMediaElement {
|
||||||
_ => StreamType::Seekable,
|
_ => StreamType::Seekable,
|
||||||
};
|
};
|
||||||
|
|
||||||
let player = ServoMedia::get()
|
|
||||||
.unwrap()
|
|
||||||
.create_player(stream_type, Box::new(PlayerContextDummy()));
|
|
||||||
|
|
||||||
let (action_sender, action_receiver) = ipc::channel().unwrap();
|
let (action_sender, action_receiver) = ipc::channel().unwrap();
|
||||||
player.register_event_handler(action_sender);
|
let player = ServoMedia::get().unwrap().create_player(
|
||||||
player.register_frame_renderer(self.frame_renderer.clone());
|
stream_type,
|
||||||
|
action_sender,
|
||||||
|
Some(self.frame_renderer.clone()),
|
||||||
|
Box::new(PlayerContextDummy()),
|
||||||
|
);
|
||||||
|
|
||||||
*self.player.borrow_mut() = Some(player);
|
*self.player.borrow_mut() = Some(player);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue