1#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8 clippy::approx_constant,
9 clippy::type_complexity,
10 clippy::unreadable_literal,
11 clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gobject_sys as gobject;
17use gstreamer_base_sys as gst_base;
18use gstreamer_sys as gst;
19use gstreamer_video_sys as gst_video;
20
21mod manual;
22
23pub use manual::*;
24
25#[cfg(unix)]
26#[allow(unused_imports)]
27use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
28#[allow(unused_imports)]
29use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
30#[allow(unused_imports)]
31use std::ffi::{
32 c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
33};
34
35#[allow(unused_imports)]
36use glib::{gboolean, gconstpointer, gpointer, GType};
37
38pub type GstGLBaseMemoryError = c_int;
40pub const GST_GL_BASE_MEMORY_ERROR_FAILED: GstGLBaseMemoryError = 0;
41pub const GST_GL_BASE_MEMORY_ERROR_OLD_LIBS: GstGLBaseMemoryError = 1;
42pub const GST_GL_BASE_MEMORY_ERROR_RESOURCE_UNAVAILABLE: GstGLBaseMemoryError = 2;
43
44pub type GstGLConfigCaveat = c_int;
45pub const GST_GL_CONFIG_CAVEAT_NONE: GstGLConfigCaveat = 0;
46pub const GST_GL_CONFIG_CAVEAT_SLOW: GstGLConfigCaveat = 1;
47pub const GST_GL_CONFIG_CAVEAT_NON_CONFORMANT: GstGLConfigCaveat = 2;
48
49pub type GstGLContextError = c_int;
50pub const GST_GL_CONTEXT_ERROR_FAILED: GstGLContextError = 0;
51pub const GST_GL_CONTEXT_ERROR_WRONG_CONFIG: GstGLContextError = 1;
52pub const GST_GL_CONTEXT_ERROR_WRONG_API: GstGLContextError = 2;
53pub const GST_GL_CONTEXT_ERROR_OLD_LIBS: GstGLContextError = 3;
54pub const GST_GL_CONTEXT_ERROR_CREATE_CONTEXT: GstGLContextError = 4;
55pub const GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE: GstGLContextError = 5;
56
57pub type GstGLFormat = c_int;
58pub const GST_GL_LUMINANCE: GstGLFormat = 6409;
59pub const GST_GL_ALPHA: GstGLFormat = 6406;
60pub const GST_GL_LUMINANCE_ALPHA: GstGLFormat = 6410;
61pub const GST_GL_RED: GstGLFormat = 6403;
62pub const GST_GL_R8: GstGLFormat = 33321;
63pub const GST_GL_RG: GstGLFormat = 33319;
64pub const GST_GL_RG8: GstGLFormat = 33323;
65pub const GST_GL_RGB: GstGLFormat = 6407;
66pub const GST_GL_RGB8: GstGLFormat = 32849;
67pub const GST_GL_RGB565: GstGLFormat = 36194;
68pub const GST_GL_RGB16: GstGLFormat = 32852;
69pub const GST_GL_RGBA: GstGLFormat = 6408;
70pub const GST_GL_RGBA8: GstGLFormat = 32856;
71pub const GST_GL_RGBA16: GstGLFormat = 32859;
72pub const GST_GL_DEPTH_COMPONENT16: GstGLFormat = 33189;
73pub const GST_GL_DEPTH24_STENCIL8: GstGLFormat = 35056;
74pub const GST_GL_RGB10_A2: GstGLFormat = 32857;
75pub const GST_GL_R16: GstGLFormat = 33322;
76pub const GST_GL_RG16: GstGLFormat = 33324;
77
78pub type GstGLQueryType = c_int;
79pub const GST_GL_QUERY_NONE: GstGLQueryType = 0;
80pub const GST_GL_QUERY_TIME_ELAPSED: GstGLQueryType = 1;
81pub const GST_GL_QUERY_TIMESTAMP: GstGLQueryType = 2;
82
83pub type GstGLSLError = c_int;
84pub const GST_GLSL_ERROR_COMPILE: GstGLSLError = 0;
85pub const GST_GLSL_ERROR_LINK: GstGLSLError = 1;
86pub const GST_GLSL_ERROR_PROGRAM: GstGLSLError = 2;
87
88pub type GstGLSLVersion = c_int;
89pub const GST_GLSL_VERSION_NONE: GstGLSLVersion = 0;
90pub const GST_GLSL_VERSION_100: GstGLSLVersion = 100;
91pub const GST_GLSL_VERSION_110: GstGLSLVersion = 110;
92pub const GST_GLSL_VERSION_120: GstGLSLVersion = 120;
93pub const GST_GLSL_VERSION_130: GstGLSLVersion = 130;
94pub const GST_GLSL_VERSION_140: GstGLSLVersion = 140;
95pub const GST_GLSL_VERSION_150: GstGLSLVersion = 150;
96pub const GST_GLSL_VERSION_300: GstGLSLVersion = 300;
97pub const GST_GLSL_VERSION_310: GstGLSLVersion = 310;
98pub const GST_GLSL_VERSION_320: GstGLSLVersion = 320;
99pub const GST_GLSL_VERSION_330: GstGLSLVersion = 330;
100pub const GST_GLSL_VERSION_400: GstGLSLVersion = 400;
101pub const GST_GLSL_VERSION_410: GstGLSLVersion = 410;
102pub const GST_GLSL_VERSION_420: GstGLSLVersion = 420;
103pub const GST_GLSL_VERSION_430: GstGLSLVersion = 430;
104pub const GST_GLSL_VERSION_440: GstGLSLVersion = 440;
105pub const GST_GLSL_VERSION_450: GstGLSLVersion = 450;
106
107pub type GstGLStereoDownmix = c_int;
108pub const GST_GL_STEREO_DOWNMIX_ANAGLYPH_GREEN_MAGENTA_DUBOIS: GstGLStereoDownmix = 0;
109pub const GST_GL_STEREO_DOWNMIX_ANAGLYPH_RED_CYAN_DUBOIS: GstGLStereoDownmix = 1;
110pub const GST_GL_STEREO_DOWNMIX_ANAGLYPH_AMBER_BLUE_DUBOIS: GstGLStereoDownmix = 2;
111
112pub type GstGLTextureTarget = c_int;
113pub const GST_GL_TEXTURE_TARGET_NONE: GstGLTextureTarget = 0;
114pub const GST_GL_TEXTURE_TARGET_2D: GstGLTextureTarget = 1;
115pub const GST_GL_TEXTURE_TARGET_RECTANGLE: GstGLTextureTarget = 2;
116pub const GST_GL_TEXTURE_TARGET_EXTERNAL_OES: GstGLTextureTarget = 3;
117
118pub type GstGLUploadReturn = c_int;
119pub const GST_GL_UPLOAD_DONE: GstGLUploadReturn = 1;
120pub const GST_GL_UPLOAD_ERROR: GstGLUploadReturn = -1;
121pub const GST_GL_UPLOAD_UNSUPPORTED: GstGLUploadReturn = -2;
122pub const GST_GL_UPLOAD_RECONFIGURE: GstGLUploadReturn = -3;
123pub const GST_GL_UPLOAD_UNSHARED_GL_CONTEXT: GstGLUploadReturn = -100;
124
125pub type GstGLWindowError = c_int;
126pub const GST_GL_WINDOW_ERROR_FAILED: GstGLWindowError = 0;
127pub const GST_GL_WINDOW_ERROR_OLD_LIBS: GstGLWindowError = 1;
128pub const GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE: GstGLWindowError = 2;
129
130pub const GST_BUFFER_POOL_OPTION_GL_SYNC_META: &[u8] = b"GstBufferPoolOptionGLSyncMeta\0";
132pub const GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_2D: &[u8] =
133 b"GstBufferPoolOptionGLTextureTarget2D\0";
134pub const GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_EXTERNAL_OES: &[u8] =
135 b"GstBufferPoolOptionGLTextureTargetExternalOES\0";
136pub const GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_RECTANGLE: &[u8] =
137 b"GstBufferPoolOptionGLTextureTargetRectangle\0";
138pub const GST_CAPS_FEATURE_MEMORY_GL_BUFFER: &[u8] = b"memory:GLBuffer\0";
139pub const GST_CAPS_FEATURE_MEMORY_GL_MEMORY: &[u8] = b"memory:GLMemory\0";
140pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_ALLOC: c_int = 1;
141pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_BUFFER: c_int = 16;
142pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_USER: c_int = 65536;
143pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO: c_int = 8;
144pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE: c_int = 4;
145pub const GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM: c_int = 2;
146pub const GST_GL_API_GLES1_NAME: &[u8] = b"gles1\0";
147pub const GST_GL_API_GLES2_NAME: &[u8] = b"gles2\0";
148pub const GST_GL_API_OPENGL3_NAME: &[u8] = b"opengl3\0";
149pub const GST_GL_API_OPENGL_NAME: &[u8] = b"opengl\0";
150pub const GST_GL_BASE_MEMORY_ALLOCATOR_NAME: &[u8] = b"GLBaseMemory\0";
151pub const GST_GL_BUFFER_ALLOCATOR_NAME: &[u8] = b"GLBuffer\0";
152pub const GST_GL_CONFIG_STRUCTURE_NAME: &[u8] = b"gst-gl-context-config\0";
153pub const GST_GL_CONTEXT_TYPE_CGL: &[u8] = b"gst.gl.context.CGL\0";
154pub const GST_GL_CONTEXT_TYPE_EAGL: &[u8] = b"gst.gl.context.EAGL\0";
155pub const GST_GL_CONTEXT_TYPE_EGL: &[u8] = b"gst.gl.context.EGL\0";
156pub const GST_GL_CONTEXT_TYPE_GLX: &[u8] = b"gst.gl.context.GLX\0";
157pub const GST_GL_CONTEXT_TYPE_WGL: &[u8] = b"gst.gl.context.WGL\0";
158pub const GST_GL_DISPLAY_CONTEXT_TYPE: &[u8] = b"gst.gl.GLDisplay\0";
159pub const GST_GL_MEMORY_ALLOCATOR_NAME: &[u8] = b"GLMemory\0";
160pub const GST_GL_MEMORY_PBO_ALLOCATOR_NAME: &[u8] = b"GLMemoryPBO\0";
161pub const GST_GL_RENDERBUFFER_ALLOCATOR_NAME: &[u8] = b"GLRenderbuffer\0";
162pub const GST_GL_TEXTURE_TARGET_2D_STR: &[u8] = b"2D\0";
163pub const GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR: &[u8] = b"external-oes\0";
164pub const GST_GL_TEXTURE_TARGET_RECTANGLE_STR: &[u8] = b"rectangle\0";
165pub const GST_MAP_GL: c_int = 131072;
166
167pub type GstGLAPI = c_uint;
169pub const GST_GL_API_NONE: GstGLAPI = 0;
170pub const GST_GL_API_OPENGL: GstGLAPI = 1;
171pub const GST_GL_API_OPENGL3: GstGLAPI = 2;
172pub const GST_GL_API_GLES1: GstGLAPI = 32768;
173pub const GST_GL_API_GLES2: GstGLAPI = 65536;
174pub const GST_GL_API_ANY: GstGLAPI = 4294967295;
175
176pub type GstGLBaseMemoryTransfer = c_uint;
177pub const GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD: GstGLBaseMemoryTransfer = 1048576;
178pub const GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD: GstGLBaseMemoryTransfer = 2097152;
179
180pub type GstGLConfigSurfaceType = c_uint;
181pub const GST_GL_CONFIG_SURFACE_TYPE_NONE: GstGLConfigSurfaceType = 0;
182pub const GST_GL_CONFIG_SURFACE_TYPE_WINDOW: GstGLConfigSurfaceType = 1;
183pub const GST_GL_CONFIG_SURFACE_TYPE_PBUFFER: GstGLConfigSurfaceType = 2;
184pub const GST_GL_CONFIG_SURFACE_TYPE_PIXMAP: GstGLConfigSurfaceType = 4;
185
186pub type GstGLDisplayType = c_uint;
187pub const GST_GL_DISPLAY_TYPE_NONE: GstGLDisplayType = 0;
188pub const GST_GL_DISPLAY_TYPE_X11: GstGLDisplayType = 1;
189pub const GST_GL_DISPLAY_TYPE_WAYLAND: GstGLDisplayType = 2;
190pub const GST_GL_DISPLAY_TYPE_COCOA: GstGLDisplayType = 4;
191pub const GST_GL_DISPLAY_TYPE_WIN32: GstGLDisplayType = 8;
192pub const GST_GL_DISPLAY_TYPE_DISPMANX: GstGLDisplayType = 16;
193pub const GST_GL_DISPLAY_TYPE_EGL: GstGLDisplayType = 32;
194pub const GST_GL_DISPLAY_TYPE_VIV_FB: GstGLDisplayType = 64;
195pub const GST_GL_DISPLAY_TYPE_GBM: GstGLDisplayType = 128;
196#[cfg(feature = "v1_18")]
197#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
198pub const GST_GL_DISPLAY_TYPE_EGL_DEVICE: GstGLDisplayType = 256;
199#[cfg(feature = "v1_20")]
200#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
201pub const GST_GL_DISPLAY_TYPE_EAGL: GstGLDisplayType = 512;
202#[cfg(feature = "v1_20")]
203#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
204pub const GST_GL_DISPLAY_TYPE_WINRT: GstGLDisplayType = 1024;
205#[cfg(feature = "v1_20")]
206#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
207pub const GST_GL_DISPLAY_TYPE_ANDROID: GstGLDisplayType = 2048;
208#[cfg(feature = "v1_24")]
209#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
210pub const GST_GL_DISPLAY_TYPE_EGL_SURFACELESS: GstGLDisplayType = 4096;
211pub const GST_GL_DISPLAY_TYPE_ANY: GstGLDisplayType = 4294967295;
212
213pub type GstGLDrmFormatFlags = c_uint;
214#[cfg(feature = "v1_26")]
215#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
216pub const GST_GL_DRM_FORMAT_INCLUDE_EXTERNAL: GstGLDrmFormatFlags = 1;
217#[cfg(feature = "v1_26")]
218#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
219pub const GST_GL_DRM_FORMAT_LINEAR_ONLY: GstGLDrmFormatFlags = 2;
220#[cfg(feature = "v1_26")]
221#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
222pub const GST_GL_DRM_FORMAT_INCLUDE_EMULATED: GstGLDrmFormatFlags = 4;
223
224pub type GstGLPlatform = c_uint;
225pub const GST_GL_PLATFORM_NONE: GstGLPlatform = 0;
226pub const GST_GL_PLATFORM_EGL: GstGLPlatform = 1;
227pub const GST_GL_PLATFORM_GLX: GstGLPlatform = 2;
228pub const GST_GL_PLATFORM_WGL: GstGLPlatform = 4;
229pub const GST_GL_PLATFORM_CGL: GstGLPlatform = 8;
230pub const GST_GL_PLATFORM_EAGL: GstGLPlatform = 16;
231pub const GST_GL_PLATFORM_ANY: GstGLPlatform = 4294967295;
232
233pub type GstGLSLProfile = c_uint;
234pub const GST_GLSL_PROFILE_NONE: GstGLSLProfile = 0;
235pub const GST_GLSL_PROFILE_ES: GstGLSLProfile = 1;
236pub const GST_GLSL_PROFILE_CORE: GstGLSLProfile = 2;
237pub const GST_GLSL_PROFILE_COMPATIBILITY: GstGLSLProfile = 4;
238pub const GST_GLSL_PROFILE_ANY: GstGLSLProfile = 4294967295;
239
240pub type GstGLAllocationParamsCopyFunc =
242 Option<unsafe extern "C" fn(*mut GstGLAllocationParams, *mut GstGLAllocationParams)>;
243pub type GstGLAllocationParamsFreeFunc = Option<unsafe extern "C" fn(gpointer)>;
244pub type GstGLAsyncDebugLogGetMessage = Option<unsafe extern "C" fn(gpointer) -> *mut c_char>;
245pub type GstGLBaseMemoryAllocatorAllocFunction = Option<
246 unsafe extern "C" fn(
247 *mut GstGLBaseMemoryAllocator,
248 *mut GstGLAllocationParams,
249 ) -> *mut GstGLBaseMemory,
250>;
251pub type GstGLBaseMemoryAllocatorCopyFunction =
252 Option<unsafe extern "C" fn(*mut GstGLBaseMemory, ssize_t, ssize_t) -> *mut GstGLBaseMemory>;
253pub type GstGLBaseMemoryAllocatorCreateFunction =
254 Option<unsafe extern "C" fn(*mut GstGLBaseMemory, *mut *mut glib::GError) -> gboolean>;
255pub type GstGLBaseMemoryAllocatorDestroyFunction =
256 Option<unsafe extern "C" fn(*mut GstGLBaseMemory)>;
257pub type GstGLBaseMemoryAllocatorMapFunction =
258 Option<unsafe extern "C" fn(*mut GstGLBaseMemory, *mut gst::GstMapInfo, size_t) -> gpointer>;
259pub type GstGLBaseMemoryAllocatorUnmapFunction =
260 Option<unsafe extern "C" fn(*mut GstGLBaseMemory, *mut gst::GstMapInfo)>;
261pub type GstGLContextThreadFunc = Option<unsafe extern "C" fn(*mut GstGLContext, gpointer)>;
262pub type GstGLFilterRenderFunc =
263 Option<unsafe extern "C" fn(*mut GstGLFilter, *mut GstGLMemory, gpointer) -> gboolean>;
264pub type GstGLFramebufferFunc = Option<unsafe extern "C" fn(gpointer) -> gboolean>;
265pub type GstGLWindowCB = Option<unsafe extern "C" fn(gpointer)>;
266pub type GstGLWindowResizeCB = Option<unsafe extern "C" fn(gpointer, c_uint, c_uint)>;
267
268#[derive(Copy, Clone)]
270#[repr(C)]
271pub struct GstGLAllocationParams {
272 pub struct_size: size_t,
273 pub copy: GstGLAllocationParamsCopyFunc,
274 pub free: GstGLAllocationParamsFreeFunc,
275 pub alloc_flags: c_uint,
276 pub alloc_size: size_t,
277 pub alloc_params: *mut gst::GstAllocationParams,
278 pub context: *mut GstGLContext,
279 pub notify: glib::GDestroyNotify,
280 pub user_data: gpointer,
281 pub wrapped_data: gpointer,
282 pub gl_handle: gpointer,
283 pub _padding: [gpointer; 4],
284}
285
286impl ::std::fmt::Debug for GstGLAllocationParams {
287 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
288 f.debug_struct(&format!("GstGLAllocationParams @ {self:p}"))
289 .field("struct_size", &self.struct_size)
290 .field("copy", &self.copy)
291 .field("free", &self.free)
292 .field("alloc_flags", &self.alloc_flags)
293 .field("alloc_size", &self.alloc_size)
294 .field("alloc_params", &self.alloc_params)
295 .field("context", &self.context)
296 .field("notify", &self.notify)
297 .field("user_data", &self.user_data)
298 .field("wrapped_data", &self.wrapped_data)
299 .field("gl_handle", &self.gl_handle)
300 .finish()
301 }
302}
303
304#[derive(Copy, Clone)]
305#[repr(C)]
306pub struct GstGLAsyncDebug {
307 pub state_flags: c_uint,
308 pub cat: *mut gst::GstDebugCategory,
309 pub level: gst::GstDebugLevel,
310 pub file: *const c_char,
311 pub function: *const c_char,
312 pub line: c_int,
313 pub object: *mut gobject::GObject,
314 pub debug_msg: *mut c_char,
315 pub callback: GstGLAsyncDebugLogGetMessage,
316 pub user_data: gpointer,
317 pub notify: glib::GDestroyNotify,
318 pub _padding: [gpointer; 4],
319}
320
321impl ::std::fmt::Debug for GstGLAsyncDebug {
322 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
323 f.debug_struct(&format!("GstGLAsyncDebug @ {self:p}"))
324 .finish()
325 }
326}
327
328#[derive(Copy, Clone)]
329#[repr(C)]
330pub struct GstGLBaseFilterClass {
331 pub parent_class: gst_base::GstBaseTransformClass,
332 pub supported_gl_api: GstGLAPI,
333 pub gl_start: Option<unsafe extern "C" fn(*mut GstGLBaseFilter) -> gboolean>,
334 pub gl_stop: Option<unsafe extern "C" fn(*mut GstGLBaseFilter)>,
335 pub gl_set_caps: Option<
336 unsafe extern "C" fn(
337 *mut GstGLBaseFilter,
338 *mut gst::GstCaps,
339 *mut gst::GstCaps,
340 ) -> gboolean,
341 >,
342 pub _padding: [gpointer; 4],
343}
344
345impl ::std::fmt::Debug for GstGLBaseFilterClass {
346 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
347 f.debug_struct(&format!("GstGLBaseFilterClass @ {self:p}"))
348 .field("parent_class", &self.parent_class)
349 .field("supported_gl_api", &self.supported_gl_api)
350 .field("gl_start", &self.gl_start)
351 .field("gl_stop", &self.gl_stop)
352 .field("gl_set_caps", &self.gl_set_caps)
353 .finish()
354 }
355}
356
357#[repr(C)]
358#[allow(dead_code)]
359pub struct _GstGLBaseFilterPrivate {
360 _data: [u8; 0],
361 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
362}
363
364pub type GstGLBaseFilterPrivate = _GstGLBaseFilterPrivate;
365
366#[derive(Copy, Clone)]
367#[repr(C)]
368pub struct GstGLBaseMemory {
369 pub mem: gst::GstMemory,
370 pub context: *mut GstGLContext,
371 pub lock: glib::GMutex,
372 pub map_flags: gst::GstMapFlags,
373 pub map_count: c_int,
374 pub gl_map_count: c_int,
375 pub data: gpointer,
376 pub query: *mut GstGLQuery,
377 pub alloc_size: size_t,
378 pub alloc_data: gpointer,
379 pub notify: glib::GDestroyNotify,
380 pub user_data: gpointer,
381 pub _padding: [gpointer; 4],
382}
383
384impl ::std::fmt::Debug for GstGLBaseMemory {
385 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
386 f.debug_struct(&format!("GstGLBaseMemory @ {self:p}"))
387 .field("mem", &self.mem)
388 .field("context", &self.context)
389 .field("lock", &self.lock)
390 .field("map_flags", &self.map_flags)
391 .field("map_count", &self.map_count)
392 .field("gl_map_count", &self.gl_map_count)
393 .field("data", &self.data)
394 .field("query", &self.query)
395 .finish()
396 }
397}
398
399#[derive(Copy, Clone)]
400#[repr(C)]
401pub struct GstGLBaseMemoryAllocatorClass {
402 pub parent_class: gst::GstAllocatorClass,
403 pub alloc: GstGLBaseMemoryAllocatorAllocFunction,
404 pub create: GstGLBaseMemoryAllocatorCreateFunction,
405 pub map: GstGLBaseMemoryAllocatorMapFunction,
406 pub unmap: GstGLBaseMemoryAllocatorUnmapFunction,
407 pub copy: GstGLBaseMemoryAllocatorCopyFunction,
408 pub destroy: GstGLBaseMemoryAllocatorDestroyFunction,
409 pub _padding: [gpointer; 4],
410}
411
412impl ::std::fmt::Debug for GstGLBaseMemoryAllocatorClass {
413 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
414 f.debug_struct(&format!("GstGLBaseMemoryAllocatorClass @ {self:p}"))
415 .field("parent_class", &self.parent_class)
416 .field("alloc", &self.alloc)
417 .field("create", &self.create)
418 .field("map", &self.map)
419 .field("unmap", &self.unmap)
420 .field("copy", &self.copy)
421 .field("destroy", &self.destroy)
422 .finish()
423 }
424}
425
426#[derive(Copy, Clone)]
427#[repr(C)]
428pub struct GstGLBaseMixerClass {
429 pub parent_class: gst_video::GstVideoAggregatorClass,
430 pub supported_gl_api: GstGLAPI,
431 pub gl_start: Option<unsafe extern "C" fn(*mut GstGLBaseMixer) -> gboolean>,
432 pub gl_stop: Option<unsafe extern "C" fn(*mut GstGLBaseMixer)>,
433 pub _padding: [gpointer; 4],
434}
435
436impl ::std::fmt::Debug for GstGLBaseMixerClass {
437 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
438 f.debug_struct(&format!("GstGLBaseMixerClass @ {self:p}"))
439 .field("parent_class", &self.parent_class)
440 .field("supported_gl_api", &self.supported_gl_api)
441 .field("gl_start", &self.gl_start)
442 .field("gl_stop", &self.gl_stop)
443 .finish()
444 }
445}
446
447#[derive(Copy, Clone)]
448#[repr(C)]
449pub struct GstGLBaseMixerPadClass {
450 pub parent_class: gst_video::GstVideoAggregatorPadClass,
451 pub _padding: [gpointer; 4],
452}
453
454impl ::std::fmt::Debug for GstGLBaseMixerPadClass {
455 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
456 f.debug_struct(&format!("GstGLBaseMixerPadClass @ {self:p}"))
457 .field("parent_class", &self.parent_class)
458 .finish()
459 }
460}
461
462#[repr(C)]
463#[allow(dead_code)]
464pub struct _GstGLBaseMixerPrivate {
465 _data: [u8; 0],
466 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
467}
468
469pub type GstGLBaseMixerPrivate = _GstGLBaseMixerPrivate;
470
471#[derive(Copy, Clone)]
472#[repr(C)]
473pub struct GstGLBaseSrcClass {
474 pub parent_class: gst_base::GstPushSrcClass,
475 pub supported_gl_api: GstGLAPI,
476 pub gl_start: Option<unsafe extern "C" fn(*mut GstGLBaseSrc) -> gboolean>,
477 pub gl_stop: Option<unsafe extern "C" fn(*mut GstGLBaseSrc)>,
478 pub fill_gl_memory:
479 Option<unsafe extern "C" fn(*mut GstGLBaseSrc, *mut GstGLMemory) -> gboolean>,
480 pub _padding: [gpointer; 4],
481}
482
483impl ::std::fmt::Debug for GstGLBaseSrcClass {
484 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
485 f.debug_struct(&format!("GstGLBaseSrcClass @ {self:p}"))
486 .field("parent_class", &self.parent_class)
487 .field("supported_gl_api", &self.supported_gl_api)
488 .field("gl_start", &self.gl_start)
489 .field("gl_stop", &self.gl_stop)
490 .field("fill_gl_memory", &self.fill_gl_memory)
491 .finish()
492 }
493}
494
495#[repr(C)]
496#[allow(dead_code)]
497pub struct _GstGLBaseSrcPrivate {
498 _data: [u8; 0],
499 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
500}
501
502pub type GstGLBaseSrcPrivate = _GstGLBaseSrcPrivate;
503
504#[derive(Copy, Clone)]
505#[repr(C)]
506pub struct GstGLBuffer {
507 pub mem: GstGLBaseMemory,
508 pub id: c_uint,
509 pub target: c_uint,
510 pub usage_hints: c_uint,
511}
512
513impl ::std::fmt::Debug for GstGLBuffer {
514 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
515 f.debug_struct(&format!("GstGLBuffer @ {self:p}"))
516 .field("mem", &self.mem)
517 .field("id", &self.id)
518 .field("target", &self.target)
519 .field("usage_hints", &self.usage_hints)
520 .finish()
521 }
522}
523
524#[derive(Copy, Clone)]
525#[repr(C)]
526pub struct GstGLBufferAllocationParams {
527 pub parent: GstGLAllocationParams,
528 pub gl_target: c_uint,
529 pub gl_usage: c_uint,
530 pub _padding: [gpointer; 4],
531}
532
533impl ::std::fmt::Debug for GstGLBufferAllocationParams {
534 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
535 f.debug_struct(&format!("GstGLBufferAllocationParams @ {self:p}"))
536 .field("parent", &self.parent)
537 .field("gl_target", &self.gl_target)
538 .field("gl_usage", &self.gl_usage)
539 .finish()
540 }
541}
542
543#[derive(Copy, Clone)]
544#[repr(C)]
545pub struct GstGLBufferAllocatorClass {
546 pub parent_class: GstGLBaseMemoryAllocatorClass,
547 pub _padding: [gpointer; 4],
548}
549
550impl ::std::fmt::Debug for GstGLBufferAllocatorClass {
551 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
552 f.debug_struct(&format!("GstGLBufferAllocatorClass @ {self:p}"))
553 .field("parent_class", &self.parent_class)
554 .finish()
555 }
556}
557
558#[derive(Copy, Clone)]
559#[repr(C)]
560pub struct GstGLBufferPoolClass {
561 pub parent_class: gst::GstBufferPoolClass,
562 pub _padding: [gpointer; 4],
563}
564
565impl ::std::fmt::Debug for GstGLBufferPoolClass {
566 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
567 f.debug_struct(&format!("GstGLBufferPoolClass @ {self:p}"))
568 .field("parent_class", &self.parent_class)
569 .finish()
570 }
571}
572
573#[repr(C)]
574#[allow(dead_code)]
575pub struct _GstGLBufferPoolPrivate {
576 _data: [u8; 0],
577 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
578}
579
580pub type GstGLBufferPoolPrivate = _GstGLBufferPoolPrivate;
581
582#[derive(Copy, Clone)]
583#[repr(C)]
584pub struct GstGLColorConvertClass {
585 pub object_class: gst::GstObjectClass,
586 pub _padding: [gpointer; 4],
587}
588
589impl ::std::fmt::Debug for GstGLColorConvertClass {
590 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
591 f.debug_struct(&format!("GstGLColorConvertClass @ {self:p}"))
592 .finish()
593 }
594}
595
596#[repr(C)]
597#[allow(dead_code)]
598pub struct _GstGLColorConvertPrivate {
599 _data: [u8; 0],
600 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
601}
602
603pub type GstGLColorConvertPrivate = _GstGLColorConvertPrivate;
604
605#[derive(Copy, Clone)]
606#[repr(C)]
607pub struct GstGLContextClass {
608 pub parent_class: gst::GstObjectClass,
609 pub get_current_context: Option<unsafe extern "C" fn() -> uintptr_t>,
610 pub get_gl_context: Option<unsafe extern "C" fn(*mut GstGLContext) -> uintptr_t>,
611 pub get_gl_api: Option<unsafe extern "C" fn(*mut GstGLContext) -> GstGLAPI>,
612 pub get_gl_platform: Option<unsafe extern "C" fn(*mut GstGLContext) -> GstGLPlatform>,
613 pub get_proc_address: Option<unsafe extern "C" fn(GstGLAPI, *const c_char) -> gpointer>,
614 pub activate: Option<unsafe extern "C" fn(*mut GstGLContext, gboolean) -> gboolean>,
615 pub choose_format:
616 Option<unsafe extern "C" fn(*mut GstGLContext, *mut *mut glib::GError) -> gboolean>,
617 pub create_context: Option<
618 unsafe extern "C" fn(
619 *mut GstGLContext,
620 GstGLAPI,
621 *mut GstGLContext,
622 *mut *mut glib::GError,
623 ) -> gboolean,
624 >,
625 pub destroy_context: Option<unsafe extern "C" fn(*mut GstGLContext)>,
626 pub swap_buffers: Option<unsafe extern "C" fn(*mut GstGLContext)>,
627 pub check_feature: Option<unsafe extern "C" fn(*mut GstGLContext, *const c_char) -> gboolean>,
628 pub get_gl_platform_version:
629 Option<unsafe extern "C" fn(*mut GstGLContext, *mut c_int, *mut c_int)>,
630 pub get_config: Option<unsafe extern "C" fn(*mut GstGLContext) -> *mut gst::GstStructure>,
631 pub request_config:
632 Option<unsafe extern "C" fn(*mut GstGLContext, *mut gst::GstStructure) -> gboolean>,
633 pub _reserved: [gpointer; 2],
634}
635
636impl ::std::fmt::Debug for GstGLContextClass {
637 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
638 f.debug_struct(&format!("GstGLContextClass @ {self:p}"))
639 .field("parent_class", &self.parent_class)
640 .field("get_current_context", &self.get_current_context)
641 .field("get_gl_context", &self.get_gl_context)
642 .field("get_gl_api", &self.get_gl_api)
643 .field("get_gl_platform", &self.get_gl_platform)
644 .field("get_proc_address", &self.get_proc_address)
645 .field("activate", &self.activate)
646 .field("choose_format", &self.choose_format)
647 .field("create_context", &self.create_context)
648 .field("destroy_context", &self.destroy_context)
649 .field("swap_buffers", &self.swap_buffers)
650 .field("check_feature", &self.check_feature)
651 .field("get_gl_platform_version", &self.get_gl_platform_version)
652 .field("get_config", &self.get_config)
653 .field("request_config", &self.request_config)
654 .finish()
655 }
656}
657
658#[repr(C)]
659#[allow(dead_code)]
660pub struct _GstGLContextPrivate {
661 _data: [u8; 0],
662 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
663}
664
665pub type GstGLContextPrivate = _GstGLContextPrivate;
666
667#[derive(Copy, Clone)]
668#[repr(C)]
669pub struct GstGLDisplayClass {
670 pub object_class: gst::GstObjectClass,
671 pub get_handle: Option<unsafe extern "C" fn(*mut GstGLDisplay) -> uintptr_t>,
672 pub create_window: Option<unsafe extern "C" fn(*mut GstGLDisplay) -> *mut GstGLWindow>,
673 pub _padding: [gpointer; 4],
674}
675
676impl ::std::fmt::Debug for GstGLDisplayClass {
677 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
678 f.debug_struct(&format!("GstGLDisplayClass @ {self:p}"))
679 .field("object_class", &self.object_class)
680 .field("get_handle", &self.get_handle)
681 .field("create_window", &self.create_window)
682 .finish()
683 }
684}
685
686#[repr(C)]
687#[allow(dead_code)]
688pub struct _GstGLDisplayPrivate {
689 _data: [u8; 0],
690 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
691}
692
693pub type GstGLDisplayPrivate = _GstGLDisplayPrivate;
694
695#[derive(Copy, Clone)]
696#[repr(C)]
697pub struct GstGLFilterClass {
698 pub parent_class: GstGLBaseFilterClass,
699 pub set_caps: Option<
700 unsafe extern "C" fn(*mut GstGLFilter, *mut gst::GstCaps, *mut gst::GstCaps) -> gboolean,
701 >,
702 pub filter: Option<
703 unsafe extern "C" fn(
704 *mut GstGLFilter,
705 *mut gst::GstBuffer,
706 *mut gst::GstBuffer,
707 ) -> gboolean,
708 >,
709 pub filter_texture: Option<
710 unsafe extern "C" fn(*mut GstGLFilter, *mut GstGLMemory, *mut GstGLMemory) -> gboolean,
711 >,
712 pub init_fbo: Option<unsafe extern "C" fn(*mut GstGLFilter) -> gboolean>,
713 pub transform_internal_caps: Option<
714 unsafe extern "C" fn(
715 *mut GstGLFilter,
716 gst::GstPadDirection,
717 *mut gst::GstCaps,
718 *mut gst::GstCaps,
719 ) -> *mut gst::GstCaps,
720 >,
721 pub _padding: [gpointer; 4],
722}
723
724impl ::std::fmt::Debug for GstGLFilterClass {
725 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
726 f.debug_struct(&format!("GstGLFilterClass @ {self:p}"))
727 .field("parent_class", &self.parent_class)
728 .field("set_caps", &self.set_caps)
729 .field("filter", &self.filter)
730 .field("filter_texture", &self.filter_texture)
731 .field("init_fbo", &self.init_fbo)
732 .field("transform_internal_caps", &self.transform_internal_caps)
733 .finish()
734 }
735}
736
737#[derive(Copy, Clone)]
738#[repr(C)]
739pub struct GstGLFramebufferClass {
740 pub object_class: gst::GstObjectClass,
741 pub _padding: [gpointer; 4],
742}
743
744impl ::std::fmt::Debug for GstGLFramebufferClass {
745 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
746 f.debug_struct(&format!("GstGLFramebufferClass @ {self:p}"))
747 .finish()
748 }
749}
750
751#[repr(C)]
752#[allow(dead_code)]
753pub struct _GstGLFramebufferPrivate {
754 _data: [u8; 0],
755 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
756}
757
758pub type GstGLFramebufferPrivate = _GstGLFramebufferPrivate;
759
760#[repr(C)]
761#[allow(dead_code)]
762pub struct _GstGLFuncs {
763 _data: [u8; 0],
764 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
765}
766
767pub type GstGLFuncs = _GstGLFuncs;
768
769#[derive(Copy, Clone)]
770#[repr(C)]
771pub struct GstGLMemory {
772 pub mem: GstGLBaseMemory,
773 pub tex_id: c_uint,
774 pub tex_target: GstGLTextureTarget,
775 pub tex_format: GstGLFormat,
776 pub info: gst_video::GstVideoInfo,
777 pub valign: gst_video::GstVideoAlignment,
778 pub plane: c_uint,
779 pub tex_scaling: [c_float; 2],
780 pub texture_wrapped: gboolean,
781 pub unpack_length: c_uint,
782 pub tex_width: c_uint,
783 pub _padding: [gpointer; 4],
784}
785
786impl ::std::fmt::Debug for GstGLMemory {
787 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
788 f.debug_struct(&format!("GstGLMemory @ {self:p}"))
789 .field("mem", &self.mem)
790 .field("tex_id", &self.tex_id)
791 .field("tex_target", &self.tex_target)
792 .field("tex_format", &self.tex_format)
793 .field("info", &self.info)
794 .field("valign", &self.valign)
795 .field("plane", &self.plane)
796 .field("tex_scaling", &self.tex_scaling)
797 .field("texture_wrapped", &self.texture_wrapped)
798 .field("unpack_length", &self.unpack_length)
799 .field("tex_width", &self.tex_width)
800 .finish()
801 }
802}
803
804#[derive(Copy, Clone)]
805#[repr(C)]
806pub struct GstGLMemoryAllocatorClass {
807 pub parent_class: GstGLBaseMemoryAllocatorClass,
808 pub map: GstGLBaseMemoryAllocatorMapFunction,
809 pub copy: GstGLBaseMemoryAllocatorCopyFunction,
810 pub unmap: GstGLBaseMemoryAllocatorUnmapFunction,
811 pub _padding: [gpointer; 4],
812}
813
814impl ::std::fmt::Debug for GstGLMemoryAllocatorClass {
815 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
816 f.debug_struct(&format!("GstGLMemoryAllocatorClass @ {self:p}"))
817 .field("map", &self.map)
818 .field("copy", &self.copy)
819 .field("unmap", &self.unmap)
820 .finish()
821 }
822}
823
824#[derive(Copy, Clone)]
825#[repr(C)]
826pub struct GstGLMemoryPBO {
827 pub mem: GstGLMemory,
828 pub pbo: *mut GstGLBuffer,
829 pub _padding: [gpointer; 4],
830}
831
832impl ::std::fmt::Debug for GstGLMemoryPBO {
833 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
834 f.debug_struct(&format!("GstGLMemoryPBO @ {self:p}"))
835 .finish()
836 }
837}
838
839#[derive(Copy, Clone)]
840#[repr(C)]
841pub struct GstGLMemoryPBOAllocatorClass {
842 pub parent_class: GstGLMemoryAllocatorClass,
843 pub _padding: [gpointer; 4],
844}
845
846impl ::std::fmt::Debug for GstGLMemoryPBOAllocatorClass {
847 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
848 f.debug_struct(&format!("GstGLMemoryPBOAllocatorClass @ {self:p}"))
849 .field("parent_class", &self.parent_class)
850 .finish()
851 }
852}
853
854#[derive(Copy, Clone)]
855#[repr(C)]
856pub struct GstGLMixerClass {
857 pub parent_class: GstGLBaseMixerClass,
858 pub process_buffers:
859 Option<unsafe extern "C" fn(*mut GstGLMixer, *mut gst::GstBuffer) -> gboolean>,
860 pub process_textures:
861 Option<unsafe extern "C" fn(*mut GstGLMixer, *mut GstGLMemory) -> gboolean>,
862 pub _padding: [gpointer; 4],
863}
864
865impl ::std::fmt::Debug for GstGLMixerClass {
866 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
867 f.debug_struct(&format!("GstGLMixerClass @ {self:p}"))
868 .field("parent_class", &self.parent_class)
869 .field("process_buffers", &self.process_buffers)
870 .field("process_textures", &self.process_textures)
871 .finish()
872 }
873}
874
875#[derive(Copy, Clone)]
876#[repr(C)]
877pub struct GstGLMixerPadClass {
878 pub parent_class: GstGLBaseMixerPadClass,
879 pub _padding: [gpointer; 4],
880}
881
882impl ::std::fmt::Debug for GstGLMixerPadClass {
883 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
884 f.debug_struct(&format!("GstGLMixerPadClass @ {self:p}"))
885 .field("parent_class", &self.parent_class)
886 .finish()
887 }
888}
889
890#[repr(C)]
891#[allow(dead_code)]
892pub struct _GstGLMixerPrivate {
893 _data: [u8; 0],
894 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
895}
896
897pub type GstGLMixerPrivate = _GstGLMixerPrivate;
898
899#[derive(Copy, Clone)]
900#[repr(C)]
901pub struct GstGLOverlayCompositorClass {
902 pub object_class: gst::GstObjectClass,
903 pub _padding: [gpointer; 4],
904}
905
906impl ::std::fmt::Debug for GstGLOverlayCompositorClass {
907 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
908 f.debug_struct(&format!("GstGLOverlayCompositorClass @ {self:p}"))
909 .field("object_class", &self.object_class)
910 .finish()
911 }
912}
913
914#[derive(Copy, Clone)]
915#[repr(C)]
916pub struct GstGLQuery {
917 pub context: *mut GstGLContext,
918 pub query_type: c_uint,
919 pub query_id: c_uint,
920 pub supported: gboolean,
921 pub start_called: gboolean,
922 pub debug: GstGLAsyncDebug,
923 pub _padding: [gpointer; 4],
924}
925
926impl ::std::fmt::Debug for GstGLQuery {
927 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
928 f.debug_struct(&format!("GstGLQuery @ {self:p}")).finish()
929 }
930}
931
932#[derive(Copy, Clone)]
933#[repr(C)]
934pub struct GstGLRenderbuffer {
935 pub mem: GstGLBaseMemory,
936 pub renderbuffer_id: c_uint,
937 pub renderbuffer_format: GstGLFormat,
938 pub width: c_uint,
939 pub height: c_uint,
940 pub renderbuffer_wrapped: gboolean,
941 pub _padding: [gpointer; 4],
942}
943
944impl ::std::fmt::Debug for GstGLRenderbuffer {
945 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
946 f.debug_struct(&format!("GstGLRenderbuffer @ {self:p}"))
947 .field("renderbuffer_id", &self.renderbuffer_id)
948 .field("renderbuffer_format", &self.renderbuffer_format)
949 .field("width", &self.width)
950 .field("height", &self.height)
951 .field("renderbuffer_wrapped", &self.renderbuffer_wrapped)
952 .finish()
953 }
954}
955
956#[derive(Copy, Clone)]
957#[repr(C)]
958pub struct GstGLRenderbufferAllocationParams {
959 pub parent: GstGLAllocationParams,
960 pub renderbuffer_format: GstGLFormat,
961 pub width: c_uint,
962 pub height: c_uint,
963 pub _padding: [gpointer; 4],
964}
965
966impl ::std::fmt::Debug for GstGLRenderbufferAllocationParams {
967 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
968 f.debug_struct(&format!("GstGLRenderbufferAllocationParams @ {self:p}"))
969 .field("renderbuffer_format", &self.renderbuffer_format)
970 .field("width", &self.width)
971 .field("height", &self.height)
972 .finish()
973 }
974}
975
976#[derive(Copy, Clone)]
977#[repr(C)]
978pub struct GstGLRenderbufferAllocatorClass {
979 pub parent_class: GstGLBaseMemoryAllocatorClass,
980 pub _padding: [gpointer; 4],
981}
982
983impl ::std::fmt::Debug for GstGLRenderbufferAllocatorClass {
984 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
985 f.debug_struct(&format!("GstGLRenderbufferAllocatorClass @ {self:p}"))
986 .field("parent_class", &self.parent_class)
987 .finish()
988 }
989}
990
991#[derive(Copy, Clone)]
992#[repr(C)]
993pub struct GstGLSLStageClass {
994 pub parent: gst::GstObjectClass,
995 pub _padding: [gpointer; 4],
996}
997
998impl ::std::fmt::Debug for GstGLSLStageClass {
999 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1000 f.debug_struct(&format!("GstGLSLStageClass @ {self:p}"))
1001 .finish()
1002 }
1003}
1004
1005#[repr(C)]
1006#[allow(dead_code)]
1007pub struct _GstGLSLStagePrivate {
1008 _data: [u8; 0],
1009 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1010}
1011
1012pub type GstGLSLStagePrivate = _GstGLSLStagePrivate;
1013
1014#[derive(Copy, Clone)]
1015#[repr(C)]
1016pub struct GstGLShaderClass {
1017 pub parent_class: gst::GstObjectClass,
1018}
1019
1020impl ::std::fmt::Debug for GstGLShaderClass {
1021 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1022 f.debug_struct(&format!("GstGLShaderClass @ {self:p}"))
1023 .finish()
1024 }
1025}
1026
1027#[repr(C)]
1028#[allow(dead_code)]
1029pub struct _GstGLShaderPrivate {
1030 _data: [u8; 0],
1031 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1032}
1033
1034pub type GstGLShaderPrivate = _GstGLShaderPrivate;
1035
1036#[derive(Copy, Clone)]
1037#[repr(C)]
1038pub struct GstGLSyncMeta {
1039 pub parent: gst::GstMeta,
1040 pub context: *mut GstGLContext,
1041 pub data: gpointer,
1042 pub set_sync: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1043 pub set_sync_gl: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1044 pub wait: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1045 pub wait_gl: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1046 pub wait_cpu: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1047 pub wait_cpu_gl: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1048 pub copy: Option<
1049 unsafe extern "C" fn(
1050 *mut GstGLSyncMeta,
1051 *mut gst::GstBuffer,
1052 *mut GstGLSyncMeta,
1053 *mut gst::GstBuffer,
1054 ),
1055 >,
1056 pub free: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1057 pub free_gl: Option<unsafe extern "C" fn(*mut GstGLSyncMeta, *mut GstGLContext)>,
1058}
1059
1060impl ::std::fmt::Debug for GstGLSyncMeta {
1061 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1062 f.debug_struct(&format!("GstGLSyncMeta @ {self:p}"))
1063 .field("parent", &self.parent)
1064 .field("context", &self.context)
1065 .field("data", &self.data)
1066 .field("set_sync", &self.set_sync)
1067 .field("set_sync_gl", &self.set_sync_gl)
1068 .field("wait", &self.wait)
1069 .field("wait_gl", &self.wait_gl)
1070 .field("wait_cpu", &self.wait_cpu)
1071 .field("wait_cpu_gl", &self.wait_cpu_gl)
1072 .field("copy", &self.copy)
1073 .field("free", &self.free)
1074 .field("free_gl", &self.free_gl)
1075 .finish()
1076 }
1077}
1078
1079#[derive(Copy, Clone)]
1080#[repr(C)]
1081pub struct GstGLUploadClass {
1082 pub object_class: gst::GstObjectClass,
1083 pub _padding: [gpointer; 4],
1084}
1085
1086impl ::std::fmt::Debug for GstGLUploadClass {
1087 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1088 f.debug_struct(&format!("GstGLUploadClass @ {self:p}"))
1089 .field("object_class", &self.object_class)
1090 .finish()
1091 }
1092}
1093
1094#[repr(C)]
1095#[allow(dead_code)]
1096pub struct _GstGLUploadPrivate {
1097 _data: [u8; 0],
1098 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1099}
1100
1101pub type GstGLUploadPrivate = _GstGLUploadPrivate;
1102
1103#[derive(Copy, Clone)]
1104#[repr(C)]
1105pub struct GstGLVideoAllocationParams {
1106 pub parent: GstGLAllocationParams,
1107 pub v_info: *mut gst_video::GstVideoInfo,
1108 pub plane: c_uint,
1109 pub valign: *mut gst_video::GstVideoAlignment,
1110 pub target: GstGLTextureTarget,
1111 pub tex_format: GstGLFormat,
1112 pub _padding: [gpointer; 4],
1113}
1114
1115impl ::std::fmt::Debug for GstGLVideoAllocationParams {
1116 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1117 f.debug_struct(&format!("GstGLVideoAllocationParams @ {self:p}"))
1118 .field("parent", &self.parent)
1119 .field("v_info", &self.v_info)
1120 .field("plane", &self.plane)
1121 .field("valign", &self.valign)
1122 .field("target", &self.target)
1123 .field("tex_format", &self.tex_format)
1124 .finish()
1125 }
1126}
1127
1128#[derive(Copy, Clone)]
1129#[repr(C)]
1130pub struct GstGLViewConvertClass {
1131 pub object_class: gst::GstObjectClass,
1132 pub _padding: [gpointer; 4],
1133}
1134
1135impl ::std::fmt::Debug for GstGLViewConvertClass {
1136 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1137 f.debug_struct(&format!("GstGLViewConvertClass @ {self:p}"))
1138 .finish()
1139 }
1140}
1141
1142#[repr(C)]
1143#[allow(dead_code)]
1144pub struct _GstGLViewConvertPrivate {
1145 _data: [u8; 0],
1146 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1147}
1148
1149pub type GstGLViewConvertPrivate = _GstGLViewConvertPrivate;
1150
1151#[derive(Copy, Clone)]
1152#[repr(C)]
1153pub struct GstGLWindowClass {
1154 pub parent_class: gst::GstObjectClass,
1155 pub get_display: Option<unsafe extern "C" fn(*mut GstGLWindow) -> uintptr_t>,
1156 pub set_window_handle: Option<unsafe extern "C" fn(*mut GstGLWindow, uintptr_t)>,
1157 pub get_window_handle: Option<unsafe extern "C" fn(*mut GstGLWindow) -> uintptr_t>,
1158 pub draw: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1159 pub run: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1160 pub quit: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1161 pub send_message: Option<unsafe extern "C" fn(*mut GstGLWindow, GstGLWindowCB, gpointer)>,
1162 pub send_message_async: Option<
1163 unsafe extern "C" fn(*mut GstGLWindow, GstGLWindowCB, gpointer, glib::GDestroyNotify),
1164 >,
1165 pub open: Option<unsafe extern "C" fn(*mut GstGLWindow, *mut *mut glib::GError) -> gboolean>,
1166 pub close: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1167 pub handle_events: Option<unsafe extern "C" fn(*mut GstGLWindow, gboolean)>,
1168 pub set_preferred_size: Option<unsafe extern "C" fn(*mut GstGLWindow, c_int, c_int)>,
1169 pub show: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1170 pub set_render_rectangle:
1171 Option<unsafe extern "C" fn(*mut GstGLWindow, c_int, c_int, c_int, c_int) -> gboolean>,
1172 pub queue_resize: Option<unsafe extern "C" fn(*mut GstGLWindow)>,
1173 pub controls_viewport: Option<unsafe extern "C" fn(*mut GstGLWindow) -> gboolean>,
1174 pub has_output_surface: Option<unsafe extern "C" fn(*mut GstGLWindow) -> gboolean>,
1175 pub _reserved: [gpointer; 2],
1176}
1177
1178impl ::std::fmt::Debug for GstGLWindowClass {
1179 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1180 f.debug_struct(&format!("GstGLWindowClass @ {self:p}"))
1181 .field("parent_class", &self.parent_class)
1182 .field("get_display", &self.get_display)
1183 .field("set_window_handle", &self.set_window_handle)
1184 .field("get_window_handle", &self.get_window_handle)
1185 .field("draw", &self.draw)
1186 .field("run", &self.run)
1187 .field("quit", &self.quit)
1188 .field("send_message", &self.send_message)
1189 .field("send_message_async", &self.send_message_async)
1190 .field("open", &self.open)
1191 .field("close", &self.close)
1192 .field("handle_events", &self.handle_events)
1193 .field("set_preferred_size", &self.set_preferred_size)
1194 .field("show", &self.show)
1195 .field("set_render_rectangle", &self.set_render_rectangle)
1196 .field("queue_resize", &self.queue_resize)
1197 .field("controls_viewport", &self.controls_viewport)
1198 .field("has_output_surface", &self.has_output_surface)
1199 .finish()
1200 }
1201}
1202
1203#[repr(C)]
1204#[allow(dead_code)]
1205pub struct _GstGLWindowPrivate {
1206 _data: [u8; 0],
1207 _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1208}
1209
1210pub type GstGLWindowPrivate = _GstGLWindowPrivate;
1211
1212#[derive(Copy, Clone)]
1214#[repr(C)]
1215pub struct GstGLBaseFilter {
1216 pub parent: gst_base::GstBaseTransform,
1217 pub display: *mut GstGLDisplay,
1218 pub context: *mut GstGLContext,
1219 pub in_caps: *mut gst::GstCaps,
1220 pub out_caps: *mut gst::GstCaps,
1221 pub _padding: [gpointer; 4],
1222 pub priv_: *mut GstGLBaseFilterPrivate,
1223}
1224
1225impl ::std::fmt::Debug for GstGLBaseFilter {
1226 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1227 f.debug_struct(&format!("GstGLBaseFilter @ {self:p}"))
1228 .field("parent", &self.parent)
1229 .field("display", &self.display)
1230 .field("context", &self.context)
1231 .field("in_caps", &self.in_caps)
1232 .field("out_caps", &self.out_caps)
1233 .finish()
1234 }
1235}
1236
1237#[derive(Copy, Clone)]
1238#[repr(C)]
1239pub struct GstGLBaseMemoryAllocator {
1240 pub parent: gst::GstAllocator,
1241 pub fallback_mem_copy: gst::GstMemoryCopyFunction,
1242 pub _padding: [gpointer; 4],
1243}
1244
1245impl ::std::fmt::Debug for GstGLBaseMemoryAllocator {
1246 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1247 f.debug_struct(&format!("GstGLBaseMemoryAllocator @ {self:p}"))
1248 .finish()
1249 }
1250}
1251
1252#[derive(Copy, Clone)]
1253#[repr(C)]
1254pub struct GstGLBaseMixer {
1255 pub parent: gst_video::GstVideoAggregator,
1256 pub display: *mut GstGLDisplay,
1257 pub context: *mut GstGLContext,
1258 pub _padding: [gpointer; 4],
1259 pub priv_: *mut GstGLBaseMixerPrivate,
1260}
1261
1262impl ::std::fmt::Debug for GstGLBaseMixer {
1263 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1264 f.debug_struct(&format!("GstGLBaseMixer @ {self:p}"))
1265 .field("parent", &self.parent)
1266 .field("display", &self.display)
1267 .field("context", &self.context)
1268 .finish()
1269 }
1270}
1271
1272#[derive(Copy, Clone)]
1273#[repr(C)]
1274pub struct GstGLBaseMixerPad {
1275 pub parent: gst_video::GstVideoAggregatorPad,
1276 pub _padding: [gpointer; 4],
1277}
1278
1279impl ::std::fmt::Debug for GstGLBaseMixerPad {
1280 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1281 f.debug_struct(&format!("GstGLBaseMixerPad @ {self:p}"))
1282 .field("parent", &self.parent)
1283 .finish()
1284 }
1285}
1286
1287#[derive(Copy, Clone)]
1288#[repr(C)]
1289pub struct GstGLBaseSrc {
1290 pub parent: gst_base::GstPushSrc,
1291 pub display: *mut GstGLDisplay,
1292 pub context: *mut GstGLContext,
1293 pub out_info: gst_video::GstVideoInfo,
1294 pub out_caps: *mut gst::GstCaps,
1295 pub running_time: gst::GstClockTime,
1296 pub _padding: [gpointer; 4],
1297 pub priv_: *mut GstGLBaseSrcPrivate,
1298}
1299
1300impl ::std::fmt::Debug for GstGLBaseSrc {
1301 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1302 f.debug_struct(&format!("GstGLBaseSrc @ {self:p}"))
1303 .field("parent", &self.parent)
1304 .field("display", &self.display)
1305 .field("context", &self.context)
1306 .field("out_info", &self.out_info)
1307 .field("out_caps", &self.out_caps)
1308 .field("running_time", &self.running_time)
1309 .finish()
1310 }
1311}
1312
1313#[derive(Copy, Clone)]
1314#[repr(C)]
1315pub struct GstGLBufferAllocator {
1316 pub parent: GstGLBaseMemoryAllocator,
1317 pub _padding: [gpointer; 4],
1318}
1319
1320impl ::std::fmt::Debug for GstGLBufferAllocator {
1321 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1322 f.debug_struct(&format!("GstGLBufferAllocator @ {self:p}"))
1323 .field("parent", &self.parent)
1324 .finish()
1325 }
1326}
1327
1328#[derive(Copy, Clone)]
1329#[repr(C)]
1330pub struct GstGLBufferPool {
1331 pub bufferpool: gst::GstBufferPool,
1332 pub context: *mut GstGLContext,
1333 pub priv_: *mut GstGLBufferPoolPrivate,
1334 pub _padding: [gpointer; 4],
1335}
1336
1337impl ::std::fmt::Debug for GstGLBufferPool {
1338 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1339 f.debug_struct(&format!("GstGLBufferPool @ {self:p}"))
1340 .field("bufferpool", &self.bufferpool)
1341 .field("context", &self.context)
1342 .finish()
1343 }
1344}
1345
1346#[derive(Copy, Clone)]
1347#[repr(C)]
1348pub struct GstGLColorConvert {
1349 pub parent: gst::GstObject,
1350 pub context: *mut GstGLContext,
1351 pub in_info: gst_video::GstVideoInfo,
1352 pub out_info: gst_video::GstVideoInfo,
1353 pub initted: gboolean,
1354 pub passthrough: gboolean,
1355 pub inbuf: *mut gst::GstBuffer,
1356 pub outbuf: *mut gst::GstBuffer,
1357 pub fbo: *mut GstGLFramebuffer,
1358 pub shader: *mut GstGLShader,
1359 pub priv_: *mut GstGLColorConvertPrivate,
1360 pub _reserved: [gpointer; 4],
1361}
1362
1363impl ::std::fmt::Debug for GstGLColorConvert {
1364 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1365 f.debug_struct(&format!("GstGLColorConvert @ {self:p}"))
1366 .finish()
1367 }
1368}
1369
1370#[derive(Copy, Clone)]
1371#[repr(C)]
1372pub struct GstGLContext {
1373 pub parent: gst::GstObject,
1374 pub display: *mut GstGLDisplay,
1375 pub window: *mut GstGLWindow,
1376 pub gl_vtable: *mut GstGLFuncs,
1377 pub priv_: *mut GstGLContextPrivate,
1378 pub _reserved: [gpointer; 4],
1379}
1380
1381impl ::std::fmt::Debug for GstGLContext {
1382 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1383 f.debug_struct(&format!("GstGLContext @ {self:p}"))
1384 .field("gl_vtable", &self.gl_vtable)
1385 .finish()
1386 }
1387}
1388
1389#[derive(Copy, Clone)]
1390#[repr(C)]
1391pub struct GstGLDisplay {
1392 pub object: gst::GstObject,
1393 pub type_: GstGLDisplayType,
1394 pub windows: *mut glib::GList,
1395 pub main_context: *mut glib::GMainContext,
1396 pub main_loop: *mut glib::GMainLoop,
1397 pub event_source: *mut glib::GSource,
1398 pub priv_: *mut GstGLDisplayPrivate,
1399}
1400
1401impl ::std::fmt::Debug for GstGLDisplay {
1402 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1403 f.debug_struct(&format!("GstGLDisplay @ {self:p}")).finish()
1404 }
1405}
1406
1407#[derive(Copy, Clone)]
1408#[repr(C)]
1409pub struct GstGLFilter {
1410 pub parent: GstGLBaseFilter,
1411 pub in_info: gst_video::GstVideoInfo,
1412 pub out_info: gst_video::GstVideoInfo,
1413 pub in_texture_target: GstGLTextureTarget,
1414 pub out_texture_target: GstGLTextureTarget,
1415 pub out_caps: *mut gst::GstCaps,
1416 pub fbo: *mut GstGLFramebuffer,
1417 pub gl_result: gboolean,
1418 pub inbuf: *mut gst::GstBuffer,
1419 pub outbuf: *mut gst::GstBuffer,
1420 pub default_shader: *mut GstGLShader,
1421 pub valid_attributes: gboolean,
1422 pub vao: c_uint,
1423 pub vbo_indices: c_uint,
1424 pub vertex_buffer: c_uint,
1425 pub draw_attr_position_loc: c_int,
1426 pub draw_attr_texture_loc: c_int,
1427 pub _padding: [gpointer; 4],
1428}
1429
1430impl ::std::fmt::Debug for GstGLFilter {
1431 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1432 f.debug_struct(&format!("GstGLFilter @ {self:p}"))
1433 .field("parent", &self.parent)
1434 .field("in_info", &self.in_info)
1435 .field("out_info", &self.out_info)
1436 .field("in_texture_target", &self.in_texture_target)
1437 .field("out_texture_target", &self.out_texture_target)
1438 .field("out_caps", &self.out_caps)
1439 .field("fbo", &self.fbo)
1440 .finish()
1441 }
1442}
1443
1444#[derive(Copy, Clone)]
1445#[repr(C)]
1446pub struct GstGLFramebuffer {
1447 pub object: gst::GstObject,
1448 pub context: *mut GstGLContext,
1449 pub fbo_id: c_uint,
1450 pub attachments: *mut glib::GArray,
1451 pub _padding: [gpointer; 4],
1452 pub priv_: *mut GstGLFramebufferPrivate,
1453}
1454
1455impl ::std::fmt::Debug for GstGLFramebuffer {
1456 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1457 f.debug_struct(&format!("GstGLFramebuffer @ {self:p}"))
1458 .finish()
1459 }
1460}
1461
1462#[derive(Copy, Clone)]
1463#[repr(C)]
1464pub struct GstGLMemoryAllocator {
1465 pub parent: GstGLBaseMemoryAllocator,
1466 pub _padding: [gpointer; 4],
1467}
1468
1469impl ::std::fmt::Debug for GstGLMemoryAllocator {
1470 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1471 f.debug_struct(&format!("GstGLMemoryAllocator @ {self:p}"))
1472 .finish()
1473 }
1474}
1475
1476#[derive(Copy, Clone)]
1477#[repr(C)]
1478pub struct GstGLMemoryPBOAllocator {
1479 pub parent: GstGLMemoryAllocator,
1480 pub _padding: [gpointer; 4],
1481}
1482
1483impl ::std::fmt::Debug for GstGLMemoryPBOAllocator {
1484 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1485 f.debug_struct(&format!("GstGLMemoryPBOAllocator @ {self:p}"))
1486 .field("parent", &self.parent)
1487 .finish()
1488 }
1489}
1490
1491#[derive(Copy, Clone)]
1492#[repr(C)]
1493pub struct GstGLMixer {
1494 pub parent: GstGLBaseMixer,
1495 pub out_caps: *mut gst::GstCaps,
1496 pub priv_: *mut GstGLMixerPrivate,
1497 pub _padding: [gpointer; 4],
1498}
1499
1500impl ::std::fmt::Debug for GstGLMixer {
1501 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1502 f.debug_struct(&format!("GstGLMixer @ {self:p}"))
1503 .field("parent", &self.parent)
1504 .field("out_caps", &self.out_caps)
1505 .finish()
1506 }
1507}
1508
1509#[derive(Copy, Clone)]
1510#[repr(C)]
1511pub struct GstGLMixerPad {
1512 pub parent: GstGLBaseMixerPad,
1513 pub current_texture: c_uint,
1514 pub _padding: [gpointer; 4],
1515}
1516
1517impl ::std::fmt::Debug for GstGLMixerPad {
1518 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1519 f.debug_struct(&format!("GstGLMixerPad @ {self:p}"))
1520 .field("parent", &self.parent)
1521 .field("current_texture", &self.current_texture)
1522 .finish()
1523 }
1524}
1525
1526#[derive(Copy, Clone)]
1527#[repr(C)]
1528pub struct GstGLOverlayCompositor {
1529 pub parent: gst::GstObject,
1530 pub context: *mut GstGLContext,
1531 pub last_window_width: c_uint,
1532 pub last_window_height: c_uint,
1533 pub overlays: *mut glib::GList,
1534 pub shader: *mut GstGLShader,
1535 pub position_attrib: c_int,
1536 pub texcoord_attrib: c_int,
1537 pub _padding: [gpointer; 4],
1538}
1539
1540impl ::std::fmt::Debug for GstGLOverlayCompositor {
1541 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1542 f.debug_struct(&format!("GstGLOverlayCompositor @ {self:p}"))
1543 .finish()
1544 }
1545}
1546
1547#[derive(Copy, Clone)]
1548#[repr(C)]
1549pub struct GstGLRenderbufferAllocator {
1550 pub parent: GstGLBaseMemoryAllocator,
1551 pub _padding: [gpointer; 4],
1552}
1553
1554impl ::std::fmt::Debug for GstGLRenderbufferAllocator {
1555 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1556 f.debug_struct(&format!("GstGLRenderbufferAllocator @ {self:p}"))
1557 .field("parent", &self.parent)
1558 .finish()
1559 }
1560}
1561
1562#[derive(Copy, Clone)]
1563#[repr(C)]
1564pub struct GstGLSLStage {
1565 pub parent: gst::GstObject,
1566 pub context: *mut GstGLContext,
1567 pub priv_: *mut GstGLSLStagePrivate,
1568 pub _padding: [gpointer; 4],
1569}
1570
1571impl ::std::fmt::Debug for GstGLSLStage {
1572 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1573 f.debug_struct(&format!("GstGLSLStage @ {self:p}")).finish()
1574 }
1575}
1576
1577#[derive(Copy, Clone)]
1578#[repr(C)]
1579pub struct GstGLShader {
1580 pub parent: gst::GstObject,
1581 pub context: *mut GstGLContext,
1582 pub priv_: *mut GstGLShaderPrivate,
1583 pub _padding: [gpointer; 4],
1584}
1585
1586impl ::std::fmt::Debug for GstGLShader {
1587 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1588 f.debug_struct(&format!("GstGLShader @ {self:p}"))
1589 .field("parent", &self.parent)
1590 .field("context", &self.context)
1591 .finish()
1592 }
1593}
1594
1595#[derive(Copy, Clone)]
1596#[repr(C)]
1597pub struct GstGLUpload {
1598 pub parent: gst::GstObject,
1599 pub context: *mut GstGLContext,
1600 pub priv_: *mut GstGLUploadPrivate,
1601 pub _reserved: [gpointer; 4],
1602}
1603
1604impl ::std::fmt::Debug for GstGLUpload {
1605 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1606 f.debug_struct(&format!("GstGLUpload @ {self:p}"))
1607 .field("parent", &self.parent)
1608 .field("context", &self.context)
1609 .finish()
1610 }
1611}
1612
1613#[derive(Copy, Clone)]
1614#[repr(C)]
1615pub struct GstGLViewConvert {
1616 pub object: gst::GstObject,
1617 pub context: *mut GstGLContext,
1618 pub shader: *mut GstGLShader,
1619 pub input_mode_override: gst_video::GstVideoMultiviewMode,
1620 pub input_flags_override: gst_video::GstVideoMultiviewFlags,
1621 pub output_mode_override: gst_video::GstVideoMultiviewMode,
1622 pub output_flags_override: gst_video::GstVideoMultiviewFlags,
1623 pub downmix_mode: GstGLStereoDownmix,
1624 pub in_info: gst_video::GstVideoInfo,
1625 pub out_info: gst_video::GstVideoInfo,
1626 pub from_texture_target: GstGLTextureTarget,
1627 pub to_texture_target: GstGLTextureTarget,
1628 pub caps_passthrough: gboolean,
1629 pub initted: gboolean,
1630 pub reconfigure: gboolean,
1631 pub fbo: *mut GstGLFramebuffer,
1632 pub priv_: *mut GstGLViewConvertPrivate,
1633 pub _padding: [gpointer; 4],
1634}
1635
1636impl ::std::fmt::Debug for GstGLViewConvert {
1637 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1638 f.debug_struct(&format!("GstGLViewConvert @ {self:p}"))
1639 .field("object", &self.object)
1640 .field("context", &self.context)
1641 .field("shader", &self.shader)
1642 .field("input_mode_override", &self.input_mode_override)
1643 .field("input_flags_override", &self.input_flags_override)
1644 .field("output_mode_override", &self.output_mode_override)
1645 .field("output_flags_override", &self.output_flags_override)
1646 .field("downmix_mode", &self.downmix_mode)
1647 .field("in_info", &self.in_info)
1648 .field("out_info", &self.out_info)
1649 .field("from_texture_target", &self.from_texture_target)
1650 .field("to_texture_target", &self.to_texture_target)
1651 .field("caps_passthrough", &self.caps_passthrough)
1652 .field("initted", &self.initted)
1653 .field("reconfigure", &self.reconfigure)
1654 .field("fbo", &self.fbo)
1655 .finish()
1656 }
1657}
1658
1659#[derive(Copy, Clone)]
1660#[repr(C)]
1661pub struct GstGLWindow {
1662 pub parent: gst::GstObject,
1663 pub lock: glib::GMutex,
1664 pub display: *mut GstGLDisplay,
1665 pub context_ref: gobject::GWeakRef,
1666 pub is_drawing: gboolean,
1667 pub draw: GstGLWindowCB,
1668 pub draw_data: gpointer,
1669 pub draw_notify: glib::GDestroyNotify,
1670 pub close: GstGLWindowCB,
1671 pub close_data: gpointer,
1672 pub close_notify: glib::GDestroyNotify,
1673 pub resize: GstGLWindowResizeCB,
1674 pub resize_data: gpointer,
1675 pub resize_notify: glib::GDestroyNotify,
1676 pub queue_resize: gboolean,
1677 pub main_context: *mut glib::GMainContext,
1678 pub priv_: *mut GstGLWindowPrivate,
1679 pub _reserved: [gpointer; 4],
1680}
1681
1682impl ::std::fmt::Debug for GstGLWindow {
1683 fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1684 f.debug_struct(&format!("GstGLWindow @ {self:p}")).finish()
1685 }
1686}
1687
1688extern "C" {
1689
1690 pub fn gst_gl_base_memory_error_get_type() -> GType;
1694 pub fn gst_gl_base_memory_error_quark() -> glib::GQuark;
1695
1696 #[cfg(feature = "v1_20")]
1700 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1701 pub fn gst_gl_config_caveat_get_type() -> GType;
1702 #[cfg(feature = "v1_20")]
1703 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1704 pub fn gst_gl_config_caveat_to_string(caveat: GstGLConfigCaveat) -> *const c_char;
1705
1706 pub fn gst_gl_context_error_get_type() -> GType;
1710 pub fn gst_gl_context_error_quark() -> glib::GQuark;
1711
1712 pub fn gst_gl_format_get_type() -> GType;
1716 pub fn gst_gl_format_from_video_info(
1717 context: *mut GstGLContext,
1718 vinfo: *const gst_video::GstVideoInfo,
1719 plane: c_uint,
1720 ) -> GstGLFormat;
1721 #[cfg(feature = "v1_16")]
1722 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1723 pub fn gst_gl_format_is_supported(context: *mut GstGLContext, format: GstGLFormat) -> gboolean;
1724 #[cfg(feature = "v1_24")]
1725 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1726 pub fn gst_gl_format_n_components(gl_format: GstGLFormat) -> c_uint;
1727 #[cfg(feature = "v1_16")]
1728 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
1729 pub fn gst_gl_format_type_from_sized_gl_format(
1730 format: GstGLFormat,
1731 unsized_format: *mut GstGLFormat,
1732 gl_type: *mut c_uint,
1733 );
1734 pub fn gst_gl_format_type_n_bytes(format: c_uint, type_: c_uint) -> c_uint;
1735
1736 pub fn gst_gl_query_type_get_type() -> GType;
1740
1741 pub fn gst_glsl_error_get_type() -> GType;
1745 pub fn gst_glsl_error_quark() -> glib::GQuark;
1746
1747 pub fn gst_glsl_version_get_type() -> GType;
1751 pub fn gst_glsl_version_from_string(string: *const c_char) -> GstGLSLVersion;
1752 pub fn gst_glsl_version_profile_from_string(
1753 string: *const c_char,
1754 version_ret: *mut GstGLSLVersion,
1755 profile_ret: *mut GstGLSLProfile,
1756 ) -> gboolean;
1757 pub fn gst_glsl_version_profile_to_string(
1758 version: GstGLSLVersion,
1759 profile: GstGLSLProfile,
1760 ) -> *mut c_char;
1761 pub fn gst_glsl_version_to_string(version: GstGLSLVersion) -> *const c_char;
1762
1763 pub fn gst_gl_stereo_downmix_get_type() -> GType;
1767
1768 pub fn gst_gl_texture_target_get_type() -> GType;
1772 pub fn gst_gl_texture_target_from_gl(target: c_uint) -> GstGLTextureTarget;
1773 pub fn gst_gl_texture_target_from_string(str: *const c_char) -> GstGLTextureTarget;
1774 pub fn gst_gl_texture_target_to_buffer_pool_option(target: GstGLTextureTarget)
1775 -> *const c_char;
1776 pub fn gst_gl_texture_target_to_gl(target: GstGLTextureTarget) -> c_uint;
1777 pub fn gst_gl_texture_target_to_string(target: GstGLTextureTarget) -> *const c_char;
1778
1779 pub fn gst_gl_upload_return_get_type() -> GType;
1783
1784 pub fn gst_gl_window_error_get_type() -> GType;
1788 pub fn gst_gl_window_error_quark() -> glib::GQuark;
1789
1790 pub fn gst_gl_api_get_type() -> GType;
1794 pub fn gst_gl_api_from_string(api_s: *const c_char) -> GstGLAPI;
1795 pub fn gst_gl_api_to_string(api: GstGLAPI) -> *mut c_char;
1796
1797 pub fn gst_gl_base_memory_transfer_get_type() -> GType;
1801
1802 #[cfg(feature = "v1_20")]
1806 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1807 pub fn gst_gl_config_surface_type_get_type() -> GType;
1808 #[cfg(feature = "v1_20")]
1809 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1810 pub fn gst_gl_config_surface_type_to_string(
1811 surface_type: GstGLConfigSurfaceType,
1812 ) -> *const c_char;
1813
1814 pub fn gst_gl_display_type_get_type() -> GType;
1818
1819 #[cfg(feature = "v1_26")]
1823 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1824 pub fn gst_gl_drm_format_flags_get_type() -> GType;
1825
1826 pub fn gst_gl_platform_get_type() -> GType;
1830 pub fn gst_gl_platform_from_string(platform_s: *const c_char) -> GstGLPlatform;
1831 pub fn gst_gl_platform_to_string(platform: GstGLPlatform) -> *mut c_char;
1832
1833 pub fn gst_glsl_profile_get_type() -> GType;
1837 pub fn gst_glsl_profile_from_string(string: *const c_char) -> GstGLSLProfile;
1838 pub fn gst_glsl_profile_to_string(profile: GstGLSLProfile) -> *const c_char;
1839
1840 pub fn gst_gl_allocation_params_get_type() -> GType;
1844 pub fn gst_gl_allocation_params_copy(
1845 src: *mut GstGLAllocationParams,
1846 ) -> *mut GstGLAllocationParams;
1847 pub fn gst_gl_allocation_params_copy_data(
1848 src: *mut GstGLAllocationParams,
1849 dest: *mut GstGLAllocationParams,
1850 );
1851 pub fn gst_gl_allocation_params_free(params: *mut GstGLAllocationParams);
1852 pub fn gst_gl_allocation_params_free_data(params: *mut GstGLAllocationParams);
1853 pub fn gst_gl_allocation_params_init(
1854 params: *mut GstGLAllocationParams,
1855 struct_size: size_t,
1856 alloc_flags: c_uint,
1857 copy: GstGLAllocationParamsCopyFunc,
1858 free: GstGLAllocationParamsFreeFunc,
1859 context: *mut GstGLContext,
1860 alloc_size: size_t,
1861 alloc_params: *const gst::GstAllocationParams,
1862 wrapped_data: gpointer,
1863 gl_handle: gpointer,
1864 user_data: gpointer,
1865 notify: glib::GDestroyNotify,
1866 ) -> gboolean;
1867
1868 pub fn gst_gl_async_debug_free(ad: *mut GstGLAsyncDebug);
1872 pub fn gst_gl_async_debug_freeze(ad: *mut GstGLAsyncDebug);
1873 pub fn gst_gl_async_debug_init(ad: *mut GstGLAsyncDebug);
1874 pub fn gst_gl_async_debug_output_log_msg(ad: *mut GstGLAsyncDebug);
1875 pub fn gst_gl_async_debug_store_log_msg(
1876 ad: *mut GstGLAsyncDebug,
1877 cat: *mut gst::GstDebugCategory,
1878 level: gst::GstDebugLevel,
1879 file: *const c_char,
1880 function: *const c_char,
1881 line: c_int,
1882 object: *mut gobject::GObject,
1883 format: *const c_char,
1884 ...
1885 );
1886 pub fn gst_gl_async_debug_thaw(ad: *mut GstGLAsyncDebug);
1888 pub fn gst_gl_async_debug_unset(ad: *mut GstGLAsyncDebug);
1889 pub fn gst_gl_async_debug_new() -> *mut GstGLAsyncDebug;
1890
1891 pub fn gst_gl_base_memory_get_type() -> GType;
1895 pub fn gst_gl_base_memory_alloc_data(gl_mem: *mut GstGLBaseMemory) -> gboolean;
1896 pub fn gst_gl_base_memory_init(
1897 mem: *mut GstGLBaseMemory,
1898 allocator: *mut gst::GstAllocator,
1899 parent: *mut gst::GstMemory,
1900 context: *mut GstGLContext,
1901 params: *const gst::GstAllocationParams,
1902 size: size_t,
1903 user_data: gpointer,
1904 notify: glib::GDestroyNotify,
1905 );
1906 pub fn gst_gl_base_memory_memcpy(
1907 src: *mut GstGLBaseMemory,
1908 dest: *mut GstGLBaseMemory,
1909 offset: ssize_t,
1910 size: ssize_t,
1911 ) -> gboolean;
1912 pub fn gst_gl_base_memory_alloc(
1913 allocator: *mut GstGLBaseMemoryAllocator,
1914 params: *mut GstGLAllocationParams,
1915 ) -> *mut GstGLBaseMemory;
1916 pub fn gst_gl_base_memory_init_once();
1917
1918 #[cfg(feature = "v1_20")]
1922 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1923 pub fn gst_gl_buffer_get_type() -> GType;
1924 pub fn gst_gl_buffer_init_once();
1925
1926 pub fn gst_gl_buffer_allocation_params_get_type() -> GType;
1930 pub fn gst_gl_buffer_allocation_params_new(
1931 context: *mut GstGLContext,
1932 alloc_size: size_t,
1933 alloc_params: *const gst::GstAllocationParams,
1934 gl_target: c_uint,
1935 gl_usage: c_uint,
1936 ) -> *mut GstGLBufferAllocationParams;
1937
1938 #[cfg(feature = "v1_20")]
1942 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1943 pub fn gst_gl_memory_get_type() -> GType;
1944 pub fn gst_gl_memory_copy_into(
1945 gl_mem: *mut GstGLMemory,
1946 tex_id: c_uint,
1947 target: GstGLTextureTarget,
1948 tex_format: GstGLFormat,
1949 width: c_int,
1950 height: c_int,
1951 ) -> gboolean;
1952 pub fn gst_gl_memory_copy_teximage(
1953 src: *mut GstGLMemory,
1954 tex_id: c_uint,
1955 out_target: GstGLTextureTarget,
1956 out_tex_format: GstGLFormat,
1957 out_width: c_int,
1958 out_height: c_int,
1959 ) -> gboolean;
1960 pub fn gst_gl_memory_get_texture_format(gl_mem: *mut GstGLMemory) -> GstGLFormat;
1961 pub fn gst_gl_memory_get_texture_height(gl_mem: *mut GstGLMemory) -> c_int;
1962 pub fn gst_gl_memory_get_texture_id(gl_mem: *mut GstGLMemory) -> c_uint;
1963 pub fn gst_gl_memory_get_texture_target(gl_mem: *mut GstGLMemory) -> GstGLTextureTarget;
1964 pub fn gst_gl_memory_get_texture_width(gl_mem: *mut GstGLMemory) -> c_int;
1965 pub fn gst_gl_memory_init(
1966 mem: *mut GstGLMemory,
1967 allocator: *mut gst::GstAllocator,
1968 parent: *mut gst::GstMemory,
1969 context: *mut GstGLContext,
1970 target: GstGLTextureTarget,
1971 tex_format: GstGLFormat,
1972 params: *const gst::GstAllocationParams,
1973 info: *const gst_video::GstVideoInfo,
1974 plane: c_uint,
1975 valign: *const gst_video::GstVideoAlignment,
1976 user_data: gpointer,
1977 notify: glib::GDestroyNotify,
1978 );
1979 pub fn gst_gl_memory_read_pixels(gl_mem: *mut GstGLMemory, write_pointer: gpointer)
1980 -> gboolean;
1981 pub fn gst_gl_memory_texsubimage(gl_mem: *mut GstGLMemory, read_pointer: gpointer);
1982 pub fn gst_gl_memory_init_once();
1983 pub fn gst_gl_memory_setup_buffer(
1984 allocator: *mut GstGLMemoryAllocator,
1985 buffer: *mut gst::GstBuffer,
1986 params: *mut GstGLVideoAllocationParams,
1987 tex_formats: *mut GstGLFormat,
1988 wrapped_data: *mut gpointer,
1989 n_wrapped_pointers: size_t,
1990 ) -> gboolean;
1991
1992 #[cfg(feature = "v1_20")]
1996 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1997 pub fn gst_gl_memory_pbo_get_type() -> GType;
1998 pub fn gst_gl_memory_pbo_copy_into_texture(
1999 gl_mem: *mut GstGLMemoryPBO,
2000 tex_id: c_uint,
2001 target: GstGLTextureTarget,
2002 tex_format: GstGLFormat,
2003 width: c_int,
2004 height: c_int,
2005 stride: c_int,
2006 respecify: gboolean,
2007 ) -> gboolean;
2008 pub fn gst_gl_memory_pbo_download_transfer(gl_mem: *mut GstGLMemoryPBO);
2009 pub fn gst_gl_memory_pbo_upload_transfer(gl_mem: *mut GstGLMemoryPBO);
2010 pub fn gst_gl_memory_pbo_init_once();
2011
2012 #[cfg(feature = "v1_24")]
2016 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2017 pub fn gst_gl_mixer_class_add_rgba_pad_templates(klass: *mut GstGLMixerClass);
2018
2019 pub fn gst_gl_query_counter(query: *mut GstGLQuery);
2023 pub fn gst_gl_query_end(query: *mut GstGLQuery);
2024 pub fn gst_gl_query_free(query: *mut GstGLQuery);
2025 pub fn gst_gl_query_init(
2026 query: *mut GstGLQuery,
2027 context: *mut GstGLContext,
2028 query_type: GstGLQueryType,
2029 );
2030 pub fn gst_gl_query_result(query: *mut GstGLQuery) -> u64;
2031 pub fn gst_gl_query_start(query: *mut GstGLQuery);
2032 pub fn gst_gl_query_unset(query: *mut GstGLQuery);
2033 pub fn gst_gl_query_local_gl_context(
2034 element: *mut gst::GstElement,
2035 direction: gst::GstPadDirection,
2036 context_ptr: *mut *mut GstGLContext,
2037 ) -> gboolean;
2038 pub fn gst_gl_query_new(
2039 context: *mut GstGLContext,
2040 query_type: GstGLQueryType,
2041 ) -> *mut GstGLQuery;
2042
2043 #[cfg(feature = "v1_20")]
2047 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2048 pub fn gst_gl_renderbuffer_get_type() -> GType;
2049 pub fn gst_gl_renderbuffer_get_format(gl_mem: *mut GstGLRenderbuffer) -> GstGLFormat;
2050 pub fn gst_gl_renderbuffer_get_height(gl_mem: *mut GstGLRenderbuffer) -> c_int;
2051 pub fn gst_gl_renderbuffer_get_id(gl_mem: *mut GstGLRenderbuffer) -> c_uint;
2052 pub fn gst_gl_renderbuffer_get_width(gl_mem: *mut GstGLRenderbuffer) -> c_int;
2053 pub fn gst_gl_renderbuffer_init_once();
2054
2055 pub fn gst_gl_renderbuffer_allocation_params_get_type() -> GType;
2059 pub fn gst_gl_renderbuffer_allocation_params_new(
2060 context: *mut GstGLContext,
2061 alloc_params: *const gst::GstAllocationParams,
2062 renderbuffer_format: GstGLFormat,
2063 width: c_uint,
2064 height: c_uint,
2065 ) -> *mut GstGLRenderbufferAllocationParams;
2066 pub fn gst_gl_renderbuffer_allocation_params_new_wrapped(
2067 context: *mut GstGLContext,
2068 alloc_params: *const gst::GstAllocationParams,
2069 renderbuffer_format: GstGLFormat,
2070 width: c_uint,
2071 height: c_uint,
2072 gl_handle: gpointer,
2073 user_data: gpointer,
2074 notify: glib::GDestroyNotify,
2075 ) -> *mut GstGLRenderbufferAllocationParams;
2076
2077 pub fn gst_gl_sync_meta_set_sync_point(
2081 sync_meta: *mut GstGLSyncMeta,
2082 context: *mut GstGLContext,
2083 );
2084 pub fn gst_gl_sync_meta_wait(sync_meta: *mut GstGLSyncMeta, context: *mut GstGLContext);
2085 pub fn gst_gl_sync_meta_wait_cpu(sync_meta: *mut GstGLSyncMeta, context: *mut GstGLContext);
2086 pub fn gst_gl_sync_meta_get_info() -> *const gst::GstMetaInfo;
2087
2088 pub fn gst_gl_video_allocation_params_get_type() -> GType;
2092 pub fn gst_gl_video_allocation_params_new(
2093 context: *mut GstGLContext,
2094 alloc_params: *const gst::GstAllocationParams,
2095 v_info: *const gst_video::GstVideoInfo,
2096 plane: c_uint,
2097 valign: *const gst_video::GstVideoAlignment,
2098 target: GstGLTextureTarget,
2099 tex_format: GstGLFormat,
2100 ) -> *mut GstGLVideoAllocationParams;
2101 pub fn gst_gl_video_allocation_params_new_wrapped_data(
2102 context: *mut GstGLContext,
2103 alloc_params: *const gst::GstAllocationParams,
2104 v_info: *const gst_video::GstVideoInfo,
2105 plane: c_uint,
2106 valign: *const gst_video::GstVideoAlignment,
2107 target: GstGLTextureTarget,
2108 tex_format: GstGLFormat,
2109 wrapped_data: gpointer,
2110 user_data: gpointer,
2111 notify: glib::GDestroyNotify,
2112 ) -> *mut GstGLVideoAllocationParams;
2113 pub fn gst_gl_video_allocation_params_new_wrapped_gl_handle(
2114 context: *mut GstGLContext,
2115 alloc_params: *const gst::GstAllocationParams,
2116 v_info: *const gst_video::GstVideoInfo,
2117 plane: c_uint,
2118 valign: *const gst_video::GstVideoAlignment,
2119 target: GstGLTextureTarget,
2120 tex_format: GstGLFormat,
2121 gl_handle: gpointer,
2122 user_data: gpointer,
2123 notify: glib::GDestroyNotify,
2124 ) -> *mut GstGLVideoAllocationParams;
2125 pub fn gst_gl_video_allocation_params_new_wrapped_texture(
2126 context: *mut GstGLContext,
2127 alloc_params: *const gst::GstAllocationParams,
2128 v_info: *const gst_video::GstVideoInfo,
2129 plane: c_uint,
2130 valign: *const gst_video::GstVideoAlignment,
2131 target: GstGLTextureTarget,
2132 tex_format: GstGLFormat,
2133 tex_id: c_uint,
2134 user_data: gpointer,
2135 notify: glib::GDestroyNotify,
2136 ) -> *mut GstGLVideoAllocationParams;
2137 pub fn gst_gl_video_allocation_params_copy_data(
2138 src_vid: *mut GstGLVideoAllocationParams,
2139 dest_vid: *mut GstGLVideoAllocationParams,
2140 );
2141 pub fn gst_gl_video_allocation_params_free_data(params: *mut GstGLVideoAllocationParams);
2142 pub fn gst_gl_video_allocation_params_init_full(
2143 params: *mut GstGLVideoAllocationParams,
2144 struct_size: size_t,
2145 alloc_flags: c_uint,
2146 copy: GstGLAllocationParamsCopyFunc,
2147 free: GstGLAllocationParamsFreeFunc,
2148 context: *mut GstGLContext,
2149 alloc_params: *const gst::GstAllocationParams,
2150 v_info: *const gst_video::GstVideoInfo,
2151 plane: c_uint,
2152 valign: *const gst_video::GstVideoAlignment,
2153 target: GstGLTextureTarget,
2154 tex_format: GstGLFormat,
2155 wrapped_data: gpointer,
2156 gl_handle: gpointer,
2157 user_data: gpointer,
2158 notify: glib::GDestroyNotify,
2159 ) -> gboolean;
2160
2161 pub fn gst_gl_base_filter_get_type() -> GType;
2165 #[cfg(feature = "v1_16")]
2166 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2167 pub fn gst_gl_base_filter_find_gl_context(filter: *mut GstGLBaseFilter) -> gboolean;
2168 #[cfg(feature = "v1_18")]
2169 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2170 pub fn gst_gl_base_filter_get_gl_context(filter: *mut GstGLBaseFilter) -> *mut GstGLContext;
2171
2172 pub fn gst_gl_base_memory_allocator_get_type() -> GType;
2176
2177 #[cfg(feature = "v1_24")]
2181 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2182 pub fn gst_gl_base_mixer_get_type() -> GType;
2183 #[cfg(feature = "v1_24")]
2184 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2185 pub fn gst_gl_base_mixer_get_gl_context(mix: *mut GstGLBaseMixer) -> *mut GstGLContext;
2186
2187 #[cfg(feature = "v1_24")]
2191 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2192 pub fn gst_gl_base_mixer_pad_get_type() -> GType;
2193
2194 #[cfg(feature = "v1_18")]
2198 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2199 pub fn gst_gl_base_src_get_type() -> GType;
2200
2201 pub fn gst_gl_buffer_allocator_get_type() -> GType;
2205
2206 pub fn gst_gl_buffer_pool_get_type() -> GType;
2210 pub fn gst_gl_buffer_pool_new(context: *mut GstGLContext) -> *mut gst::GstBufferPool;
2211 #[cfg(feature = "v1_20")]
2212 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2213 pub fn gst_gl_buffer_pool_get_gl_allocation_params(
2214 pool: *mut GstGLBufferPool,
2215 ) -> *mut GstGLAllocationParams;
2216
2217 pub fn gst_gl_color_convert_get_type() -> GType;
2221 pub fn gst_gl_color_convert_new(context: *mut GstGLContext) -> *mut GstGLColorConvert;
2222 pub fn gst_gl_color_convert_fixate_caps(
2223 context: *mut GstGLContext,
2224 direction: gst::GstPadDirection,
2225 caps: *mut gst::GstCaps,
2226 other: *mut gst::GstCaps,
2227 ) -> *mut gst::GstCaps;
2228 #[cfg(feature = "v1_24")]
2229 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2230 pub fn gst_gl_color_convert_swizzle_shader_string(context: *mut GstGLContext) -> *mut c_char;
2231 pub fn gst_gl_color_convert_transform_caps(
2232 context: *mut GstGLContext,
2233 direction: gst::GstPadDirection,
2234 caps: *mut gst::GstCaps,
2235 filter: *mut gst::GstCaps,
2236 ) -> *mut gst::GstCaps;
2237 #[cfg(feature = "v1_24")]
2238 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2239 pub fn gst_gl_color_convert_yuv_to_rgb_shader_string(context: *mut GstGLContext)
2240 -> *mut c_char;
2241 pub fn gst_gl_color_convert_decide_allocation(
2242 convert: *mut GstGLColorConvert,
2243 query: *mut gst::GstQuery,
2244 ) -> gboolean;
2245 pub fn gst_gl_color_convert_perform(
2246 convert: *mut GstGLColorConvert,
2247 inbuf: *mut gst::GstBuffer,
2248 ) -> *mut gst::GstBuffer;
2249 pub fn gst_gl_color_convert_set_caps(
2250 convert: *mut GstGLColorConvert,
2251 in_caps: *mut gst::GstCaps,
2252 out_caps: *mut gst::GstCaps,
2253 ) -> gboolean;
2254
2255 pub fn gst_gl_context_get_type() -> GType;
2259 pub fn gst_gl_context_new(display: *mut GstGLDisplay) -> *mut GstGLContext;
2260 pub fn gst_gl_context_new_wrapped(
2261 display: *mut GstGLDisplay,
2262 handle: uintptr_t,
2263 context_type: GstGLPlatform,
2264 available_apis: GstGLAPI,
2265 ) -> *mut GstGLContext;
2266 pub fn gst_gl_context_default_get_proc_address(
2267 gl_api: GstGLAPI,
2268 name: *const c_char,
2269 ) -> gpointer;
2270 pub fn gst_gl_context_get_current() -> *mut GstGLContext;
2271 pub fn gst_gl_context_get_current_gl_api(
2272 platform: GstGLPlatform,
2273 major: *mut c_uint,
2274 minor: *mut c_uint,
2275 ) -> GstGLAPI;
2276 pub fn gst_gl_context_get_current_gl_context(context_type: GstGLPlatform) -> uintptr_t;
2277 pub fn gst_gl_context_get_proc_address_with_platform(
2278 context_type: GstGLPlatform,
2279 gl_api: GstGLAPI,
2280 name: *const c_char,
2281 ) -> gpointer;
2282 pub fn gst_gl_context_activate(context: *mut GstGLContext, activate: gboolean) -> gboolean;
2283 pub fn gst_gl_context_can_share(
2284 context: *mut GstGLContext,
2285 other_context: *mut GstGLContext,
2286 ) -> gboolean;
2287 pub fn gst_gl_context_check_feature(
2288 context: *mut GstGLContext,
2289 feature: *const c_char,
2290 ) -> gboolean;
2291 pub fn gst_gl_context_check_framebuffer_status(
2292 context: *mut GstGLContext,
2293 fbo_target: c_uint,
2294 ) -> gboolean;
2295 pub fn gst_gl_context_check_gl_version(
2296 context: *mut GstGLContext,
2297 api: GstGLAPI,
2298 maj: c_int,
2299 min: c_int,
2300 ) -> gboolean;
2301 pub fn gst_gl_context_clear_framebuffer(context: *mut GstGLContext);
2302 pub fn gst_gl_context_clear_shader(context: *mut GstGLContext);
2303 pub fn gst_gl_context_create(
2304 context: *mut GstGLContext,
2305 other_context: *mut GstGLContext,
2306 error: *mut *mut glib::GError,
2307 ) -> gboolean;
2308 pub fn gst_gl_context_destroy(context: *mut GstGLContext);
2309 pub fn gst_gl_context_fill_info(
2310 context: *mut GstGLContext,
2311 error: *mut *mut glib::GError,
2312 ) -> gboolean;
2313 #[cfg(feature = "v1_20")]
2314 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2315 pub fn gst_gl_context_get_config(context: *mut GstGLContext) -> *mut gst::GstStructure;
2316 pub fn gst_gl_context_get_display(context: *mut GstGLContext) -> *mut GstGLDisplay;
2317 pub fn gst_gl_context_get_gl_api(context: *mut GstGLContext) -> GstGLAPI;
2318 pub fn gst_gl_context_get_gl_context(context: *mut GstGLContext) -> uintptr_t;
2319 pub fn gst_gl_context_get_gl_platform(context: *mut GstGLContext) -> GstGLPlatform;
2320 pub fn gst_gl_context_get_gl_platform_version(
2321 context: *mut GstGLContext,
2322 major: *mut c_int,
2323 minor: *mut c_int,
2324 );
2325 pub fn gst_gl_context_get_gl_version(
2326 context: *mut GstGLContext,
2327 maj: *mut c_int,
2328 min: *mut c_int,
2329 );
2330 pub fn gst_gl_context_get_proc_address(
2331 context: *mut GstGLContext,
2332 name: *const c_char,
2333 ) -> gpointer;
2334 pub fn gst_gl_context_get_thread(context: *mut GstGLContext) -> *mut glib::GThread;
2335 pub fn gst_gl_context_get_window(context: *mut GstGLContext) -> *mut GstGLWindow;
2336 pub fn gst_gl_context_is_shared(context: *mut GstGLContext) -> gboolean;
2337 #[cfg(feature = "v1_20")]
2338 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2339 pub fn gst_gl_context_request_config(
2340 context: *mut GstGLContext,
2341 gl_config: *mut gst::GstStructure,
2342 ) -> gboolean;
2343 pub fn gst_gl_context_set_shared_with(context: *mut GstGLContext, share: *mut GstGLContext);
2344 pub fn gst_gl_context_set_window(
2345 context: *mut GstGLContext,
2346 window: *mut GstGLWindow,
2347 ) -> gboolean;
2348 pub fn gst_gl_context_supports_glsl_profile_version(
2349 context: *mut GstGLContext,
2350 version: GstGLSLVersion,
2351 profile: GstGLSLProfile,
2352 ) -> gboolean;
2353 #[cfg(feature = "v1_16")]
2354 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2355 pub fn gst_gl_context_supports_precision(
2356 context: *mut GstGLContext,
2357 version: GstGLSLVersion,
2358 profile: GstGLSLProfile,
2359 ) -> gboolean;
2360 #[cfg(feature = "v1_16")]
2361 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2362 pub fn gst_gl_context_supports_precision_highp(
2363 context: *mut GstGLContext,
2364 version: GstGLSLVersion,
2365 profile: GstGLSLProfile,
2366 ) -> gboolean;
2367 pub fn gst_gl_context_swap_buffers(context: *mut GstGLContext);
2368 pub fn gst_gl_context_thread_add(
2369 context: *mut GstGLContext,
2370 func: GstGLContextThreadFunc,
2371 data: gpointer,
2372 );
2373
2374 pub fn gst_gl_display_get_type() -> GType;
2378 pub fn gst_gl_display_new() -> *mut GstGLDisplay;
2379 #[cfg(feature = "v1_20")]
2380 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2381 pub fn gst_gl_display_new_with_type(type_: GstGLDisplayType) -> *mut GstGLDisplay;
2382 pub fn gst_gl_display_add_context(
2383 display: *mut GstGLDisplay,
2384 context: *mut GstGLContext,
2385 ) -> gboolean;
2386 pub fn gst_gl_display_create_context(
2387 display: *mut GstGLDisplay,
2388 other_context: *mut GstGLContext,
2389 p_context: *mut *mut GstGLContext,
2390 error: *mut *mut glib::GError,
2391 ) -> gboolean;
2392 pub fn gst_gl_display_create_window(display: *mut GstGLDisplay) -> *mut GstGLWindow;
2393 #[cfg(feature = "v1_24")]
2394 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2395 pub fn gst_gl_display_ensure_context(
2396 display: *mut GstGLDisplay,
2397 other_context: *mut GstGLContext,
2398 context: *mut *mut GstGLContext,
2399 error: *mut *mut glib::GError,
2400 ) -> gboolean;
2401 pub fn gst_gl_display_filter_gl_api(display: *mut GstGLDisplay, gl_api: GstGLAPI);
2402 pub fn gst_gl_display_find_window(
2403 display: *mut GstGLDisplay,
2404 data: gpointer,
2405 compare_func: glib::GCompareFunc,
2406 ) -> *mut GstGLWindow;
2407 pub fn gst_gl_display_get_gl_api(display: *mut GstGLDisplay) -> GstGLAPI;
2408 pub fn gst_gl_display_get_gl_api_unlocked(display: *mut GstGLDisplay) -> GstGLAPI;
2409 pub fn gst_gl_display_get_gl_context_for_thread(
2410 display: *mut GstGLDisplay,
2411 thread: *mut glib::GThread,
2412 ) -> *mut GstGLContext;
2413 pub fn gst_gl_display_get_handle(display: *mut GstGLDisplay) -> uintptr_t;
2414 pub fn gst_gl_display_get_handle_type(display: *mut GstGLDisplay) -> GstGLDisplayType;
2415 #[cfg(feature = "v1_18")]
2416 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2417 pub fn gst_gl_display_remove_context(display: *mut GstGLDisplay, context: *mut GstGLContext);
2418 pub fn gst_gl_display_remove_window(
2419 display: *mut GstGLDisplay,
2420 window: *mut GstGLWindow,
2421 ) -> gboolean;
2422 #[cfg(feature = "v1_18")]
2423 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2424 pub fn gst_gl_display_retrieve_window(
2425 display: *mut GstGLDisplay,
2426 data: gpointer,
2427 compare_func: glib::GCompareFunc,
2428 ) -> *mut GstGLWindow;
2429
2430 pub fn gst_gl_filter_get_type() -> GType;
2434 pub fn gst_gl_filter_add_rgba_pad_templates(klass: *mut GstGLFilterClass);
2435 pub fn gst_gl_filter_draw_fullscreen_quad(filter: *mut GstGLFilter);
2436 pub fn gst_gl_filter_filter_texture(
2437 filter: *mut GstGLFilter,
2438 input: *mut gst::GstBuffer,
2439 output: *mut gst::GstBuffer,
2440 ) -> gboolean;
2441 pub fn gst_gl_filter_render_to_target(
2442 filter: *mut GstGLFilter,
2443 input: *mut GstGLMemory,
2444 output: *mut GstGLMemory,
2445 func: GstGLFilterRenderFunc,
2446 data: gpointer,
2447 ) -> gboolean;
2448 pub fn gst_gl_filter_render_to_target_with_shader(
2449 filter: *mut GstGLFilter,
2450 input: *mut GstGLMemory,
2451 output: *mut GstGLMemory,
2452 shader: *mut GstGLShader,
2453 );
2454
2455 pub fn gst_gl_framebuffer_get_type() -> GType;
2459 pub fn gst_gl_framebuffer_new(context: *mut GstGLContext) -> *mut GstGLFramebuffer;
2460 pub fn gst_gl_framebuffer_new_with_default_depth(
2461 context: *mut GstGLContext,
2462 width: c_uint,
2463 height: c_uint,
2464 ) -> *mut GstGLFramebuffer;
2465 pub fn gst_gl_framebuffer_attach(
2466 fb: *mut GstGLFramebuffer,
2467 attachment_point: c_uint,
2468 mem: *mut GstGLBaseMemory,
2469 );
2470 pub fn gst_gl_framebuffer_bind(fb: *mut GstGLFramebuffer);
2471 pub fn gst_gl_framebuffer_draw_to_texture(
2472 fb: *mut GstGLFramebuffer,
2473 mem: *mut GstGLMemory,
2474 func: GstGLFramebufferFunc,
2475 user_data: gpointer,
2476 ) -> gboolean;
2477 pub fn gst_gl_framebuffer_get_effective_dimensions(
2478 fb: *mut GstGLFramebuffer,
2479 width: *mut c_uint,
2480 height: *mut c_uint,
2481 );
2482 pub fn gst_gl_framebuffer_get_id(fb: *mut GstGLFramebuffer) -> c_uint;
2483
2484 pub fn gst_gl_memory_allocator_get_type() -> GType;
2488 pub fn gst_gl_memory_allocator_get_default(
2489 context: *mut GstGLContext,
2490 ) -> *mut GstGLMemoryAllocator;
2491
2492 pub fn gst_gl_memory_pbo_allocator_get_type() -> GType;
2496
2497 #[cfg(feature = "v1_24")]
2501 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2502 pub fn gst_gl_mixer_get_type() -> GType;
2503 #[cfg(feature = "v1_24")]
2504 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2505 pub fn gst_gl_mixer_get_framebuffer(mix: *mut GstGLMixer) -> *mut GstGLFramebuffer;
2506 #[cfg(feature = "v1_24")]
2507 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2508 pub fn gst_gl_mixer_process_textures(
2509 mix: *mut GstGLMixer,
2510 outbuf: *mut gst::GstBuffer,
2511 ) -> gboolean;
2512
2513 #[cfg(feature = "v1_24")]
2517 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2518 pub fn gst_gl_mixer_pad_get_type() -> GType;
2519
2520 pub fn gst_gl_overlay_compositor_get_type() -> GType;
2524 pub fn gst_gl_overlay_compositor_new(context: *mut GstGLContext)
2525 -> *mut GstGLOverlayCompositor;
2526 pub fn gst_gl_overlay_compositor_add_caps(caps: *mut gst::GstCaps) -> *mut gst::GstCaps;
2527 pub fn gst_gl_overlay_compositor_draw_overlays(compositor: *mut GstGLOverlayCompositor);
2528 pub fn gst_gl_overlay_compositor_free_overlays(compositor: *mut GstGLOverlayCompositor);
2529 pub fn gst_gl_overlay_compositor_upload_overlays(
2530 compositor: *mut GstGLOverlayCompositor,
2531 buf: *mut gst::GstBuffer,
2532 );
2533
2534 pub fn gst_gl_renderbuffer_allocator_get_type() -> GType;
2538
2539 pub fn gst_glsl_stage_get_type() -> GType;
2543 pub fn gst_glsl_stage_new(context: *mut GstGLContext, type_: c_uint) -> *mut GstGLSLStage;
2544 pub fn gst_glsl_stage_new_default_fragment(context: *mut GstGLContext) -> *mut GstGLSLStage;
2545 pub fn gst_glsl_stage_new_default_vertex(context: *mut GstGLContext) -> *mut GstGLSLStage;
2546 pub fn gst_glsl_stage_new_with_string(
2547 context: *mut GstGLContext,
2548 type_: c_uint,
2549 version: GstGLSLVersion,
2550 profile: GstGLSLProfile,
2551 str: *const c_char,
2552 ) -> *mut GstGLSLStage;
2553 pub fn gst_glsl_stage_new_with_strings(
2554 context: *mut GstGLContext,
2555 type_: c_uint,
2556 version: GstGLSLVersion,
2557 profile: GstGLSLProfile,
2558 n_strings: c_int,
2559 str: *mut *const c_char,
2560 ) -> *mut GstGLSLStage;
2561 pub fn gst_glsl_stage_compile(
2562 stage: *mut GstGLSLStage,
2563 error: *mut *mut glib::GError,
2564 ) -> gboolean;
2565 pub fn gst_glsl_stage_get_handle(stage: *mut GstGLSLStage) -> c_uint;
2566 pub fn gst_glsl_stage_get_profile(stage: *mut GstGLSLStage) -> GstGLSLProfile;
2567 pub fn gst_glsl_stage_get_shader_type(stage: *mut GstGLSLStage) -> c_uint;
2568 pub fn gst_glsl_stage_get_version(stage: *mut GstGLSLStage) -> GstGLSLVersion;
2569 pub fn gst_glsl_stage_set_strings(
2570 stage: *mut GstGLSLStage,
2571 version: GstGLSLVersion,
2572 profile: GstGLSLProfile,
2573 n_strings: c_int,
2574 str: *mut *const c_char,
2575 ) -> gboolean;
2576
2577 pub fn gst_gl_shader_get_type() -> GType;
2581 pub fn gst_gl_shader_new(context: *mut GstGLContext) -> *mut GstGLShader;
2582 pub fn gst_gl_shader_new_default(
2583 context: *mut GstGLContext,
2584 error: *mut *mut glib::GError,
2585 ) -> *mut GstGLShader;
2586 pub fn gst_gl_shader_new_link_with_stages(
2587 context: *mut GstGLContext,
2588 error: *mut *mut glib::GError,
2589 ...
2590 ) -> *mut GstGLShader;
2591 pub fn gst_gl_shader_new_with_stages(
2592 context: *mut GstGLContext,
2593 error: *mut *mut glib::GError,
2594 ...
2595 ) -> *mut GstGLShader;
2596 #[cfg(feature = "v1_16")]
2597 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2598 pub fn gst_gl_shader_string_fragment_external_oes_get_default(
2599 context: *mut GstGLContext,
2600 version: GstGLSLVersion,
2601 profile: GstGLSLProfile,
2602 ) -> *mut c_char;
2603 #[cfg(feature = "v1_16")]
2604 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2605 pub fn gst_gl_shader_string_fragment_get_default(
2606 context: *mut GstGLContext,
2607 version: GstGLSLVersion,
2608 profile: GstGLSLProfile,
2609 ) -> *mut c_char;
2610 #[cfg(feature = "v1_16")]
2611 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2612 pub fn gst_gl_shader_string_get_highest_precision(
2613 context: *mut GstGLContext,
2614 version: GstGLSLVersion,
2615 profile: GstGLSLProfile,
2616 ) -> *const c_char;
2617 pub fn gst_gl_shader_attach(shader: *mut GstGLShader, stage: *mut GstGLSLStage) -> gboolean;
2618 pub fn gst_gl_shader_attach_unlocked(
2619 shader: *mut GstGLShader,
2620 stage: *mut GstGLSLStage,
2621 ) -> gboolean;
2622 pub fn gst_gl_shader_bind_attribute_location(
2623 shader: *mut GstGLShader,
2624 index: c_uint,
2625 name: *const c_char,
2626 );
2627 pub fn gst_gl_shader_bind_frag_data_location(
2628 shader: *mut GstGLShader,
2629 index: c_uint,
2630 name: *const c_char,
2631 );
2632 pub fn gst_gl_shader_compile_attach_stage(
2633 shader: *mut GstGLShader,
2634 stage: *mut GstGLSLStage,
2635 error: *mut *mut glib::GError,
2636 ) -> gboolean;
2637 pub fn gst_gl_shader_detach(shader: *mut GstGLShader, stage: *mut GstGLSLStage);
2638 pub fn gst_gl_shader_detach_unlocked(shader: *mut GstGLShader, stage: *mut GstGLSLStage);
2639 pub fn gst_gl_shader_get_attribute_location(
2640 shader: *mut GstGLShader,
2641 name: *const c_char,
2642 ) -> c_int;
2643 pub fn gst_gl_shader_get_program_handle(shader: *mut GstGLShader) -> c_int;
2644 pub fn gst_gl_shader_is_linked(shader: *mut GstGLShader) -> gboolean;
2645 pub fn gst_gl_shader_link(shader: *mut GstGLShader, error: *mut *mut glib::GError) -> gboolean;
2646 pub fn gst_gl_shader_release(shader: *mut GstGLShader);
2647 pub fn gst_gl_shader_release_unlocked(shader: *mut GstGLShader);
2648 pub fn gst_gl_shader_set_uniform_1f(
2649 shader: *mut GstGLShader,
2650 name: *const c_char,
2651 value: c_float,
2652 );
2653 pub fn gst_gl_shader_set_uniform_1fv(
2654 shader: *mut GstGLShader,
2655 name: *const c_char,
2656 count: c_uint,
2657 value: *const c_float,
2658 );
2659 pub fn gst_gl_shader_set_uniform_1i(
2660 shader: *mut GstGLShader,
2661 name: *const c_char,
2662 value: c_int,
2663 );
2664 pub fn gst_gl_shader_set_uniform_1iv(
2665 shader: *mut GstGLShader,
2666 name: *const c_char,
2667 count: c_uint,
2668 value: *const c_int,
2669 );
2670 pub fn gst_gl_shader_set_uniform_2f(
2671 shader: *mut GstGLShader,
2672 name: *const c_char,
2673 v0: c_float,
2674 v1: c_float,
2675 );
2676 pub fn gst_gl_shader_set_uniform_2fv(
2677 shader: *mut GstGLShader,
2678 name: *const c_char,
2679 count: c_uint,
2680 value: *const c_float,
2681 );
2682 pub fn gst_gl_shader_set_uniform_2i(
2683 shader: *mut GstGLShader,
2684 name: *const c_char,
2685 v0: c_int,
2686 v1: c_int,
2687 );
2688 pub fn gst_gl_shader_set_uniform_2iv(
2689 shader: *mut GstGLShader,
2690 name: *const c_char,
2691 count: c_uint,
2692 value: *const c_int,
2693 );
2694 pub fn gst_gl_shader_set_uniform_3f(
2695 shader: *mut GstGLShader,
2696 name: *const c_char,
2697 v0: c_float,
2698 v1: c_float,
2699 v2: c_float,
2700 );
2701 pub fn gst_gl_shader_set_uniform_3fv(
2702 shader: *mut GstGLShader,
2703 name: *const c_char,
2704 count: c_uint,
2705 value: *const c_float,
2706 );
2707 pub fn gst_gl_shader_set_uniform_3i(
2708 shader: *mut GstGLShader,
2709 name: *const c_char,
2710 v0: c_int,
2711 v1: c_int,
2712 v2: c_int,
2713 );
2714 pub fn gst_gl_shader_set_uniform_3iv(
2715 shader: *mut GstGLShader,
2716 name: *const c_char,
2717 count: c_uint,
2718 value: *const c_int,
2719 );
2720 pub fn gst_gl_shader_set_uniform_4f(
2721 shader: *mut GstGLShader,
2722 name: *const c_char,
2723 v0: c_float,
2724 v1: c_float,
2725 v2: c_float,
2726 v3: c_float,
2727 );
2728 pub fn gst_gl_shader_set_uniform_4fv(
2729 shader: *mut GstGLShader,
2730 name: *const c_char,
2731 count: c_uint,
2732 value: *const c_float,
2733 );
2734 pub fn gst_gl_shader_set_uniform_4i(
2735 shader: *mut GstGLShader,
2736 name: *const c_char,
2737 v0: c_int,
2738 v1: c_int,
2739 v2: c_int,
2740 v3: c_int,
2741 );
2742 pub fn gst_gl_shader_set_uniform_4iv(
2743 shader: *mut GstGLShader,
2744 name: *const c_char,
2745 count: c_uint,
2746 value: *const c_int,
2747 );
2748 pub fn gst_gl_shader_set_uniform_matrix_2fv(
2749 shader: *mut GstGLShader,
2750 name: *const c_char,
2751 count: c_int,
2752 transpose: gboolean,
2753 value: *const c_float,
2754 );
2755 pub fn gst_gl_shader_set_uniform_matrix_2x3fv(
2756 shader: *mut GstGLShader,
2757 name: *const c_char,
2758 count: c_int,
2759 transpose: gboolean,
2760 value: *const c_float,
2761 );
2762 pub fn gst_gl_shader_set_uniform_matrix_2x4fv(
2763 shader: *mut GstGLShader,
2764 name: *const c_char,
2765 count: c_int,
2766 transpose: gboolean,
2767 value: *const c_float,
2768 );
2769 pub fn gst_gl_shader_set_uniform_matrix_3fv(
2770 shader: *mut GstGLShader,
2771 name: *const c_char,
2772 count: c_int,
2773 transpose: gboolean,
2774 value: *const c_float,
2775 );
2776 pub fn gst_gl_shader_set_uniform_matrix_3x2fv(
2777 shader: *mut GstGLShader,
2778 name: *const c_char,
2779 count: c_int,
2780 transpose: gboolean,
2781 value: *const c_float,
2782 );
2783 pub fn gst_gl_shader_set_uniform_matrix_3x4fv(
2784 shader: *mut GstGLShader,
2785 name: *const c_char,
2786 count: c_int,
2787 transpose: gboolean,
2788 value: *const c_float,
2789 );
2790 pub fn gst_gl_shader_set_uniform_matrix_4fv(
2791 shader: *mut GstGLShader,
2792 name: *const c_char,
2793 count: c_int,
2794 transpose: gboolean,
2795 value: *const c_float,
2796 );
2797 pub fn gst_gl_shader_set_uniform_matrix_4x2fv(
2798 shader: *mut GstGLShader,
2799 name: *const c_char,
2800 count: c_int,
2801 transpose: gboolean,
2802 value: *const c_float,
2803 );
2804 pub fn gst_gl_shader_set_uniform_matrix_4x3fv(
2805 shader: *mut GstGLShader,
2806 name: *const c_char,
2807 count: c_int,
2808 transpose: gboolean,
2809 value: *const c_float,
2810 );
2811 pub fn gst_gl_shader_use(shader: *mut GstGLShader);
2812
2813 pub fn gst_gl_upload_get_type() -> GType;
2817 pub fn gst_gl_upload_new(context: *mut GstGLContext) -> *mut GstGLUpload;
2818 pub fn gst_gl_upload_get_input_template_caps() -> *mut gst::GstCaps;
2819 #[cfg(feature = "v1_24")]
2820 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2821 pub fn gst_gl_upload_fixate_caps(
2822 upload: *mut GstGLUpload,
2823 direction: gst::GstPadDirection,
2824 caps: *mut gst::GstCaps,
2825 othercaps: *mut gst::GstCaps,
2826 ) -> *mut gst::GstCaps;
2827 pub fn gst_gl_upload_get_caps(
2828 upload: *mut GstGLUpload,
2829 in_caps: *mut *mut gst::GstCaps,
2830 out_caps: *mut *mut gst::GstCaps,
2831 );
2832 pub fn gst_gl_upload_perform_with_buffer(
2833 upload: *mut GstGLUpload,
2834 buffer: *mut gst::GstBuffer,
2835 outbuf_ptr: *mut *mut gst::GstBuffer,
2836 ) -> GstGLUploadReturn;
2837 pub fn gst_gl_upload_propose_allocation(
2838 upload: *mut GstGLUpload,
2839 decide_query: *mut gst::GstQuery,
2840 query: *mut gst::GstQuery,
2841 );
2842 pub fn gst_gl_upload_set_caps(
2843 upload: *mut GstGLUpload,
2844 in_caps: *mut gst::GstCaps,
2845 out_caps: *mut gst::GstCaps,
2846 ) -> gboolean;
2847 pub fn gst_gl_upload_set_context(upload: *mut GstGLUpload, context: *mut GstGLContext);
2848 pub fn gst_gl_upload_transform_caps(
2849 upload: *mut GstGLUpload,
2850 context: *mut GstGLContext,
2851 direction: gst::GstPadDirection,
2852 caps: *mut gst::GstCaps,
2853 filter: *mut gst::GstCaps,
2854 ) -> *mut gst::GstCaps;
2855
2856 pub fn gst_gl_view_convert_get_type() -> GType;
2860 pub fn gst_gl_view_convert_new() -> *mut GstGLViewConvert;
2861 pub fn gst_gl_view_convert_fixate_caps(
2862 viewconvert: *mut GstGLViewConvert,
2863 direction: gst::GstPadDirection,
2864 caps: *mut gst::GstCaps,
2865 othercaps: *mut gst::GstCaps,
2866 ) -> *mut gst::GstCaps;
2867 pub fn gst_gl_view_convert_get_output(
2868 viewconvert: *mut GstGLViewConvert,
2869 outbuf_ptr: *mut *mut gst::GstBuffer,
2870 ) -> gst::GstFlowReturn;
2871 pub fn gst_gl_view_convert_perform(
2872 viewconvert: *mut GstGLViewConvert,
2873 inbuf: *mut gst::GstBuffer,
2874 ) -> *mut gst::GstBuffer;
2875 pub fn gst_gl_view_convert_reset(viewconvert: *mut GstGLViewConvert);
2876 pub fn gst_gl_view_convert_set_caps(
2877 viewconvert: *mut GstGLViewConvert,
2878 in_caps: *mut gst::GstCaps,
2879 out_caps: *mut gst::GstCaps,
2880 ) -> gboolean;
2881 pub fn gst_gl_view_convert_set_context(
2882 viewconvert: *mut GstGLViewConvert,
2883 context: *mut GstGLContext,
2884 );
2885 pub fn gst_gl_view_convert_submit_input_buffer(
2886 viewconvert: *mut GstGLViewConvert,
2887 is_discont: gboolean,
2888 input: *mut gst::GstBuffer,
2889 ) -> gst::GstFlowReturn;
2890 pub fn gst_gl_view_convert_transform_caps(
2891 viewconvert: *mut GstGLViewConvert,
2892 direction: gst::GstPadDirection,
2893 caps: *mut gst::GstCaps,
2894 filter: *mut gst::GstCaps,
2895 ) -> *mut gst::GstCaps;
2896
2897 pub fn gst_gl_window_get_type() -> GType;
2901 pub fn gst_gl_window_new(display: *mut GstGLDisplay) -> *mut GstGLWindow;
2902 #[cfg(feature = "v1_16")]
2903 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
2904 pub fn gst_gl_window_controls_viewport(window: *mut GstGLWindow) -> gboolean;
2905 pub fn gst_gl_window_draw(window: *mut GstGLWindow);
2906 pub fn gst_gl_window_get_context(window: *mut GstGLWindow) -> *mut GstGLContext;
2907 pub fn gst_gl_window_get_display(window: *mut GstGLWindow) -> uintptr_t;
2908 pub fn gst_gl_window_get_surface_dimensions(
2909 window: *mut GstGLWindow,
2910 width: *mut c_uint,
2911 height: *mut c_uint,
2912 );
2913 pub fn gst_gl_window_get_window_handle(window: *mut GstGLWindow) -> uintptr_t;
2914 pub fn gst_gl_window_handle_events(window: *mut GstGLWindow, handle_events: gboolean);
2915 #[cfg(feature = "v1_18")]
2916 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2917 pub fn gst_gl_window_has_output_surface(window: *mut GstGLWindow) -> gboolean;
2918 pub fn gst_gl_window_queue_resize(window: *mut GstGLWindow);
2919 pub fn gst_gl_window_quit(window: *mut GstGLWindow);
2920 pub fn gst_gl_window_resize(window: *mut GstGLWindow, width: c_uint, height: c_uint);
2921 pub fn gst_gl_window_run(window: *mut GstGLWindow);
2922 pub fn gst_gl_window_send_key_event(
2923 window: *mut GstGLWindow,
2924 event_type: *const c_char,
2925 key_str: *const c_char,
2926 );
2927 pub fn gst_gl_window_send_message(
2928 window: *mut GstGLWindow,
2929 callback: GstGLWindowCB,
2930 data: gpointer,
2931 );
2932 pub fn gst_gl_window_send_message_async(
2933 window: *mut GstGLWindow,
2934 callback: GstGLWindowCB,
2935 data: gpointer,
2936 destroy: glib::GDestroyNotify,
2937 );
2938 pub fn gst_gl_window_send_mouse_event(
2939 window: *mut GstGLWindow,
2940 event_type: *const c_char,
2941 button: c_int,
2942 posx: c_double,
2943 posy: c_double,
2944 );
2945 #[cfg(feature = "v1_18")]
2946 #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
2947 pub fn gst_gl_window_send_scroll_event(
2948 window: *mut GstGLWindow,
2949 posx: c_double,
2950 posy: c_double,
2951 delta_x: c_double,
2952 delta_y: c_double,
2953 );
2954 pub fn gst_gl_window_set_close_callback(
2955 window: *mut GstGLWindow,
2956 callback: GstGLWindowCB,
2957 data: gpointer,
2958 destroy_notify: glib::GDestroyNotify,
2959 );
2960 pub fn gst_gl_window_set_draw_callback(
2961 window: *mut GstGLWindow,
2962 callback: GstGLWindowCB,
2963 data: gpointer,
2964 destroy_notify: glib::GDestroyNotify,
2965 );
2966 pub fn gst_gl_window_set_preferred_size(window: *mut GstGLWindow, width: c_int, height: c_int);
2967 pub fn gst_gl_window_set_render_rectangle(
2968 window: *mut GstGLWindow,
2969 x: c_int,
2970 y: c_int,
2971 width: c_int,
2972 height: c_int,
2973 ) -> gboolean;
2974 pub fn gst_gl_window_set_resize_callback(
2975 window: *mut GstGLWindow,
2976 callback: GstGLWindowResizeCB,
2977 data: gpointer,
2978 destroy_notify: glib::GDestroyNotify,
2979 );
2980 pub fn gst_gl_window_set_window_handle(window: *mut GstGLWindow, handle: uintptr_t);
2981 pub fn gst_gl_window_show(window: *mut GstGLWindow);
2982
2983 pub fn gst_buffer_add_gl_sync_meta(
2987 context: *mut GstGLContext,
2988 buffer: *mut gst::GstBuffer,
2989 ) -> *mut GstGLSyncMeta;
2990 pub fn gst_buffer_add_gl_sync_meta_full(
2991 context: *mut GstGLContext,
2992 buffer: *mut gst::GstBuffer,
2993 data: gpointer,
2994 ) -> *mut GstGLSyncMeta;
2995 pub fn gst_buffer_pool_config_get_gl_allocation_params(
2996 config: *mut gst::GstStructure,
2997 ) -> *mut GstGLAllocationParams;
2998 #[cfg(feature = "v1_24")]
2999 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3000 pub fn gst_buffer_pool_config_get_gl_min_free_queue_size(
3001 config: *mut gst::GstStructure,
3002 ) -> c_uint;
3003 pub fn gst_buffer_pool_config_set_gl_allocation_params(
3004 config: *mut gst::GstStructure,
3005 params: *const GstGLAllocationParams,
3006 );
3007 #[cfg(feature = "v1_24")]
3008 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3009 pub fn gst_buffer_pool_config_set_gl_min_free_queue_size(
3010 config: *mut gst::GstStructure,
3011 queue_size: c_uint,
3012 );
3013 pub fn gst_context_get_gl_display(
3014 context: *mut gst::GstContext,
3015 display: *mut *mut GstGLDisplay,
3016 ) -> gboolean;
3017 pub fn gst_context_set_gl_display(context: *mut gst::GstContext, display: *mut GstGLDisplay);
3018 pub fn gst_gl_check_extension(name: *const c_char, ext: *const c_char) -> gboolean;
3019 #[cfg(feature = "v1_26")]
3020 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
3021 pub fn gst_gl_dma_buf_transform_drm_formats_to_gst_formats(
3022 context: *mut GstGLContext,
3023 src: *const gobject::GValue,
3024 flags: GstGLDrmFormatFlags,
3025 dst: *mut gobject::GValue,
3026 ) -> gboolean;
3027 #[cfg(feature = "v1_26")]
3028 #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
3029 pub fn gst_gl_dma_buf_transform_gst_formats_to_drm_formats(
3030 context: *mut GstGLContext,
3031 src: *const gobject::GValue,
3032 flags: GstGLDrmFormatFlags,
3033 dst: *mut gobject::GValue,
3034 ) -> gboolean;
3035 pub fn gst_gl_element_propagate_display_context(
3036 element: *mut gst::GstElement,
3037 display: *mut GstGLDisplay,
3038 );
3039 pub fn gst_gl_ensure_element_data(
3040 element: *mut gst::GstElement,
3041 display_ptr: *mut *mut GstGLDisplay,
3042 other_context_ptr: *mut *mut GstGLContext,
3043 ) -> gboolean;
3044 #[cfg(feature = "v1_20")]
3045 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3046 pub fn gst_gl_get_affine_transformation_meta_as_ndc(
3047 meta: *mut gst_video::GstVideoAffineTransformationMeta,
3048 matrix: *mut [c_float; 16],
3049 );
3050 pub fn gst_gl_get_plane_data_size(
3051 info: *const gst_video::GstVideoInfo,
3052 align: *const gst_video::GstVideoAlignment,
3053 plane: c_uint,
3054 ) -> size_t;
3055 pub fn gst_gl_get_plane_start(
3056 info: *const gst_video::GstVideoInfo,
3057 valign: *const gst_video::GstVideoAlignment,
3058 plane: c_uint,
3059 ) -> size_t;
3060 pub fn gst_gl_handle_context_query(
3061 element: *mut gst::GstElement,
3062 query: *mut gst::GstQuery,
3063 display: *mut GstGLDisplay,
3064 context: *mut GstGLContext,
3065 other_context: *mut GstGLContext,
3066 ) -> gboolean;
3067 pub fn gst_gl_handle_set_context(
3068 element: *mut gst::GstElement,
3069 context: *mut gst::GstContext,
3070 display: *mut *mut GstGLDisplay,
3071 other_context: *mut *mut GstGLContext,
3072 ) -> gboolean;
3073 pub fn gst_gl_insert_debug_marker(context: *mut GstGLContext, format: *const c_char, ...);
3074 #[cfg(feature = "v1_20")]
3075 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3076 pub fn gst_gl_multiply_matrix4(
3077 a: *const [c_float; 16],
3078 b: *const [c_float; 16],
3079 result: *mut [c_float; 16],
3080 );
3081 #[cfg(feature = "v1_20")]
3082 #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3083 pub fn gst_gl_set_affine_transformation_meta_from_ndc(
3084 meta: *mut gst_video::GstVideoAffineTransformationMeta,
3085 matrix: *const [c_float; 16],
3086 );
3087 pub fn gst_gl_sized_gl_format_from_gl_format_type(
3088 context: *mut GstGLContext,
3089 format: c_uint,
3090 type_: c_uint,
3091 ) -> c_uint;
3092 pub fn gst_gl_stereo_downmix_mode_get_type() -> GType;
3093 #[cfg(feature = "v1_24")]
3094 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3095 pub fn gst_gl_swizzle_invert(swizzle: *mut [c_int; 4], inversion: *mut [c_int; 4]);
3096 pub fn gst_gl_sync_meta_api_get_type() -> GType;
3097 pub fn gst_gl_value_get_texture_target_mask(
3098 value: *const gobject::GValue,
3099 ) -> GstGLTextureTarget;
3100 pub fn gst_gl_value_set_texture_target(
3101 value: *mut gobject::GValue,
3102 target: GstGLTextureTarget,
3103 ) -> gboolean;
3104 pub fn gst_gl_value_set_texture_target_from_mask(
3105 value: *mut gobject::GValue,
3106 target_mask: GstGLTextureTarget,
3107 ) -> gboolean;
3108 pub fn gst_gl_version_to_glsl_version(
3109 gl_api: GstGLAPI,
3110 maj: c_int,
3111 min: c_int,
3112 ) -> GstGLSLVersion;
3113 #[cfg(feature = "v1_24")]
3114 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3115 pub fn gst_gl_video_format_swizzle(
3116 video_format: gst_video::GstVideoFormat,
3117 swizzle: *mut [c_int; 4],
3118 ) -> gboolean;
3119 pub fn gst_glsl_string_get_version_profile(
3120 s: *const c_char,
3121 version: *mut GstGLSLVersion,
3122 profile: *mut GstGLSLProfile,
3123 ) -> gboolean;
3124 pub fn gst_is_gl_base_memory(mem: *mut gst::GstMemory) -> gboolean;
3125 pub fn gst_is_gl_buffer(mem: *mut gst::GstMemory) -> gboolean;
3126 pub fn gst_is_gl_memory(mem: *mut gst::GstMemory) -> gboolean;
3127 pub fn gst_is_gl_memory_pbo(mem: *mut gst::GstMemory) -> gboolean;
3128 pub fn gst_is_gl_renderbuffer(mem: *mut gst::GstMemory) -> gboolean;
3129
3130}