use std::ptr; use glib::{object::IsA, translate::*}; pub use crate::auto::functions::*; use crate::{GLContext, GLDisplay}; #[doc(alias = "gst_gl_handle_context_query")] pub fn gl_handle_context_query( element: &impl IsA, query: &mut gst::query::Context, display: Option<&impl IsA>, context: Option<&impl IsA>, other_context: Option<&impl IsA>, ) -> bool { skip_assert_initialized!(); unsafe { from_glib(ffi::gst_gl_handle_context_query( element.as_ref().to_glib_none().0, query.as_mut_ptr(), display.map(|p| p.as_ref()).to_glib_none().0, context.map(|p| p.as_ref()).to_glib_none().0, other_context.map(|p| p.as_ref()).to_glib_none().0, )) } } #[doc(alias = "gst_gl_handle_set_context")] pub fn gl_handle_set_context( element: &impl IsA, context: &gst::Context, ) -> (Option, Option) { skip_assert_initialized!(); unsafe { let mut display = ptr::null_mut(); let mut other_context = ptr::null_mut(); let ret = from_glib(ffi::gst_gl_handle_set_context( element.as_ref().to_glib_none().0, context.to_glib_none().0, &mut display, &mut other_context, )); if ret { (from_glib_full(display), from_glib_full(other_context)) } else { (None, None) } } } #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] #[doc(alias = "gst_gl_swizzle_invert")] pub fn gl_swizzle_invert(swizzle: [i32; 4]) -> [i32; 4] { unsafe { use std::mem; let mut inversion = mem::MaybeUninit::uninit(); ffi::gst_gl_swizzle_invert( mut_override(swizzle.as_ptr() as *const _), inversion.as_mut_ptr(), ); inversion.assume_init() } } #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] #[doc(alias = "gst_gl_video_format_swizzle")] pub fn gl_video_format_swizzle(video_format: gst_video::VideoFormat) -> Option<[i32; 4]> { unsafe { use std::mem; let mut swizzle = mem::MaybeUninit::uninit(); let res = from_glib(ffi::gst_gl_video_format_swizzle( video_format.into_glib(), swizzle.as_mut_ptr(), )); if res { Some(swizzle.assume_init()) } else { None } } }