gstreamer_editing_services/auto/
meta_container.rs1#[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 {}