1 | // This file was generated by gir (https://github.com/gtk-rs/gir) |
2 | // from gir-files (https://github.com/gtk-rs/gir-files) |
3 | // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) |
4 | // DO NOT EDIT |
5 | |
6 | use crate::{ffi, GLBaseFilter, GLMemory, GLShader}; |
7 | use glib::{prelude::*, translate::*}; |
8 | |
9 | glib::wrapper! { |
10 | #[doc (alias = "GstGLFilter" )] |
11 | pub struct GLFilter(Object<ffi::GstGLFilter, ffi::GstGLFilterClass>) @extends GLBaseFilter, gst_base::BaseTransform, gst::Element, gst::Object; |
12 | |
13 | match fn { |
14 | type_ => || ffi::gst_gl_filter_get_type(), |
15 | } |
16 | } |
17 | |
18 | impl GLFilter { |
19 | pub const NONE: Option<&'static GLFilter> = None; |
20 | } |
21 | |
22 | unsafe impl Send for GLFilter {} |
23 | unsafe impl Sync for GLFilter {} |
24 | |
25 | mod sealed { |
26 | pub trait Sealed {} |
27 | impl<T: super::IsA<super::GLFilter>> Sealed for T {} |
28 | } |
29 | |
30 | pub trait GLFilterExt: IsA<GLFilter> + sealed::Sealed + 'static { |
31 | #[doc (alias = "gst_gl_filter_draw_fullscreen_quad" )] |
32 | fn draw_fullscreen_quad(&self) { |
33 | unsafe { |
34 | ffi::gst_gl_filter_draw_fullscreen_quad(self.as_ref().to_glib_none().0); |
35 | } |
36 | } |
37 | |
38 | #[doc (alias = "gst_gl_filter_filter_texture" )] |
39 | fn filter_texture( |
40 | &self, |
41 | input: &gst::Buffer, |
42 | output: &gst::Buffer, |
43 | ) -> Result<(), glib::error::BoolError> { |
44 | unsafe { |
45 | glib::result_from_gboolean!( |
46 | ffi::gst_gl_filter_filter_texture( |
47 | self.as_ref().to_glib_none().0, |
48 | input.to_glib_none().0, |
49 | output.to_glib_none().0 |
50 | ), |
51 | "Failed to transform texture" |
52 | ) |
53 | } |
54 | } |
55 | |
56 | #[doc (alias = "gst_gl_filter_render_to_target" )] |
57 | fn render_to_target<P: FnMut(&GLFilter, &GLMemory) -> bool>( |
58 | &self, |
59 | input: &GLMemory, |
60 | output: &GLMemory, |
61 | func: P, |
62 | ) -> Result<(), glib::error::BoolError> { |
63 | let mut func_data: P = func; |
64 | unsafe extern "C" fn func_func<P: FnMut(&GLFilter, &GLMemory) -> bool>( |
65 | filter: *mut ffi::GstGLFilter, |
66 | in_tex: *mut ffi::GstGLMemory, |
67 | user_data: glib::ffi::gpointer, |
68 | ) -> glib::ffi::gboolean { |
69 | let filter = from_glib_borrow(filter); |
70 | let in_tex = from_glib_borrow(in_tex); |
71 | let callback = user_data as *mut P; |
72 | (*callback)(&filter, &in_tex).into_glib() |
73 | } |
74 | let func = Some(func_func::<P> as _); |
75 | let super_callback0: &mut P = &mut func_data; |
76 | unsafe { |
77 | glib::result_from_gboolean!( |
78 | ffi::gst_gl_filter_render_to_target( |
79 | self.as_ref().to_glib_none().0, |
80 | mut_override(input.to_glib_none().0), |
81 | mut_override(output.to_glib_none().0), |
82 | func, |
83 | super_callback0 as *mut _ as *mut _ |
84 | ), |
85 | "`func` returned `false`" |
86 | ) |
87 | } |
88 | } |
89 | |
90 | #[doc (alias = "gst_gl_filter_render_to_target_with_shader" )] |
91 | fn render_to_target_with_shader(&self, input: &GLMemory, output: &GLMemory, shader: &GLShader) { |
92 | unsafe { |
93 | ffi::gst_gl_filter_render_to_target_with_shader( |
94 | self.as_ref().to_glib_none().0, |
95 | mut_override(input.to_glib_none().0), |
96 | mut_override(output.to_glib_none().0), |
97 | shader.to_glib_none().0, |
98 | ); |
99 | } |
100 | } |
101 | } |
102 | |
103 | impl<O: IsA<GLFilter>> GLFilterExt for O {} |
104 | |