diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-11-07 06:00:11 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-11-18 17:14:50 +0100 |
commit | 518ec87cdd769dada57e391a73960a891a622222 (patch) | |
tree | d224d1eb706198ca0eee9d0986303e1d49f33cb3 | |
parent | 49ec49f637d0c5c39227425b2f29b7366dc90939 (diff) | |
download | servo-518ec87cdd769dada57e391a73960a891a622222.tar.gz servo-518ec87cdd769dada57e391a73960a891a622222.zip |
Update servo-media with MediaElementAudioSourceNode engine
-rw-r--r-- | Cargo.lock | 23 | ||||
-rw-r--r-- | components/script/dom/bindings/trace.rs | 4 | ||||
-rw-r--r-- | components/script/dom/htmlmediaelement.rs | 21 | ||||
-rw-r--r-- | components/script/dom/htmlvideoelement.rs | 6 |
4 files changed, 28 insertions, 26 deletions
diff --git a/Cargo.lock b/Cargo.lock index a36afea94e2..308b19c2081 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4446,7 +4446,7 @@ dependencies = [ [[package]] name = "servo-media" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "servo-media-audio", "servo-media-player", @@ -4458,7 +4458,7 @@ dependencies = [ [[package]] name = "servo-media-audio" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "boxfnonce", "byte-slice-cast", @@ -4467,6 +4467,7 @@ dependencies = [ "petgraph", "serde", "serde_derive", + "servo-media-player", "servo-media-traits", "servo_media_derive", "smallvec", @@ -4490,7 +4491,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "boxfnonce", "byte-slice-cast", @@ -4526,7 +4527,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "gstreamer", "gstreamer-video", @@ -4536,7 +4537,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-android" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "glib", "gstreamer", @@ -4549,7 +4550,7 @@ dependencies = [ [[package]] name = "servo-media-gstreamer-render-unix" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "glib", "gstreamer", @@ -4562,7 +4563,7 @@ dependencies = [ [[package]] name = "servo-media-player" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "ipc-channel", "serde", @@ -4574,7 +4575,7 @@ dependencies = [ [[package]] name = "servo-media-streams" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "lazy_static", "uuid", @@ -4583,12 +4584,12 @@ dependencies = [ [[package]] name = "servo-media-traits" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" [[package]] name = "servo-media-webrtc" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "boxfnonce", "log", @@ -4685,7 +4686,7 @@ dependencies = [ [[package]] name = "servo_media_derive" version = "0.1.0" -source = "git+https://github.com/servo/media#5380170bb42286ce9009d83e1034904bea8f00ee" +source = "git+https://github.com/servo/media#220ed1388f2ba008b05f5e94aca21dd14aa37290" dependencies = [ "proc-macro2 1.0.1", "quote 1.0.2", diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 65faac1bb95..301d8fe5390 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -107,7 +107,7 @@ use servo_media::audio::context::AudioContext; use servo_media::audio::graph::NodeId; use servo_media::audio::panner_node::{DistanceModel, PanningModel}; use servo_media::audio::param::ParamType; -use servo_media::player::frame::Frame; +use servo_media::player::video::VideoFrame; use servo_media::player::Player; use servo_media::streams::registry::MediaStreamId; use servo_media::streams::MediaStreamType; @@ -532,7 +532,7 @@ unsafe_no_jsmanaged_fields!(Point2D<f32>, Rect<Au>); unsafe_no_jsmanaged_fields!(Rect<f32>); unsafe_no_jsmanaged_fields!(CascadeData); unsafe_no_jsmanaged_fields!(WindowGLContext); -unsafe_no_jsmanaged_fields!(Frame); +unsafe_no_jsmanaged_fields!(VideoFrame); unsafe_no_jsmanaged_fields!(WebGLContextId); unsafe impl<'a> JSTraceable for &'a str { diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 5afc2deb381..097be0b5388 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -79,7 +79,7 @@ use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseLis use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType}; use script_layout_interface::HTMLMediaData; use servo_config::pref; -use servo_media::player::frame::{Frame, FrameRenderer}; +use servo_media::player::video::{VideoFrame, VideoFrameRenderer}; use servo_media::player::{PlaybackState, Player, PlayerError, PlayerEvent, SeekLock, StreamType}; use servo_media::{ClientContextId, ServoMedia, SupportsMediaType}; use servo_url::ServoUrl; @@ -100,10 +100,10 @@ enum FrameStatus { Unlocked, } -struct FrameHolder(FrameStatus, Frame); +struct FrameHolder(FrameStatus, VideoFrame); impl FrameHolder { - fn new(frame: Frame) -> FrameHolder { + fn new(frame: VideoFrame) -> FrameHolder { FrameHolder(FrameStatus::Unlocked, frame) } @@ -119,7 +119,7 @@ impl FrameHolder { }; } - fn set(&mut self, new_frame: Frame) { + fn set(&mut self, new_frame: VideoFrame) { if self.0 == FrameStatus::Unlocked { self.1 = new_frame }; @@ -137,7 +137,7 @@ impl FrameHolder { } } - fn get_frame(&self) -> Frame { + fn get_frame(&self) -> VideoFrame { self.1.clone() } } @@ -170,8 +170,8 @@ impl MediaFrameRenderer { } } -impl FrameRenderer for MediaFrameRenderer { - fn render(&mut self, frame: Frame) { +impl VideoFrameRenderer for MediaFrameRenderer { + fn render(&mut self, frame: VideoFrame) { let mut txn = Transaction::new(); if let Some(old_image_key) = mem::replace(&mut self.very_old_frame, self.old_frame.take()) { @@ -1325,7 +1325,7 @@ impl HTMLMediaElement { let window = window_from_node(self); let (action_sender, action_receiver) = ipc::channel::<PlayerEvent>().unwrap(); - let renderer: Option<Arc<Mutex<dyn FrameRenderer>>> = match self.media_type_id() { + let renderer: Option<Arc<Mutex<dyn VideoFrameRenderer>>> = match self.media_type_id() { HTMLMediaElementTypeId::HTMLAudioElement => None, HTMLMediaElementTypeId::HTMLVideoElement => Some(self.frame_renderer.clone()), }; @@ -1340,6 +1340,7 @@ impl HTMLMediaElement { stream_type, action_sender, renderer, + None, Box::new(window.get_player_context()), ); @@ -1527,7 +1528,7 @@ impl HTMLMediaElement { ))); self.upcast::<EventTarget>().fire_event(atom!("error")); }, - PlayerEvent::FrameUpdated => { + PlayerEvent::VideoFrameUpdated => { self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); }, PlayerEvent::MetadataUpdated(ref metadata) => { @@ -1855,7 +1856,7 @@ impl HTMLMediaElement { } } - pub fn get_current_frame(&self) -> Option<Frame> { + pub fn get_current_frame(&self) -> Option<VideoFrame> { match self.frame_renderer.lock().unwrap().current_frame_holder { Some(ref holder) => Some(holder.get_frame()), None => return None, diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index 55990c1ffe5..69f8b9a85e6 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -35,7 +35,7 @@ use net_traits::{ CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseListener, FetchResponseMsg, }; use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType}; -use servo_media::player::frame::Frame; +use servo_media::player::video::VideoFrame; use servo_url::ServoUrl; use std::cell::Cell; use std::sync::{Arc, Mutex}; @@ -58,8 +58,8 @@ pub struct HTMLVideoElement { /// is being fetched. load_blocker: DomRefCell<Option<LoadBlocker>>, /// A copy of the last frame - #[ignore_malloc_size_of = "Frame"] - last_frame: DomRefCell<Option<Frame>>, + #[ignore_malloc_size_of = "VideoFrame"] + last_frame: DomRefCell<Option<VideoFrame>>, } impl HTMLVideoElement { |