use crate::GLContext;
use glib::{prelude::*, translate::*};
glib::wrapper! {
#[doc(alias = "GstGLUpload")]
pub struct GLUpload(Object<ffi::GstGLUpload, ffi::GstGLUploadClass>) @extends gst::Object;
match fn {
type_ => || ffi::gst_gl_upload_get_type(),
}
}
impl GLUpload {
#[doc(alias = "gst_gl_upload_new")]
pub fn new(context: &impl IsA<GLContext>) -> GLUpload {
skip_assert_initialized!();
unsafe { from_glib_full(ffi::gst_gl_upload_new(context.as_ref().to_glib_none().0)) }
}
#[cfg(feature = "v1_24")]
#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
#[doc(alias = "gst_gl_upload_fixate_caps")]
pub fn fixate_caps(
&self,
direction: gst::PadDirection,
caps: &gst::Caps,
othercaps: gst::Caps,
) -> gst::Caps {
unsafe {
from_glib_full(ffi::gst_gl_upload_fixate_caps(
self.to_glib_none().0,
direction.into_glib(),
caps.to_glib_none().0,
othercaps.into_glib_ptr(),
))
}
}
#[doc(alias = "gst_gl_upload_get_caps")]
#[doc(alias = "get_caps")]
pub fn caps(&self) -> (gst::Caps, gst::Caps) {
unsafe {
let mut in_caps = std::ptr::null_mut();
let mut out_caps = std::ptr::null_mut();
ffi::gst_gl_upload_get_caps(self.to_glib_none().0, &mut in_caps, &mut out_caps);
(from_glib_full(in_caps), from_glib_full(out_caps))
}
}
#[doc(alias = "gst_gl_upload_set_caps")]
pub fn set_caps(
&self,
in_caps: &gst::Caps,
out_caps: &gst::Caps,
) -> Result<(), glib::error::BoolError> {
unsafe {
glib::result_from_gboolean!(
ffi::gst_gl_upload_set_caps(
self.to_glib_none().0,
in_caps.to_glib_none().0,
out_caps.to_glib_none().0
),
"Failed to set caps"
)
}
}
#[doc(alias = "gst_gl_upload_set_context")]
pub fn set_context(&self, context: &impl IsA<GLContext>) {
unsafe {
ffi::gst_gl_upload_set_context(
self.to_glib_none().0,
context.as_ref().to_glib_none().0,
);
}
}
#[doc(alias = "gst_gl_upload_transform_caps")]
pub fn transform_caps(
&self,
context: &impl IsA<GLContext>,
direction: gst::PadDirection,
caps: &gst::Caps,
filter: &gst::Caps,
) -> gst::Caps {
unsafe {
from_glib_full(ffi::gst_gl_upload_transform_caps(
self.to_glib_none().0,
context.as_ref().to_glib_none().0,
direction.into_glib(),
caps.to_glib_none().0,
filter.to_glib_none().0,
))
}
}
#[doc(alias = "gst_gl_upload_get_input_template_caps")]
#[doc(alias = "get_input_template_caps")]
pub fn input_template_caps() -> gst::Caps {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::gst_gl_upload_get_input_template_caps()) }
}
}
unsafe impl Send for GLUpload {}
unsafe impl Sync for GLUpload {}