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
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 {}