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