From e7d61674091a1b03552b7822d33a43e0e1a76b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sun, 22 Nov 2020 12:28:12 +0200 Subject: [PATCH] gstreamer-gl: Update manual code to 2018 edition --- gstreamer-gl/Cargo.toml | 25 ++++----- gstreamer-gl/src/caps_features.rs | 3 +- gstreamer-gl/src/context.rs | 10 ++-- gstreamer-gl/src/gl_context.rs | 23 ++++---- gstreamer-gl/src/gl_display.rs | 3 +- gstreamer-gl/src/gl_display_egl.rs | 15 +++--- gstreamer-gl/src/gl_display_wayland.rs | 11 ++-- gstreamer-gl/src/gl_display_x11.rs | 11 ++-- gstreamer-gl/src/gl_sync_meta.rs | 19 +++---- gstreamer-gl/src/gl_video_frame.rs | 73 ++++++++++++-------------- gstreamer-gl/src/lib.rs | 39 +++++--------- 11 files changed, 100 insertions(+), 132 deletions(-) diff --git a/gstreamer-gl/Cargo.toml b/gstreamer-gl/Cargo.toml index cf58cc249..77b33e0b4 100644 --- a/gstreamer-gl/Cargo.toml +++ b/gstreamer-gl/Cargo.toml @@ -12,35 +12,32 @@ homepage = "https://gstreamer.freedesktop.org" documentation = "https://gstreamer.pages.freedesktop.org/gstreamer-rs/gstreamer_gl/" keywords = ["gstreamer", "multimedia", "audio", "video", "gnome"] build = "build.rs" +edition = "2018" [dependencies] bitflags = "1.0" byteorder = "1" libc = "0.2" once_cell = "1.0" -glib-sys = { git = "https://github.com/gtk-rs/gtk-rs" } -gobject-sys = { git = "https://github.com/gtk-rs/gtk-rs" } -gstreamer-sys = { path = "../gstreamer/sys", features = ["v1_14"] } -gstreamer-video-sys = { path = "../gstreamer-video/sys", features = ["v1_14"] } -gstreamer-gl-sys = { path = "../gstreamer-gl/sys" } +ffi = { package = "gstreamer-gl-sys", path = "../gstreamer-gl/sys" } glib = { git = "https://github.com/gtk-rs/gtk-rs" } -gstreamer = { path = "../gstreamer", features = ["v1_14"] } -gstreamer-base = { path = "../gstreamer-base", features = ["v1_14"] } -gstreamer-video = { path = "../gstreamer-video", features = ["v1_14"] } +gst = { package = "gstreamer", path = "../gstreamer", features = ["v1_14"] } +gst-base = { package = "gstreamer-base", path = "../gstreamer-base", features = ["v1_14"] } +gst-video = { package = "gstreamer-video", path = "../gstreamer-video", features = ["v1_14"] } [build-dependencies] gstreamer-rs-lgpl-docs = { path = "../docs", optional = true } [features] default = [] -dox = ["v1_18", "gstreamer-gl-sys/dox", "glib/dox", "gstreamer/dox", "gstreamer-base/dox", "gstreamer-video/dox"] -egl = ["gstreamer-gl-sys/egl"] -x11 = ["gstreamer-gl-sys/x11"] -wayland = ["gstreamer-gl-sys/wayland"] +dox = ["v1_18", "ffi/dox", "glib/dox", "gst/dox", "gst-base/dox", "gst-video/dox"] +egl = ["ffi/egl"] +x11 = ["ffi/x11"] +wayland = ["ffi/wayland"] embed-lgpl-docs = ["gstreamer-rs-lgpl-docs"] purge-lgpl-docs = ["gstreamer-rs-lgpl-docs"] -v1_16 = ["gstreamer/v1_16", "gstreamer-base/v1_16", "gstreamer-video/v1_16", "gstreamer-gl-sys/v1_16"] -v1_18 = ["gstreamer/v1_18", "gstreamer-base/v1_18", "gstreamer-video/v1_18", "gstreamer-gl-sys/v1_18", "v1_16"] +v1_16 = ["gst/v1_16", "gst-base/v1_16", "gst-video/v1_16", "ffi/v1_16"] +v1_18 = ["gst/v1_18", "gst-base/v1_18", "gst-video/v1_18", "ffi/v1_18", "v1_16"] [package.metadata.docs.rs] features = ["dox", "embed-lgpl-docs"] diff --git a/gstreamer-gl/src/caps_features.rs b/gstreamer-gl/src/caps_features.rs index 3727e3c07..3e7e5e254 100644 --- a/gstreamer-gl/src/caps_features.rs +++ b/gstreamer-gl/src/caps_features.rs @@ -7,13 +7,12 @@ // except according to those terms. use gst::CapsFeatures; -use gst_gl_sys; use std::ffi::CStr; use once_cell::sync::Lazy; pub static CAPS_FEATURE_MEMORY_GL_MEMORY: Lazy<&'static str> = Lazy::new(|| unsafe { - CStr::from_ptr(gst_gl_sys::GST_CAPS_FEATURE_MEMORY_GL_MEMORY) + CStr::from_ptr(ffi::GST_CAPS_FEATURE_MEMORY_GL_MEMORY) .to_str() .unwrap() }); diff --git a/gstreamer-gl/src/context.rs b/gstreamer-gl/src/context.rs index 47dea5d32..989fd8837 100644 --- a/gstreamer-gl/src/context.rs +++ b/gstreamer-gl/src/context.rs @@ -6,12 +6,11 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use crate::GLDisplay; use glib::translate::*; use glib::IsA; use gst::ContextRef; -use gst_gl_sys; use std::ptr; -use GLDisplay; pub trait ContextGLExt { fn get_gl_display(&self) -> Option; @@ -22,7 +21,7 @@ impl ContextGLExt for ContextRef { fn get_gl_display(&self) -> Option { unsafe { let mut display = ptr::null_mut(); - if from_glib(gst_gl_sys::gst_context_get_gl_display( + if from_glib(ffi::gst_context_get_gl_display( self.as_mut_ptr(), &mut display, )) { @@ -35,10 +34,7 @@ impl ContextGLExt for ContextRef { fn set_gl_display>(&self, display: &T) { unsafe { - gst_gl_sys::gst_context_set_gl_display( - self.as_mut_ptr(), - display.as_ref().to_glib_none().0, - ); + ffi::gst_context_set_gl_display(self.as_mut_ptr(), display.as_ref().to_glib_none().0); } } } diff --git a/gstreamer-gl/src/gl_context.rs b/gstreamer-gl/src/gl_context.rs index 2a2723d0a..6b39489ac 100644 --- a/gstreamer-gl/src/gl_context.rs +++ b/gstreamer-gl/src/gl_context.rs @@ -6,14 +6,13 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use crate::GLContext; +use crate::GLDisplay; +use crate::GLPlatform; +use crate::GLAPI; use glib::translate::*; use glib::IsA; -use gst_gl_sys; use libc::uintptr_t; -use GLContext; -use GLDisplay; -use GLPlatform; -use GLAPI; impl GLContext { pub unsafe fn new_wrapped>( @@ -22,7 +21,7 @@ impl GLContext { context_type: GLPlatform, available_apis: GLAPI, ) -> Option { - from_glib_full(gst_gl_sys::gst_gl_context_new_wrapped( + from_glib_full(ffi::gst_gl_context_new_wrapped( display.as_ref().to_glib_none().0, handle, context_type.to_glib(), @@ -32,9 +31,7 @@ impl GLContext { pub fn get_current_gl_context(context_type: GLPlatform) -> uintptr_t { skip_assert_initialized!(); - unsafe { - gst_gl_sys::gst_gl_context_get_current_gl_context(context_type.to_glib()) as uintptr_t - } + unsafe { ffi::gst_gl_context_get_current_gl_context(context_type.to_glib()) as uintptr_t } } pub fn get_proc_address_with_platform( @@ -44,7 +41,7 @@ impl GLContext { ) -> uintptr_t { skip_assert_initialized!(); unsafe { - gst_gl_sys::gst_gl_context_get_proc_address_with_platform( + ffi::gst_gl_context_get_proc_address_with_platform( context_type.to_glib(), gl_api.to_glib(), name.to_glib_none().0, @@ -61,14 +58,12 @@ pub trait GLContextExtManual: 'static { impl> GLContextExtManual for O { fn get_gl_context(&self) -> uintptr_t { - unsafe { - gst_gl_sys::gst_gl_context_get_gl_context(self.as_ref().to_glib_none().0) as uintptr_t - } + unsafe { ffi::gst_gl_context_get_gl_context(self.as_ref().to_glib_none().0) as uintptr_t } } fn get_proc_address(&self, name: &str) -> uintptr_t { unsafe { - gst_gl_sys::gst_gl_context_get_proc_address( + ffi::gst_gl_context_get_proc_address( self.as_ref().to_glib_none().0, name.to_glib_none().0, ) as uintptr_t diff --git a/gstreamer-gl/src/gl_display.rs b/gstreamer-gl/src/gl_display.rs index c0ebd840c..3b17accf9 100644 --- a/gstreamer-gl/src/gl_display.rs +++ b/gstreamer-gl/src/gl_display.rs @@ -6,13 +6,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use gst_gl_sys; use std::ffi::CStr; use once_cell::sync::Lazy; pub static GL_DISPLAY_CONTEXT_TYPE: Lazy<&'static str> = Lazy::new(|| unsafe { - CStr::from_ptr(gst_gl_sys::GST_GL_DISPLAY_CONTEXT_TYPE) + CStr::from_ptr(ffi::GST_GL_DISPLAY_CONTEXT_TYPE) .to_str() .unwrap() }); diff --git a/gstreamer-gl/src/gl_display_egl.rs b/gstreamer-gl/src/gl_display_egl.rs index 22dc12909..ecf72aa1a 100644 --- a/gstreamer-gl/src/gl_display_egl.rs +++ b/gstreamer-gl/src/gl_display_egl.rs @@ -6,27 +6,28 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use crate::GLDisplayEGL; +use crate::GLDisplayType; +use glib::ffi::gpointer; use glib::translate::*; -use glib_sys::gpointer; -use gst_gl_sys; use libc::uintptr_t; -use GLDisplayEGL; -use GLDisplayType; impl GLDisplayEGL { pub unsafe fn with_egl_display( display: uintptr_t, ) -> Result { - let result = from_glib_full(gst_gl_sys::gst_gl_display_egl_new_with_egl_display( + let result = from_glib_full(ffi::gst_gl_display_egl_new_with_egl_display( display as gpointer, )); match result { Some(d) => Ok(d), - None => Err(glib_bool_error!("Failed to create new EGL GL display")), + None => Err(glib::glib_bool_error!( + "Failed to create new EGL GL display" + )), } } pub unsafe fn get_from_native(display_type: GLDisplayType, display: uintptr_t) -> gpointer { - gst_gl_sys::gst_gl_display_egl_get_from_native(display_type.to_glib(), display) + ffi::gst_gl_display_egl_get_from_native(display_type.to_glib(), display) } } diff --git a/gstreamer-gl/src/gl_display_wayland.rs b/gstreamer-gl/src/gl_display_wayland.rs index 24bf690d8..bcf5c052b 100644 --- a/gstreamer-gl/src/gl_display_wayland.rs +++ b/gstreamer-gl/src/gl_display_wayland.rs @@ -6,22 +6,23 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use crate::GLDisplayWayland; +use glib::ffi::gpointer; use glib::translate::*; -use glib_sys::gpointer; -use gst_gl_sys; use libc::uintptr_t; -use GLDisplayWayland; impl GLDisplayWayland { pub unsafe fn with_display( display: uintptr_t, ) -> Result { - let result = from_glib_full(gst_gl_sys::gst_gl_display_wayland_new_with_display( + let result = from_glib_full(ffi::gst_gl_display_wayland_new_with_display( display as gpointer, )); match result { Some(d) => Ok(d), - None => Err(glib_bool_error!("Failed to create new Wayland GL display")), + None => Err(glib::glib_bool_error!( + "Failed to create new Wayland GL display" + )), } } } diff --git a/gstreamer-gl/src/gl_display_x11.rs b/gstreamer-gl/src/gl_display_x11.rs index 6a1d23750..c136b6585 100644 --- a/gstreamer-gl/src/gl_display_x11.rs +++ b/gstreamer-gl/src/gl_display_x11.rs @@ -6,20 +6,21 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use crate::GLDisplayX11; +use glib::ffi::gpointer; use glib::translate::*; -use glib_sys::gpointer; -use gst_gl_sys; use libc::uintptr_t; -use GLDisplayX11; impl GLDisplayX11 { pub unsafe fn with_display(display: uintptr_t) -> Result { - let result = from_glib_full(gst_gl_sys::gst_gl_display_x11_new_with_display( + let result = from_glib_full(ffi::gst_gl_display_x11_new_with_display( display as gpointer, )); match result { Some(d) => Ok(d), - None => Err(glib_bool_error!("Failed to create new X11 GL display")), + None => Err(glib::glib_bool_error!( + "Failed to create new X11 GL display" + )), } } } diff --git a/gstreamer-gl/src/gl_sync_meta.rs b/gstreamer-gl/src/gl_sync_meta.rs index 1302f6018..238418ef0 100644 --- a/gstreamer-gl/src/gl_sync_meta.rs +++ b/gstreamer-gl/src/gl_sync_meta.rs @@ -1,15 +1,12 @@ use std::fmt; -use glib; use glib::translate::*; -use gst; use gst::prelude::*; -use gst_gl_sys; -use GLContext; +use crate::GLContext; #[repr(transparent)] -pub struct GLSyncMeta(gst_gl_sys::GstGLSyncMeta); +pub struct GLSyncMeta(ffi::GstGLSyncMeta); unsafe impl Send for GLSyncMeta {} unsafe impl Sync for GLSyncMeta {} @@ -21,7 +18,7 @@ impl GLSyncMeta { ) -> gst::MetaRefMut<'a, Self, gst::meta::Standalone> { skip_assert_initialized!(); unsafe { - let meta = gst_gl_sys::gst_buffer_add_gl_sync_meta( + let meta = ffi::gst_buffer_add_gl_sync_meta( context.as_ref().to_glib_none().0, buffer.as_mut_ptr(), ); @@ -35,7 +32,7 @@ impl GLSyncMeta { pub fn set_sync_point>(&self, context: &C) { unsafe { - gst_gl_sys::gst_gl_sync_meta_set_sync_point( + ffi::gst_gl_sync_meta_set_sync_point( &self.0 as *const _ as *mut _, context.as_ref().to_glib_none().0, ); @@ -44,7 +41,7 @@ impl GLSyncMeta { pub fn wait>(&self, context: &C) { unsafe { - gst_gl_sys::gst_gl_sync_meta_wait( + ffi::gst_gl_sync_meta_wait( &self.0 as *const _ as *mut _, context.as_ref().to_glib_none().0, ); @@ -53,7 +50,7 @@ impl GLSyncMeta { pub fn wait_cpu>(&self, context: &C) { unsafe { - gst_gl_sys::gst_gl_sync_meta_wait_cpu( + ffi::gst_gl_sync_meta_wait_cpu( &self.0 as *const _ as *mut _, context.as_ref().to_glib_none().0, ); @@ -62,10 +59,10 @@ impl GLSyncMeta { } unsafe impl MetaAPI for GLSyncMeta { - type GstType = gst_gl_sys::GstGLSyncMeta; + type GstType = ffi::GstGLSyncMeta; fn get_meta_api() -> glib::Type { - unsafe { from_glib(gst_gl_sys::gst_gl_sync_meta_api_get_type()) } + unsafe { from_glib(ffi::gst_gl_sync_meta_api_get_type()) } } } diff --git a/gstreamer-gl/src/gl_video_frame.rs b/gstreamer-gl/src/gl_video_frame.rs index 912222e8d..898576ce0 100644 --- a/gstreamer-gl/src/gl_video_frame.rs +++ b/gstreamer-gl/src/gl_video_frame.rs @@ -6,15 +6,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use glib_sys; -use gst_gl_sys; -use gst_sys; -use gst_video_sys; - use glib::translate::{from_glib, ToGlibPtr}; -use gst; use gst_video::video_frame::Readable; -use gst_video::*; use byteorder::{NativeEndian, ReadBytesExt}; use std::mem; @@ -22,32 +15,32 @@ use std::mem; pub trait VideoFrameGLExt { fn from_buffer_readable_gl( buffer: gst::Buffer, - info: &VideoInfo, - ) -> Result, gst::Buffer>; + info: &gst_video::VideoInfo, + ) -> Result, gst::Buffer>; fn from_buffer_ref_readable_gl<'a, 'b>( buffer: &'a gst::BufferRef, - info: &'b VideoInfo, - ) -> Result, glib::error::BoolError>; + info: &'b gst_video::VideoInfo, + ) -> Result, glib::error::BoolError>; fn get_texture_id(&self, idx: u32) -> Option; } -impl VideoFrameGLExt for VideoFrame { +impl VideoFrameGLExt for gst_video::VideoFrame { fn from_buffer_readable_gl( buffer: gst::Buffer, - info: &VideoInfo, - ) -> Result, gst::Buffer> { + info: &gst_video::VideoInfo, + ) -> Result, gst::Buffer> { skip_assert_initialized!(); - VideoFrameRef::<&gst::BufferRef>::from_buffer_readable_gl(buffer, info) + gst_video::VideoFrameRef::<&gst::BufferRef>::from_buffer_readable_gl(buffer, info) } fn from_buffer_ref_readable_gl<'a, 'b>( buffer: &'a gst::BufferRef, - info: &'b VideoInfo, - ) -> Result, glib::error::BoolError> { + info: &'b gst_video::VideoInfo, + ) -> Result, glib::error::BoolError> { skip_assert_initialized!(); - VideoFrameRef::<&gst::BufferRef>::from_buffer_ref_readable_gl(buffer, info) + gst_video::VideoFrameRef::<&gst::BufferRef>::from_buffer_ref_readable_gl(buffer, info) } fn get_texture_id(&self, idx: u32) -> Option { @@ -55,11 +48,11 @@ impl VideoFrameGLExt for VideoFrame { } } -impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> { +impl<'a> VideoFrameGLExt for gst_video::VideoFrameRef<&'a gst::BufferRef> { fn from_buffer_readable_gl( buffer: gst::Buffer, - info: &VideoInfo, - ) -> Result, gst::Buffer> { + info: &gst_video::VideoInfo, + ) -> Result, gst::Buffer> { skip_assert_initialized!(); let n_mem = match buffer_n_gl_memory(buffer.as_ref()) { @@ -76,60 +69,62 @@ impl<'a> VideoFrameGLExt for VideoFrameRef<&'a gst::BufferRef> { unsafe { let mut frame = mem::MaybeUninit::zeroed(); - let res: bool = from_glib(gst_video_sys::gst_video_frame_map( + let res: bool = from_glib(gst_video::ffi::gst_video_frame_map( frame.as_mut_ptr(), info.to_glib_none().0 as *mut _, buffer.to_glib_none().0, - gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF - | gst_sys::GST_MAP_READ - | gst_gl_sys::GST_MAP_GL as u32, + gst_video::ffi::GST_VIDEO_FRAME_MAP_FLAG_NO_REF + | gst::ffi::GST_MAP_READ + | ffi::GST_MAP_GL as u32, )); if !res { Err(buffer) } else { - Ok(VideoFrame::from_glib_full(frame.assume_init())) + Ok(gst_video::VideoFrame::from_glib_full(frame.assume_init())) } } } fn from_buffer_ref_readable_gl<'b, 'c>( buffer: &'b gst::BufferRef, - info: &'c VideoInfo, - ) -> Result, glib::error::BoolError> { + info: &'c gst_video::VideoInfo, + ) -> Result, glib::error::BoolError> { skip_assert_initialized!(); let n_mem = match buffer_n_gl_memory(buffer) { Some(n) => n, - None => return Err(glib_bool_error!("Memory is not a GstGLMemory")), + None => return Err(glib::glib_bool_error!("Memory is not a GstGLMemory")), }; // FIXME: planes are not memories, in multiview use case, // number of memories = planes * views, but the raw memory is // not exposed in videoframe if n_mem != info.n_planes() { - return Err(glib_bool_error!( + return Err(glib::glib_bool_error!( "Number of planes and memories is not matching" )); } unsafe { let mut frame = mem::MaybeUninit::zeroed(); - let res: bool = from_glib(gst_video_sys::gst_video_frame_map( + let res: bool = from_glib(gst_video::ffi::gst_video_frame_map( frame.as_mut_ptr(), info.to_glib_none().0 as *mut _, buffer.as_mut_ptr(), - gst_video_sys::GST_VIDEO_FRAME_MAP_FLAG_NO_REF - | gst_sys::GST_MAP_READ - | gst_gl_sys::GST_MAP_GL as u32, + gst_video::ffi::GST_VIDEO_FRAME_MAP_FLAG_NO_REF + | gst::ffi::GST_MAP_READ + | ffi::GST_MAP_GL as u32, )); if !res { - Err(glib_bool_error!( + Err(glib::glib_bool_error!( "Failed to fill in the values of GstVideoFrame" )) } else { - Ok(VideoFrameRef::from_glib_full(frame.assume_init())) + Ok(gst_video::VideoFrameRef::from_glib_full( + frame.assume_init(), + )) } } } @@ -157,10 +152,10 @@ fn buffer_n_gl_memory(buffer: &gst::BufferRef) -> Option { skip_assert_initialized!(); unsafe { let buf = buffer.as_mut_ptr(); - let num = gst_sys::gst_buffer_n_memory(buf); + let num = gst::ffi::gst_buffer_n_memory(buf); for i in 0..num - 1 { - let mem = gst_sys::gst_buffer_peek_memory(buf, i); - if gst_gl_sys::gst_is_gl_memory(mem) != glib_sys::GTRUE { + let mem = gst::ffi::gst_buffer_peek_memory(buf, i); + if ffi::gst_is_gl_memory(mem) != glib::ffi::GTRUE { return None; } } diff --git a/gstreamer-gl/src/lib.rs b/gstreamer-gl/src/lib.rs index 09d0242ee..9fd9f2a93 100644 --- a/gstreamer-gl/src/lib.rs +++ b/gstreamer-gl/src/lib.rs @@ -9,24 +9,11 @@ #![cfg_attr(feature = "dox", feature(doc_cfg))] -#[macro_use] -extern crate bitflags; -extern crate byteorder; -extern crate libc; -extern crate once_cell; -#[macro_use] -extern crate glib; -extern crate glib_sys; -extern crate gobject_sys; -extern crate gstreamer as gst; -extern crate gstreamer_gl_sys as gst_gl_sys; -extern crate gstreamer_sys as gst_sys; -extern crate gstreamer_video as gst_video; -extern crate gstreamer_video_sys as gst_video_sys; +pub use ffi; macro_rules! assert_initialized_main_thread { () => { - if unsafe { ::gst_sys::gst_is_initialized() } != ::glib_sys::GTRUE { + if unsafe { gst::ffi::gst_is_initialized() } != glib::ffi::GTRUE { panic!("GStreamer has not been initialized. Call `gst::init` first."); } }; @@ -40,16 +27,16 @@ macro_rules! skip_assert_initialized { #[allow(clippy::too_many_arguments)] #[allow(clippy::match_same_arms)] mod auto; -pub use auto::*; +pub use crate::auto::*; mod caps_features; -pub use caps_features::{CAPS_FEATURES_MEMORY_GL_MEMORY, CAPS_FEATURE_MEMORY_GL_MEMORY}; +pub use crate::caps_features::{CAPS_FEATURES_MEMORY_GL_MEMORY, CAPS_FEATURE_MEMORY_GL_MEMORY}; mod context; -pub use context::ContextGLExt; +pub use crate::context::ContextGLExt; mod gl_context; -pub use gl_context::GLContextExtManual; +pub use crate::gl_context::GLContextExtManual; mod gl_display; -pub use gl_display::GL_DISPLAY_CONTEXT_TYPE; +pub use crate::gl_display::GL_DISPLAY_CONTEXT_TYPE; #[cfg(any(feature = "egl", feature = "dox"))] #[cfg_attr(feature = "dox", doc(cfg(feature = "egl")))] mod gl_display_egl; @@ -60,9 +47,9 @@ mod gl_display_wayland; #[cfg_attr(feature = "dox", doc(cfg(feature = "x11")))] mod gl_display_x11; mod gl_video_frame; -pub use gl_video_frame::VideoFrameGLExt; +pub use crate::gl_video_frame::VideoFrameGLExt; mod gl_sync_meta; -pub use gl_sync_meta::*; +pub use crate::gl_sync_meta::*; // Re-export all the traits in a prelude module, so that applications // can always "use gst::prelude::*" without getting conflicts @@ -70,9 +57,9 @@ pub mod prelude { pub use glib::prelude::*; pub use gst::prelude::*; - pub use auto::traits::*; + pub use crate::auto::traits::*; - pub use context::ContextGLExt; - pub use gl_context::GLContextExtManual; - pub use gl_video_frame::VideoFrameGLExt; + pub use crate::context::ContextGLExt; + pub use crate::gl_context::GLContextExtManual; + pub use crate::gl_video_frame::VideoFrameGLExt; }