Skip to main content

gstreamer_vulkan/auto/
vulkan_full_screen_quad.rs

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
6use crate::{VulkanCommandBuffer, VulkanFence, VulkanHandle, VulkanQueue, ffi};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10    ///
11    ///
12    /// # Implements
13    ///
14    /// [`VulkanFullScreenQuadExt`][trait@crate::prelude::VulkanFullScreenQuadExt], [`trait@gst::prelude::ObjectExt`], [`trait@glib::ObjectExt`], [`VulkanFullScreenQuadExtManual`][trait@crate::prelude::VulkanFullScreenQuadExtManual]
15    #[doc(alias = "GstVulkanFullScreenQuad")]
16    pub struct VulkanFullScreenQuad(Object<ffi::GstVulkanFullScreenQuad, ffi::GstVulkanFullScreenQuadClass>) @extends gst::Object;
17
18    match fn {
19        type_ => || ffi::gst_vulkan_full_screen_quad_get_type(),
20    }
21}
22
23impl VulkanFullScreenQuad {
24    pub const NONE: Option<&'static VulkanFullScreenQuad> = None;
25
26    /// ## `queue`
27    /// a [`VulkanQueue`][crate::VulkanQueue]
28    ///
29    /// # Returns
30    ///
31    /// a new [`VulkanFullScreenQuad`][crate::VulkanFullScreenQuad]
32    #[doc(alias = "gst_vulkan_full_screen_quad_new")]
33    pub fn new(queue: &impl IsA<VulkanQueue>) -> VulkanFullScreenQuad {
34        skip_assert_initialized!();
35        unsafe {
36            from_glib_full(ffi::gst_vulkan_full_screen_quad_new(
37                queue.as_ref().to_glib_none().0,
38            ))
39        }
40    }
41}
42
43unsafe impl Send for VulkanFullScreenQuad {}
44unsafe impl Sync for VulkanFullScreenQuad {}
45
46/// Trait containing all [`struct@VulkanFullScreenQuad`] methods.
47///
48/// # Implementors
49///
50/// [`VulkanFullScreenQuad`][struct@crate::VulkanFullScreenQuad]
51pub trait VulkanFullScreenQuadExt: IsA<VulkanFullScreenQuad> + 'static {
52    /// Helper function for creation and submission of a command buffer that draws
53    /// a full screen quad. If you need to add other things to the command buffer,
54    /// create the command buffer manually and call
55    /// [`prepare_draw()`][Self::prepare_draw()],
56    /// [`fill_command_buffer()`][Self::fill_command_buffer()] and
57    /// [`submit()`][Self::submit()] instead.
58    ///
59    /// # Returns
60    ///
61    /// whether the draw was successful
62    #[doc(alias = "gst_vulkan_full_screen_quad_draw")]
63    fn draw(&self) -> Result<(), glib::Error> {
64        unsafe {
65            let mut error = std::ptr::null_mut();
66            let is_ok =
67                ffi::gst_vulkan_full_screen_quad_draw(self.as_ref().to_glib_none().0, &mut error);
68            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
69            if error.is_null() {
70                Ok(())
71            } else {
72                Err(from_glib_full(error))
73            }
74        }
75    }
76
77    /// Enables blending of the input image to the output image.
78    ///
79    /// See also: `gst_vulkan_full_screen_quad_set_blend_operation()` and
80    /// `gst_vulkan_full_screen_quad_set_blend_factors()`.
81    /// ## `enable_blend`
82    /// whether to enable blending
83    #[doc(alias = "gst_vulkan_full_screen_quad_enable_blend")]
84    fn enable_blend(&self, enable_blend: bool) {
85        unsafe {
86            ffi::gst_vulkan_full_screen_quad_enable_blend(
87                self.as_ref().to_glib_none().0,
88                enable_blend.into_glib(),
89            );
90        }
91    }
92
93    /// ## `enable_clear`
94    /// whether to clear the framebuffer on load
95    #[doc(alias = "gst_vulkan_full_screen_quad_enable_clear")]
96    fn enable_clear(&self, enable_clear: bool) {
97        unsafe {
98            ffi::gst_vulkan_full_screen_quad_enable_clear(
99                self.as_ref().to_glib_none().0,
100                enable_clear.into_glib(),
101            );
102        }
103    }
104
105    /// `cmd` must be locked with `gst_vulkan_command_buffer_lock()`.
106    /// ## `cmd`
107    /// the [`VulkanCommandBuffer`][crate::VulkanCommandBuffer] to fill with commands
108    ///
109    /// # Returns
110    ///
111    /// whether `cmd` could be filled with the necessary commands
112    #[doc(alias = "gst_vulkan_full_screen_quad_fill_command_buffer")]
113    fn fill_command_buffer(
114        &self,
115        cmd: &mut VulkanCommandBuffer,
116        fence: &mut VulkanFence,
117    ) -> Result<(), glib::Error> {
118        unsafe {
119            let mut error = std::ptr::null_mut();
120            let is_ok = ffi::gst_vulkan_full_screen_quad_fill_command_buffer(
121                self.as_ref().to_glib_none().0,
122                cmd.to_glib_none_mut().0,
123                fence.to_glib_none_mut().0,
124                &mut error,
125            );
126            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
127            if error.is_null() {
128                Ok(())
129            } else {
130                Err(from_glib_full(error))
131            }
132        }
133    }
134
135    #[doc(alias = "gst_vulkan_full_screen_quad_get_last_fence")]
136    #[doc(alias = "get_last_fence")]
137    fn last_fence(&self) -> VulkanFence {
138        unsafe {
139            from_glib_full(ffi::gst_vulkan_full_screen_quad_get_last_fence(
140                self.as_ref().to_glib_none().0,
141            ))
142        }
143    }
144
145    ///
146    /// # Returns
147    ///
148    /// The currently configured
149    ///  [`VulkanQueue`][crate::VulkanQueue]
150    #[doc(alias = "gst_vulkan_full_screen_quad_get_queue")]
151    #[doc(alias = "get_queue")]
152    fn queue(&self) -> Option<VulkanQueue> {
153        unsafe {
154            from_glib_full(ffi::gst_vulkan_full_screen_quad_get_queue(
155                self.as_ref().to_glib_none().0,
156            ))
157        }
158    }
159
160    /// ## `fence`
161    /// a [`VulkanFence`][crate::VulkanFence] that will be signalled after submission
162    ///
163    /// # Returns
164    ///
165    /// whether the necessary information could be generated for drawing a
166    /// frame.
167    #[doc(alias = "gst_vulkan_full_screen_quad_prepare_draw")]
168    fn prepare_draw(&self, fence: &mut VulkanFence) -> Result<(), glib::Error> {
169        unsafe {
170            let mut error = std::ptr::null_mut();
171            let is_ok = ffi::gst_vulkan_full_screen_quad_prepare_draw(
172                self.as_ref().to_glib_none().0,
173                fence.to_glib_none_mut().0,
174                &mut error,
175            );
176            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
177            if error.is_null() {
178                Ok(())
179            } else {
180                Err(from_glib_full(error))
181            }
182        }
183    }
184
185    //#[doc(alias = "gst_vulkan_full_screen_quad_set_blend_factors")]
186    //fn set_blend_factors(&self, src_blend_factor: /*Ignored*/&vulkan::BlendFactor, dst_blend_factor: /*Ignored*/&vulkan::BlendFactor, src_alpha_blend_factor: /*Ignored*/&vulkan::BlendFactor, dst_alpha_blend_factor: /*Ignored*/&vulkan::BlendFactor) {
187    //    unsafe { TODO: call ffi:gst_vulkan_full_screen_quad_set_blend_factors() }
188    //}
189
190    //#[doc(alias = "gst_vulkan_full_screen_quad_set_blend_operation")]
191    //fn set_blend_operation(&self, colour_blend_op: /*Ignored*/&vulkan::BlendOp, alpha_blend_op: /*Ignored*/&vulkan::BlendOp) {
192    //    unsafe { TODO: call ffi:gst_vulkan_full_screen_quad_set_blend_operation() }
193    //}
194
195    /// Sets the immutable sampler used for input image descriptors. The sampler is
196    /// fixed in the descriptor set layout instead of being provided when updating
197    /// the descriptor set.
198    ///
199    /// This is required, for example, for samplers with
200    /// `VkSamplerYcbcrConversion`, whose conversion state must be fixed at pipeline
201    /// creation time.
202    /// ## `sampler`
203    /// a [`VulkanHandle`][crate::VulkanHandle]
204    ///
205    /// # Returns
206    ///
207    /// whether the sampler was set.
208    #[cfg(feature = "v1_30")]
209    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
210    #[doc(alias = "gst_vulkan_full_screen_quad_set_immutable_sampler")]
211    fn set_immutable_sampler(&self, sampler: &VulkanHandle) -> bool {
212        unsafe {
213            from_glib(ffi::gst_vulkan_full_screen_quad_set_immutable_sampler(
214                self.as_ref().to_glib_none().0,
215                sampler.to_glib_none().0,
216            ))
217        }
218    }
219
220    /// See also [`set_vertex_buffer()`][Self::set_vertex_buffer()]
221    /// ## `indices`
222    /// the index data. Must be a `GstVulkanBufferMemory`
223    /// ## `n_indices`
224    /// number of indices in `indices`
225    ///
226    /// # Returns
227    ///
228    /// whether the index data could be set
229    #[doc(alias = "gst_vulkan_full_screen_quad_set_index_buffer")]
230    fn set_index_buffer(&self, indices: &gst::Memory, n_indices: usize) -> Result<(), glib::Error> {
231        unsafe {
232            let mut error = std::ptr::null_mut();
233            let is_ok = ffi::gst_vulkan_full_screen_quad_set_index_buffer(
234                self.as_ref().to_glib_none().0,
235                indices.to_glib_none().0,
236                n_indices,
237                &mut error,
238            );
239            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
240            if error.is_null() {
241                Ok(())
242            } else {
243                Err(from_glib_full(error))
244            }
245        }
246    }
247
248    /// ## `in_info`
249    /// the input [`gst_video::VideoInfo`][crate::gst_video::VideoInfo] to set
250    /// ## `out_info`
251    /// the output [`gst_video::VideoInfo`][crate::gst_video::VideoInfo] to set
252    ///
253    /// # Returns
254    ///
255    /// whether the information could be successfully set
256    #[doc(alias = "gst_vulkan_full_screen_quad_set_info")]
257    fn set_info(&self, in_info: &gst_video::VideoInfo, out_info: &gst_video::VideoInfo) -> bool {
258        unsafe {
259            from_glib(ffi::gst_vulkan_full_screen_quad_set_info(
260                self.as_ref().to_glib_none().0,
261                in_info.to_glib_none().0,
262                out_info.to_glib_none().0,
263            ))
264        }
265    }
266
267    /// ## `buffer`
268    /// the input [`gst::Buffer`][crate::gst::Buffer] to set
269    ///
270    /// # Returns
271    ///
272    /// whether the input buffer could be changed
273    #[doc(alias = "gst_vulkan_full_screen_quad_set_input_buffer")]
274    fn set_input_buffer(&self, buffer: Option<&gst::Buffer>) -> Result<(), glib::Error> {
275        unsafe {
276            let mut error = std::ptr::null_mut();
277            let is_ok = ffi::gst_vulkan_full_screen_quad_set_input_buffer(
278                self.as_ref().to_glib_none().0,
279                buffer.to_glib_none().0,
280                &mut error,
281            );
282            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
283            if error.is_null() {
284                Ok(())
285            } else {
286                Err(from_glib_full(error))
287            }
288        }
289    }
290
291    /// ## `buffer`
292    /// the output [`gst::Buffer`][crate::gst::Buffer] to set
293    ///
294    /// # Returns
295    ///
296    /// whether the output buffer could be changed
297    #[doc(alias = "gst_vulkan_full_screen_quad_set_output_buffer")]
298    fn set_output_buffer(&self, buffer: Option<&gst::Buffer>) -> Result<(), glib::Error> {
299        unsafe {
300            let mut error = std::ptr::null_mut();
301            let is_ok = ffi::gst_vulkan_full_screen_quad_set_output_buffer(
302                self.as_ref().to_glib_none().0,
303                buffer.to_glib_none().0,
304                &mut error,
305            );
306            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
307            if error.is_null() {
308                Ok(())
309            } else {
310                Err(from_glib_full(error))
311            }
312        }
313    }
314
315    /// Sets the sampler used for input image descriptors. The sampler is provided
316    /// when updating the descriptor set.
317    /// ## `sampler`
318    /// a [`VulkanHandle`][crate::VulkanHandle]
319    ///
320    /// # Returns
321    ///
322    /// whether the sampler was set.
323    #[cfg(feature = "v1_30")]
324    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
325    #[doc(alias = "gst_vulkan_full_screen_quad_set_sampler")]
326    fn set_sampler(&self, sampler: &VulkanHandle) -> bool {
327        unsafe {
328            from_glib(ffi::gst_vulkan_full_screen_quad_set_sampler(
329                self.as_ref().to_glib_none().0,
330                sampler.to_glib_none().0,
331            ))
332        }
333    }
334
335    /// ## `vert`
336    /// the vertex shader to set
337    /// ## `frag`
338    /// the fragment shader to set
339    ///
340    /// # Returns
341    ///
342    /// whether the shaders could be set
343    #[doc(alias = "gst_vulkan_full_screen_quad_set_shaders")]
344    fn set_shaders(&self, vert: &VulkanHandle, frag: &VulkanHandle) -> bool {
345        unsafe {
346            from_glib(ffi::gst_vulkan_full_screen_quad_set_shaders(
347                self.as_ref().to_glib_none().0,
348                vert.to_glib_none().0,
349                frag.to_glib_none().0,
350            ))
351        }
352    }
353
354    /// ## `uniforms`
355    /// the uniform data to set. Must be a `GstVulkanBufferMemory`
356    ///
357    /// # Returns
358    ///
359    /// whether the uniform buffer could be set
360    #[doc(alias = "gst_vulkan_full_screen_quad_set_uniform_buffer")]
361    fn set_uniform_buffer(&self, uniforms: &gst::Memory) -> Result<(), glib::Error> {
362        unsafe {
363            let mut error = std::ptr::null_mut();
364            let is_ok = ffi::gst_vulkan_full_screen_quad_set_uniform_buffer(
365                self.as_ref().to_glib_none().0,
366                uniforms.to_glib_none().0,
367                &mut error,
368            );
369            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
370            if error.is_null() {
371                Ok(())
372            } else {
373                Err(from_glib_full(error))
374            }
375        }
376    }
377
378    /// ## `vertices`
379    /// the vertex data. Must be a `GstVulkanBufferMemory`
380    ///
381    /// # Returns
382    ///
383    /// whether the vertex data could be set
384    #[doc(alias = "gst_vulkan_full_screen_quad_set_vertex_buffer")]
385    fn set_vertex_buffer(&self, vertices: &gst::Memory) -> Result<(), glib::Error> {
386        unsafe {
387            let mut error = std::ptr::null_mut();
388            let is_ok = ffi::gst_vulkan_full_screen_quad_set_vertex_buffer(
389                self.as_ref().to_glib_none().0,
390                vertices.to_glib_none().0,
391                &mut error,
392            );
393            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
394            if error.is_null() {
395                Ok(())
396            } else {
397                Err(from_glib_full(error))
398            }
399        }
400    }
401
402    /// ## `cmd`
403    /// a [`VulkanCommandBuffer`][crate::VulkanCommandBuffer] to submit
404    /// ## `fence`
405    /// a [`VulkanFence`][crate::VulkanFence] to signal on completion
406    ///
407    /// # Returns
408    ///
409    /// whether `cmd` could be submitted to the queue
410    #[doc(alias = "gst_vulkan_full_screen_quad_submit")]
411    fn submit(&self, cmd: VulkanCommandBuffer, fence: &mut VulkanFence) -> Result<(), glib::Error> {
412        unsafe {
413            let mut error = std::ptr::null_mut();
414            let is_ok = ffi::gst_vulkan_full_screen_quad_submit(
415                self.as_ref().to_glib_none().0,
416                cmd.into_glib_ptr(),
417                fence.to_glib_none_mut().0,
418                &mut error,
419            );
420            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
421            if error.is_null() {
422                Ok(())
423            } else {
424                Err(from_glib_full(error))
425            }
426        }
427    }
428}
429
430impl<O: IsA<VulkanFullScreenQuad>> VulkanFullScreenQuadExt for O {}