gstreamer_editing_services/auto/
meta_container.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#[cfg(feature = "v1_18")]
7#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8use crate::MarkerList;
9use crate::{ffi, MetaFlag};
10use glib::{
11    object::ObjectType as _,
12    prelude::*,
13    signal::{connect_raw, SignalHandlerId},
14    translate::*,
15};
16use std::boxed::Box as Box_;
17
18glib::wrapper! {
19    #[doc(alias = "GESMetaContainer")]
20    pub struct MetaContainer(Interface<ffi::GESMetaContainer, ffi::GESMetaContainerInterface>);
21
22    match fn {
23        type_ => || ffi::ges_meta_container_get_type(),
24    }
25}
26
27impl MetaContainer {
28    pub const NONE: Option<&'static MetaContainer> = None;
29}
30
31mod sealed {
32    pub trait Sealed {}
33    impl<T: super::IsA<super::MetaContainer>> Sealed for T {}
34}
35
36pub trait MetaContainerExt: IsA<MetaContainer> + sealed::Sealed + 'static {
37    #[doc(alias = "ges_meta_container_add_metas_from_string")]
38    fn add_metas_from_string(&self, str: &str) -> bool {
39        unsafe {
40            from_glib(ffi::ges_meta_container_add_metas_from_string(
41                self.as_ref().to_glib_none().0,
42                str.to_glib_none().0,
43            ))
44        }
45    }
46
47    #[doc(alias = "ges_meta_container_check_meta_registered")]
48    fn check_meta_registered(&self, meta_item: &str) -> Option<(MetaFlag, glib::types::Type)> {
49        unsafe {
50            let mut flags = std::mem::MaybeUninit::uninit();
51            let mut type_ = std::mem::MaybeUninit::uninit();
52            let ret = from_glib(ffi::ges_meta_container_check_meta_registered(
53                self.as_ref().to_glib_none().0,
54                meta_item.to_glib_none().0,
55                flags.as_mut_ptr(),
56                type_.as_mut_ptr(),
57            ));
58            if ret {
59                Some((
60                    from_glib(flags.assume_init()),
61                    from_glib(type_.assume_init()),
62                ))
63            } else {
64                None
65            }
66        }
67    }
68
69    #[doc(alias = "ges_meta_container_foreach")]
70    fn foreach<P: FnMut(&MetaContainer, &str, &glib::Value)>(&self, func: P) {
71        let mut func_data: P = func;
72        unsafe extern "C" fn func_func<P: FnMut(&MetaContainer, &str, &glib::Value)>(
73            container: *const ffi::GESMetaContainer,
74            key: *const std::ffi::c_char,
75            value: *const glib::gobject_ffi::GValue,
76            user_data: glib::ffi::gpointer,
77        ) {
78            let container = from_glib_borrow(container);
79            let key: Borrowed<glib::GString> = from_glib_borrow(key);
80            let value = from_glib_borrow(value);
81            let callback = user_data as *mut P;
82            (*callback)(&container, key.as_str(), &value)
83        }
84        let func = Some(func_func::<P> as _);
85        let super_callback0: &mut P = &mut func_data;
86        unsafe {
87            ffi::ges_meta_container_foreach(
88                self.as_ref().to_glib_none().0,
89                func,
90                super_callback0 as *mut _ as *mut _,
91            );
92        }
93    }
94
95    #[doc(alias = "ges_meta_container_get_boolean")]
96    #[doc(alias = "get_boolean")]
97    fn boolean(&self, meta_item: &str) -> Option<bool> {
98        unsafe {
99            let mut dest = std::mem::MaybeUninit::uninit();
100            let ret = from_glib(ffi::ges_meta_container_get_boolean(
101                self.as_ref().to_glib_none().0,
102                meta_item.to_glib_none().0,
103                dest.as_mut_ptr(),
104            ));
105            if ret {
106                Some(from_glib(dest.assume_init()))
107            } else {
108                None
109            }
110        }
111    }
112
113    #[doc(alias = "ges_meta_container_get_date")]
114    #[doc(alias = "get_date")]
115    fn date(&self, meta_item: &str) -> Option<glib::Date> {
116        unsafe {
117            let mut dest = std::ptr::null_mut();
118            let ret = from_glib(ffi::ges_meta_container_get_date(
119                self.as_ref().to_glib_none().0,
120                meta_item.to_glib_none().0,
121                &mut dest,
122            ));
123            if ret {
124                Some(from_glib_full(dest))
125            } else {
126                None
127            }
128        }
129    }
130
131    #[doc(alias = "ges_meta_container_get_date_time")]
132    #[doc(alias = "get_date_time")]
133    fn date_time(&self, meta_item: &str) -> Option<gst::DateTime> {
134        unsafe {
135            let mut dest = std::ptr::null_mut();
136            let ret = from_glib(ffi::ges_meta_container_get_date_time(
137                self.as_ref().to_glib_none().0,
138                meta_item.to_glib_none().0,
139                &mut dest,
140            ));
141            if ret {
142                Some(from_glib_full(dest))
143            } else {
144                None
145            }
146        }
147    }
148
149    #[doc(alias = "ges_meta_container_get_double")]
150    #[doc(alias = "get_double")]
151    fn double(&self, meta_item: &str) -> Option<f64> {
152        unsafe {
153            let mut dest = std::mem::MaybeUninit::uninit();
154            let ret = from_glib(ffi::ges_meta_container_get_double(
155                self.as_ref().to_glib_none().0,
156                meta_item.to_glib_none().0,
157                dest.as_mut_ptr(),
158            ));
159            if ret {
160                Some(dest.assume_init())
161            } else {
162                None
163            }
164        }
165    }
166
167    #[doc(alias = "ges_meta_container_get_float")]
168    #[doc(alias = "get_float")]
169    fn float(&self, meta_item: &str) -> Option<f32> {
170        unsafe {
171            let mut dest = std::mem::MaybeUninit::uninit();
172            let ret = from_glib(ffi::ges_meta_container_get_float(
173                self.as_ref().to_glib_none().0,
174                meta_item.to_glib_none().0,
175                dest.as_mut_ptr(),
176            ));
177            if ret {
178                Some(dest.assume_init())
179            } else {
180                None
181            }
182        }
183    }
184
185    #[doc(alias = "ges_meta_container_get_int")]
186    #[doc(alias = "get_int")]
187    fn int(&self, meta_item: &str) -> Option<i32> {
188        unsafe {
189            let mut dest = std::mem::MaybeUninit::uninit();
190            let ret = from_glib(ffi::ges_meta_container_get_int(
191                self.as_ref().to_glib_none().0,
192                meta_item.to_glib_none().0,
193                dest.as_mut_ptr(),
194            ));
195            if ret {
196                Some(dest.assume_init())
197            } else {
198                None
199            }
200        }
201    }
202
203    #[doc(alias = "ges_meta_container_get_int64")]
204    #[doc(alias = "get_int64")]
205    fn int64(&self, meta_item: &str) -> Option<i64> {
206        unsafe {
207            let mut dest = std::mem::MaybeUninit::uninit();
208            let ret = from_glib(ffi::ges_meta_container_get_int64(
209                self.as_ref().to_glib_none().0,
210                meta_item.to_glib_none().0,
211                dest.as_mut_ptr(),
212            ));
213            if ret {
214                Some(dest.assume_init())
215            } else {
216                None
217            }
218        }
219    }
220
221    #[cfg(feature = "v1_18")]
222    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
223    #[doc(alias = "ges_meta_container_get_marker_list")]
224    #[doc(alias = "get_marker_list")]
225    fn marker_list(&self, key: &str) -> Option<MarkerList> {
226        unsafe {
227            from_glib_full(ffi::ges_meta_container_get_marker_list(
228                self.as_ref().to_glib_none().0,
229                key.to_glib_none().0,
230            ))
231        }
232    }
233
234    #[doc(alias = "ges_meta_container_get_meta")]
235    #[doc(alias = "get_meta")]
236    fn meta(&self, key: &str) -> Option<glib::Value> {
237        unsafe {
238            from_glib_none(ffi::ges_meta_container_get_meta(
239                self.as_ref().to_glib_none().0,
240                key.to_glib_none().0,
241            ))
242        }
243    }
244
245    #[doc(alias = "ges_meta_container_get_string")]
246    #[doc(alias = "get_string")]
247    fn string(&self, meta_item: &str) -> Option<glib::GString> {
248        unsafe {
249            from_glib_none(ffi::ges_meta_container_get_string(
250                self.as_ref().to_glib_none().0,
251                meta_item.to_glib_none().0,
252            ))
253        }
254    }
255
256    #[doc(alias = "ges_meta_container_get_uint")]
257    #[doc(alias = "get_uint")]
258    fn uint(&self, meta_item: &str) -> Option<u32> {
259        unsafe {
260            let mut dest = std::mem::MaybeUninit::uninit();
261            let ret = from_glib(ffi::ges_meta_container_get_uint(
262                self.as_ref().to_glib_none().0,
263                meta_item.to_glib_none().0,
264                dest.as_mut_ptr(),
265            ));
266            if ret {
267                Some(dest.assume_init())
268            } else {
269                None
270            }
271        }
272    }
273
274    #[doc(alias = "ges_meta_container_get_uint64")]
275    #[doc(alias = "get_uint64")]
276    fn uint64(&self, meta_item: &str) -> Option<u64> {
277        unsafe {
278            let mut dest = std::mem::MaybeUninit::uninit();
279            let ret = from_glib(ffi::ges_meta_container_get_uint64(
280                self.as_ref().to_glib_none().0,
281                meta_item.to_glib_none().0,
282                dest.as_mut_ptr(),
283            ));
284            if ret {
285                Some(dest.assume_init())
286            } else {
287                None
288            }
289        }
290    }
291
292    #[doc(alias = "ges_meta_container_metas_to_string")]
293    fn metas_to_string(&self) -> glib::GString {
294        unsafe {
295            from_glib_full(ffi::ges_meta_container_metas_to_string(
296                self.as_ref().to_glib_none().0,
297            ))
298        }
299    }
300
301    #[doc(alias = "ges_meta_container_register_meta")]
302    fn register_meta(&self, flags: MetaFlag, meta_item: &str, value: &glib::Value) -> bool {
303        unsafe {
304            from_glib(ffi::ges_meta_container_register_meta(
305                self.as_ref().to_glib_none().0,
306                flags.into_glib(),
307                meta_item.to_glib_none().0,
308                value.to_glib_none().0,
309            ))
310        }
311    }
312
313    #[doc(alias = "ges_meta_container_register_meta_boolean")]
314    fn register_meta_boolean(&self, flags: MetaFlag, meta_item: &str, value: bool) -> bool {
315        unsafe {
316            from_glib(ffi::ges_meta_container_register_meta_boolean(
317                self.as_ref().to_glib_none().0,
318                flags.into_glib(),
319                meta_item.to_glib_none().0,
320                value.into_glib(),
321            ))
322        }
323    }
324
325    #[doc(alias = "ges_meta_container_register_meta_date")]
326    fn register_meta_date(&self, flags: MetaFlag, meta_item: &str, value: &glib::Date) -> bool {
327        unsafe {
328            from_glib(ffi::ges_meta_container_register_meta_date(
329                self.as_ref().to_glib_none().0,
330                flags.into_glib(),
331                meta_item.to_glib_none().0,
332                value.to_glib_none().0,
333            ))
334        }
335    }
336
337    #[doc(alias = "ges_meta_container_register_meta_date_time")]
338    fn register_meta_date_time(
339        &self,
340        flags: MetaFlag,
341        meta_item: &str,
342        value: &gst::DateTime,
343    ) -> bool {
344        unsafe {
345            from_glib(ffi::ges_meta_container_register_meta_date_time(
346                self.as_ref().to_glib_none().0,
347                flags.into_glib(),
348                meta_item.to_glib_none().0,
349                value.to_glib_none().0,
350            ))
351        }
352    }
353
354    #[doc(alias = "ges_meta_container_register_meta_double")]
355    fn register_meta_double(&self, flags: MetaFlag, meta_item: &str, value: f64) -> bool {
356        unsafe {
357            from_glib(ffi::ges_meta_container_register_meta_double(
358                self.as_ref().to_glib_none().0,
359                flags.into_glib(),
360                meta_item.to_glib_none().0,
361                value,
362            ))
363        }
364    }
365
366    #[doc(alias = "ges_meta_container_register_meta_float")]
367    fn register_meta_float(&self, flags: MetaFlag, meta_item: &str, value: f32) -> bool {
368        unsafe {
369            from_glib(ffi::ges_meta_container_register_meta_float(
370                self.as_ref().to_glib_none().0,
371                flags.into_glib(),
372                meta_item.to_glib_none().0,
373                value,
374            ))
375        }
376    }
377
378    #[doc(alias = "ges_meta_container_register_meta_int")]
379    fn register_meta_int(&self, flags: MetaFlag, meta_item: &str, value: i32) -> bool {
380        unsafe {
381            from_glib(ffi::ges_meta_container_register_meta_int(
382                self.as_ref().to_glib_none().0,
383                flags.into_glib(),
384                meta_item.to_glib_none().0,
385                value,
386            ))
387        }
388    }
389
390    #[doc(alias = "ges_meta_container_register_meta_int64")]
391    fn register_meta_int64(&self, flags: MetaFlag, meta_item: &str, value: i64) -> bool {
392        unsafe {
393            from_glib(ffi::ges_meta_container_register_meta_int64(
394                self.as_ref().to_glib_none().0,
395                flags.into_glib(),
396                meta_item.to_glib_none().0,
397                value,
398            ))
399        }
400    }
401
402    #[doc(alias = "ges_meta_container_register_meta_string")]
403    fn register_meta_string(&self, flags: MetaFlag, meta_item: &str, value: &str) -> bool {
404        unsafe {
405            from_glib(ffi::ges_meta_container_register_meta_string(
406                self.as_ref().to_glib_none().0,
407                flags.into_glib(),
408                meta_item.to_glib_none().0,
409                value.to_glib_none().0,
410            ))
411        }
412    }
413
414    #[doc(alias = "ges_meta_container_register_meta_uint")]
415    fn register_meta_uint(&self, flags: MetaFlag, meta_item: &str, value: u32) -> bool {
416        unsafe {
417            from_glib(ffi::ges_meta_container_register_meta_uint(
418                self.as_ref().to_glib_none().0,
419                flags.into_glib(),
420                meta_item.to_glib_none().0,
421                value,
422            ))
423        }
424    }
425
426    #[doc(alias = "ges_meta_container_register_meta_uint64")]
427    fn register_meta_uint64(&self, flags: MetaFlag, meta_item: &str, value: u64) -> bool {
428        unsafe {
429            from_glib(ffi::ges_meta_container_register_meta_uint64(
430                self.as_ref().to_glib_none().0,
431                flags.into_glib(),
432                meta_item.to_glib_none().0,
433                value,
434            ))
435        }
436    }
437
438    #[cfg(feature = "v1_18")]
439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
440    #[doc(alias = "ges_meta_container_register_static_meta")]
441    fn register_static_meta(
442        &self,
443        flags: MetaFlag,
444        meta_item: &str,
445        type_: glib::types::Type,
446    ) -> bool {
447        unsafe {
448            from_glib(ffi::ges_meta_container_register_static_meta(
449                self.as_ref().to_glib_none().0,
450                flags.into_glib(),
451                meta_item.to_glib_none().0,
452                type_.into_glib(),
453            ))
454        }
455    }
456
457    #[doc(alias = "ges_meta_container_set_boolean")]
458    fn set_boolean(&self, meta_item: &str, value: bool) -> bool {
459        unsafe {
460            from_glib(ffi::ges_meta_container_set_boolean(
461                self.as_ref().to_glib_none().0,
462                meta_item.to_glib_none().0,
463                value.into_glib(),
464            ))
465        }
466    }
467
468    #[doc(alias = "ges_meta_container_set_date")]
469    fn set_date(&self, meta_item: &str, value: &glib::Date) -> bool {
470        unsafe {
471            from_glib(ffi::ges_meta_container_set_date(
472                self.as_ref().to_glib_none().0,
473                meta_item.to_glib_none().0,
474                value.to_glib_none().0,
475            ))
476        }
477    }
478
479    #[doc(alias = "ges_meta_container_set_date_time")]
480    fn set_date_time(&self, meta_item: &str, value: &gst::DateTime) -> bool {
481        unsafe {
482            from_glib(ffi::ges_meta_container_set_date_time(
483                self.as_ref().to_glib_none().0,
484                meta_item.to_glib_none().0,
485                value.to_glib_none().0,
486            ))
487        }
488    }
489
490    #[doc(alias = "ges_meta_container_set_double")]
491    fn set_double(&self, meta_item: &str, value: f64) -> bool {
492        unsafe {
493            from_glib(ffi::ges_meta_container_set_double(
494                self.as_ref().to_glib_none().0,
495                meta_item.to_glib_none().0,
496                value,
497            ))
498        }
499    }
500
501    #[doc(alias = "ges_meta_container_set_float")]
502    fn set_float(&self, meta_item: &str, value: f32) -> bool {
503        unsafe {
504            from_glib(ffi::ges_meta_container_set_float(
505                self.as_ref().to_glib_none().0,
506                meta_item.to_glib_none().0,
507                value,
508            ))
509        }
510    }
511
512    #[doc(alias = "ges_meta_container_set_int")]
513    fn set_int(&self, meta_item: &str, value: i32) -> bool {
514        unsafe {
515            from_glib(ffi::ges_meta_container_set_int(
516                self.as_ref().to_glib_none().0,
517                meta_item.to_glib_none().0,
518                value,
519            ))
520        }
521    }
522
523    #[doc(alias = "ges_meta_container_set_int64")]
524    fn set_int64(&self, meta_item: &str, value: i64) -> bool {
525        unsafe {
526            from_glib(ffi::ges_meta_container_set_int64(
527                self.as_ref().to_glib_none().0,
528                meta_item.to_glib_none().0,
529                value,
530            ))
531        }
532    }
533
534    #[cfg(feature = "v1_18")]
535    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
536    #[doc(alias = "ges_meta_container_set_marker_list")]
537    fn set_marker_list(&self, meta_item: &str, list: &MarkerList) -> bool {
538        unsafe {
539            from_glib(ffi::ges_meta_container_set_marker_list(
540                self.as_ref().to_glib_none().0,
541                meta_item.to_glib_none().0,
542                list.to_glib_none().0,
543            ))
544        }
545    }
546
547    #[doc(alias = "ges_meta_container_set_meta")]
548    fn set_meta(&self, meta_item: &str, value: Option<&glib::Value>) -> bool {
549        unsafe {
550            from_glib(ffi::ges_meta_container_set_meta(
551                self.as_ref().to_glib_none().0,
552                meta_item.to_glib_none().0,
553                value.to_glib_none().0,
554            ))
555        }
556    }
557
558    #[doc(alias = "ges_meta_container_set_string")]
559    fn set_string(&self, meta_item: &str, value: &str) -> bool {
560        unsafe {
561            from_glib(ffi::ges_meta_container_set_string(
562                self.as_ref().to_glib_none().0,
563                meta_item.to_glib_none().0,
564                value.to_glib_none().0,
565            ))
566        }
567    }
568
569    #[doc(alias = "ges_meta_container_set_uint")]
570    fn set_uint(&self, meta_item: &str, value: u32) -> bool {
571        unsafe {
572            from_glib(ffi::ges_meta_container_set_uint(
573                self.as_ref().to_glib_none().0,
574                meta_item.to_glib_none().0,
575                value,
576            ))
577        }
578    }
579
580    #[doc(alias = "ges_meta_container_set_uint64")]
581    fn set_uint64(&self, meta_item: &str, value: u64) -> bool {
582        unsafe {
583            from_glib(ffi::ges_meta_container_set_uint64(
584                self.as_ref().to_glib_none().0,
585                meta_item.to_glib_none().0,
586                value,
587            ))
588        }
589    }
590
591    #[doc(alias = "notify-meta")]
592    fn connect_notify_meta<F: Fn(&Self, &str, Option<&glib::Value>) + 'static>(
593        &self,
594        detail: Option<&str>,
595        f: F,
596    ) -> SignalHandlerId {
597        unsafe extern "C" fn notify_meta_trampoline<
598            P: IsA<MetaContainer>,
599            F: Fn(&P, &str, Option<&glib::Value>) + 'static,
600        >(
601            this: *mut ffi::GESMetaContainer,
602            key: *mut std::ffi::c_char,
603            value: *mut glib::gobject_ffi::GValue,
604            f: glib::ffi::gpointer,
605        ) {
606            let f: &F = &*(f as *const F);
607            f(
608                MetaContainer::from_glib_borrow(this).unsafe_cast_ref(),
609                &glib::GString::from_glib_borrow(key),
610                Option::<glib::Value>::from_glib_borrow(value)
611                    .as_ref()
612                    .as_ref(),
613            )
614        }
615        unsafe {
616            let f: Box_<F> = Box_::new(f);
617            let detailed_signal_name = detail.map(|name| format!("notify-meta::{name}\0"));
618            let signal_name: &[u8] = detailed_signal_name
619                .as_ref()
620                .map_or(&b"notify-meta\0"[..], |n| n.as_bytes());
621            connect_raw(
622                self.as_ptr() as *mut _,
623                signal_name.as_ptr() as *const _,
624                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
625                    notify_meta_trampoline::<Self, F> as *const (),
626                )),
627                Box_::into_raw(f),
628            )
629        }
630    }
631}
632
633impl<O: IsA<MetaContainer>> MetaContainerExt for O {}