From 722e60c9b1aa7a1a36ada158e4b2403a05e85de6 Mon Sep 17 00:00:00 2001 From: Alan Jeffrey Date: Wed, 11 Dec 2019 09:47:53 -0600 Subject: [PATCH] Rename servosrc to servowebsrc --- ports/gstplugin/README.md | 10 +-- ports/gstplugin/lib.rs | 8 +- .../gstplugin/{servosrc.rs => servowebsrc.rs} | 76 +++++++++---------- 3 files changed, 47 insertions(+), 47 deletions(-) rename ports/gstplugin/{servosrc.rs => servowebsrc.rs} (93%) diff --git a/ports/gstplugin/README.md b/ports/gstplugin/README.md index df86f3571088..7c8b08b71f20 100644 --- a/ports/gstplugin/README.md +++ b/ports/gstplugin/README.md @@ -23,7 +23,7 @@ cp target/release/libgstservoplugin.* target/gstplugins To run locally: ``` GST_PLUGIN_PATH=target/gstplugins \ - gst-launch-1.0 servosrc \ + gst-launch-1.0 servowebsrc \ ! videorate \ ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=1920,height=1080,format=RGBA \ ! glimagesink rotate-method=vertical-flip @@ -32,7 +32,7 @@ GST_PLUGIN_PATH=target/gstplugins \ To stream over the network: ``` GST_PLUGIN_PATH=target/gstplugins \ - gst-launch-1.0 servosrc \ + gst-launch-1.0 servowebsrc \ ! videorate \ ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=512,height=256 \ ! glcolorconvert \ @@ -46,7 +46,7 @@ GST_PLUGIN_PATH=target/gstplugins \ To save to a file: ``` GST_PLUGIN_PATH=target/gstplugins \ - gst-launch-1.0 servosrc \ + gst-launch-1.0 servowebsrc \ ! videorate \ ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=512,height=256 \ ! glcolorconvert \ @@ -76,7 +76,7 @@ LD_LIBRARY_PATH=$PWD/support/linux/gstreamer/gst/lib \ First try: ``` GST_PLUGIN_PATH=target/gstplugins \ - gst-inspect-1.0 servosrc + gst-inspect-1.0 servowebsrc ``` If that doesn't work, try: @@ -125,7 +125,7 @@ GST_PLUGIN_PATH=$PWD/target/gstplugins/:$PWD/support/linux/gstreamer/gst/lib \ GST_PLUGIN_SCANNER=$PWD/support/linux/gstreamer/gst/libexec/gstreamer-1.0/gst-plugin-scanner \ LD_LIBRARY_PATH=$PWD/support/linux/gstreamer/gst/lib \ LD_PRELOAD=$PWD/target/gstplugins/libgstservoplugin.so \ - gst-launch-1.0 servosrc \ + gst-launch-1.0 servowebsrc \ ! queue \ ! videoflip video-direction=vert \ ! ximagesink diff --git a/ports/gstplugin/lib.rs b/ports/gstplugin/lib.rs index 93cc0be3402f..c954123868ab 100644 --- a/ports/gstplugin/lib.rs +++ b/ports/gstplugin/lib.rs @@ -4,11 +4,11 @@ use glib::subclass::types::ObjectSubclass; use gstreamer::gst_plugin_define; -use servosrc::ServoGstSrc; +use servowebsrc::ServoWebSrc; mod logging; mod resources; -mod servosrc; +mod servowebsrc; gst_plugin_define!( servoplugin, @@ -33,8 +33,8 @@ fn plugin_init(plugin: &gstreamer::Plugin) -> Result<(), glib::BoolError> { log::debug!("Registering plugin"); gstreamer::Element::register( Some(plugin), - "servosrc", + "servowebsrc", gstreamer::Rank::None, - ServoGstSrc::get_type(), + ServoWebSrc::get_type(), ) } diff --git a/ports/gstplugin/servosrc.rs b/ports/gstplugin/servowebsrc.rs similarity index 93% rename from ports/gstplugin/servosrc.rs rename to ports/gstplugin/servowebsrc.rs index 0e164928f45a..0a19f4c4b87a 100644 --- a/ports/gstplugin/servosrc.rs +++ b/ports/gstplugin/servowebsrc.rs @@ -92,15 +92,15 @@ use std::rc::Rc; use std::sync::Mutex; use std::thread; -pub struct ServoGstSrc { - sender: Sender, +pub struct ServoWebSrc { + sender: Sender, swap_chain: SwapChain, url: Mutex>, info: Mutex>, buffer_pool: Mutex>, } -struct ServoSrcGfx { +struct ServoWebSrcGfx { device: Device, context: Context, gl: Rc, @@ -108,7 +108,7 @@ struct ServoSrcGfx { draw_fbo: GLuint, } -impl Drop for ServoSrcGfx { +impl Drop for ServoWebSrcGfx { fn drop(&mut self) { self.gl.delete_framebuffers(&[self.read_fbo, self.draw_fbo]); let _ = self.device.destroy_context(&mut self.context); @@ -116,11 +116,11 @@ impl Drop for ServoSrcGfx { } thread_local! { - static GFX_CACHE: RefCell> = RefCell::new(HashMap::new()); + static GFX_CACHE: RefCell> = RefCell::new(HashMap::new()); } #[derive(Debug)] -enum ServoSrcMsg { +enum ServoWebSrcMsg { Start(ServoUrl), GetSwapChain(Sender), Resize(Size2D), @@ -132,16 +132,16 @@ const DEFAULT_URL: &'static str = "https://rawcdn.githack.com/mrdoob/three.js/r105/examples/webgl_animation_cloth.html"; struct ServoThread { - receiver: Receiver, + receiver: Receiver, swap_chain: SwapChain, - gfx: Rc>, - servo: Servo, + gfx: Rc>, + servo: Servo, } impl ServoThread { - fn new(receiver: Receiver) -> Self { - let embedder = Box::new(ServoSrcEmbedder); - let window = Rc::new(ServoSrcWindow::new()); + fn new(receiver: Receiver) -> Self { + let embedder = Box::new(ServoWebSrcEmbedder); + let window = Rc::new(ServoWebSrcWindow::new()); let swap_chain = window.swap_chain.clone(); let gfx = window.gfx.clone(); let servo = Servo::new(embedder, window); @@ -157,13 +157,13 @@ impl ServoThread { while let Ok(msg) = self.receiver.recv() { debug!("Servo thread handling message {:?}", msg); match msg { - ServoSrcMsg::Start(url) => self.new_browser(url), - ServoSrcMsg::GetSwapChain(sender) => sender + ServoWebSrcMsg::Start(url) => self.new_browser(url), + ServoWebSrcMsg::GetSwapChain(sender) => sender .send(self.swap_chain.clone()) .expect("Failed to send swap chain"), - ServoSrcMsg::Resize(size) => self.resize(size), - ServoSrcMsg::Heartbeat => self.servo.handle_events(vec![]), - ServoSrcMsg::Stop => break, + ServoWebSrcMsg::Resize(size) => self.resize(size), + ServoWebSrcMsg::Heartbeat => self.servo.handle_events(vec![]), + ServoWebSrcMsg::Stop => break, } } self.servo.handle_events(vec![WindowEvent::Quit]); @@ -215,29 +215,29 @@ impl Drop for ServoThread { } } -struct ServoSrcEmbedder; +struct ServoWebSrcEmbedder; -impl EmbedderMethods for ServoSrcEmbedder { +impl EmbedderMethods for ServoWebSrcEmbedder { fn create_event_loop_waker(&mut self) -> Box { - Box::new(ServoSrcEmbedder) + Box::new(ServoWebSrcEmbedder) } } -impl EventLoopWaker for ServoSrcEmbedder { +impl EventLoopWaker for ServoWebSrcEmbedder { fn clone_box(&self) -> Box { - Box::new(ServoSrcEmbedder) + Box::new(ServoWebSrcEmbedder) } fn wake(&self) {} } -struct ServoSrcWindow { +struct ServoWebSrcWindow { swap_chain: SwapChain, - gfx: Rc>, + gfx: Rc>, gl: Rc, } -impl ServoSrcWindow { +impl ServoWebSrcWindow { fn new() -> Self { let version = surfman::GLVersion { major: 4, minor: 3 }; let flags = surfman::ContextAttributeFlags::empty(); @@ -304,7 +304,7 @@ impl ServoSrcWindow { device.make_no_context_current().unwrap(); - let gfx = Rc::new(RefCell::new(ServoSrcGfx { + let gfx = Rc::new(RefCell::new(ServoWebSrcGfx { device, context, gl, @@ -320,7 +320,7 @@ impl ServoSrcWindow { } } -impl WindowMethods for ServoSrcWindow { +impl WindowMethods for ServoWebSrcWindow { fn present(&self) { debug!("EMBEDDER present"); let mut gfx = self.gfx.borrow_mut(); @@ -420,8 +420,8 @@ const CAPS: &str = "video/x-raw(memory:GLMemory), height=[1,2147483647], framerate=[0/1,2147483647/1]"; -impl ObjectSubclass for ServoGstSrc { - const NAME: &'static str = "ServoGstSrc"; +impl ObjectSubclass for ServoWebSrc { + const NAME: &'static str = "ServoWebSrc"; // gstreamer-gl doesn't have support for GLBaseSrc yet // https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/219 type ParentType = BaseSrc; @@ -432,7 +432,7 @@ impl ObjectSubclass for ServoGstSrc { let (sender, receiver) = crossbeam_channel::bounded(1); thread::spawn(move || ServoThread::new(receiver).run()); let (acks, ackr) = crossbeam_channel::bounded(1); - let _ = sender.send(ServoSrcMsg::GetSwapChain(acks)); + let _ = sender.send(ServoWebSrcMsg::GetSwapChain(acks)); let swap_chain = ackr.recv().expect("Failed to get swap chain"); let info = Mutex::new(None); let url = Mutex::new(None); @@ -464,7 +464,7 @@ impl ObjectSubclass for ServoGstSrc { glib_object_subclass!(); } -impl ObjectImpl for ServoGstSrc { +impl ObjectImpl for ServoWebSrc { glib_object_impl!(); fn constructed(&self, obj: &glib::Object) { @@ -499,12 +499,12 @@ impl ObjectImpl for ServoGstSrc { } } -impl ElementImpl for ServoGstSrc {} +impl ElementImpl for ServoWebSrc {} thread_local! { static GL: RefCell>> = RefCell::new(None); } -impl BaseSrcImpl for ServoGstSrc { +impl BaseSrcImpl for ServoWebSrc { fn set_caps(&self, src: &BaseSrc, outcaps: &Caps) -> Result<(), LoggableError> { // Save the video info for later use let info = VideoInfo::from_caps(outcaps) @@ -566,13 +566,13 @@ impl BaseSrcImpl for ServoGstSrc { let url = guard.as_ref().map(|s| &**s).unwrap_or(DEFAULT_URL); let url = ServoUrl::parse(url) .map_err(|_| gst_error_msg!(ResourceError::Settings, ["Failed to parse url"]))?; - let _ = self.sender.send(ServoSrcMsg::Start(url)); + let _ = self.sender.send(ServoWebSrcMsg::Start(url)); Ok(()) } fn stop(&self, _src: &BaseSrc) -> Result<(), ErrorMessage> { info!("Stopping"); - let _ = self.sender.send(ServoSrcMsg::Stop); + let _ = self.sender.send(ServoWebSrcMsg::Stop); Ok(()) } @@ -636,7 +636,7 @@ impl BaseSrcImpl for ServoGstSrc { })); let draw_fbo = gl.gen_framebuffers(1)[0]; let read_fbo = gl.gen_framebuffers(1)[0]; - ServoSrcGfx { + ServoWebSrcGfx { device, context, gl, @@ -675,7 +675,7 @@ impl BaseSrcImpl for ServoGstSrc { if size != surface_size { // If we're being asked to fill frames that are a different size than servo is providing, // ask it to change size. - let _ = self.sender.send(ServoSrcMsg::Resize(size)); + let _ = self.sender.send(ServoWebSrcMsg::Resize(size)); } let surface_texture = gfx @@ -765,7 +765,7 @@ impl BaseSrcImpl for ServoGstSrc { FlowError::Error })?; - let _ = self.sender.send(ServoSrcMsg::Heartbeat); + let _ = self.sender.send(ServoWebSrcMsg::Heartbeat); Ok(buffer) } }