gstreamer/auto/tag_setter.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
6use crate::{Element, Object, TagList, TagMergeMode, ffi};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10 /// event_tags;
11 ///
12 /// GST_LOG_OBJECT (tagsetter, "merging tags, merge mode = `d`", merge_mode);
13 /// GST_LOG_OBJECT (tagsetter, "event tags: %" GST_PTR_FORMAT, event_tags);
14 /// GST_LOG_OBJECT (tagsetter, "set tags: %" GST_PTR_FORMAT, application_tags);
15 ///
16 /// result = gst_tag_list_merge (application_tags, event_tags, merge_mode);
17 ///
18 /// GST_LOG_OBJECT (tagsetter, "final tags: %" GST_PTR_FORMAT, result);
19 /// ]|
20 ///
21 /// # Implements
22 ///
23 /// [`TagSetterExt`][trait@crate::prelude::TagSetterExt], [`ElementExt`][trait@crate::prelude::ElementExt], [`GstObjectExt`][trait@crate::prelude::GstObjectExt], [`trait@glib::ObjectExt`], [`TagSetterExtManual`][trait@crate::prelude::TagSetterExtManual], [`ElementExtManual`][trait@crate::prelude::ElementExtManual], [`GstObjectExtManual`][trait@crate::prelude::GstObjectExtManual]
24 #[doc(alias = "GstTagSetter")]
25 pub struct TagSetter(Interface<ffi::GstTagSetter, ffi::GstTagSetterInterface>) @requires Element, Object;
26
27 match fn {
28 type_ => || ffi::gst_tag_setter_get_type(),
29 }
30}
31
32impl TagSetter {
33 pub const NONE: Option<&'static TagSetter> = None;
34}
35
36unsafe impl Send for TagSetter {}
37unsafe impl Sync for TagSetter {}
38
39/// Trait containing all [`struct@TagSetter`] methods.
40///
41/// # Implementors
42///
43/// [`TagSetter`][struct@crate::TagSetter]
44pub trait TagSetterExt: IsA<TagSetter> + 'static {
45 //#[doc(alias = "gst_tag_setter_add_tag_valist")]
46 //fn add_tag_valist(&self, mode: TagMergeMode, tag: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported) {
47 // unsafe { TODO: call ffi:gst_tag_setter_add_tag_valist() }
48 //}
49
50 //#[doc(alias = "gst_tag_setter_add_tag_valist_values")]
51 //fn add_tag_valist_values(&self, mode: TagMergeMode, tag: &str, var_args: /*Unknown conversion*//*Unimplemented*/Unsupported) {
52 // unsafe { TODO: call ffi:gst_tag_setter_add_tag_valist_values() }
53 //}
54
55 //#[doc(alias = "gst_tag_setter_add_tag_values")]
56 //fn add_tag_values(&self, mode: TagMergeMode, tag: &str, : /*Unknown conversion*//*Unimplemented*/Basic: VarArgs) {
57 // unsafe { TODO: call ffi:gst_tag_setter_add_tag_values() }
58 //}
59
60 /// Returns the current list of tags the setter uses. The list should not be
61 /// modified or freed.
62 ///
63 /// This function is not thread-safe.
64 ///
65 /// # Returns
66 ///
67 /// a current snapshot of the
68 /// taglist used in the setter or [`None`] if none is used.
69 #[doc(alias = "gst_tag_setter_get_tag_list")]
70 #[doc(alias = "get_tag_list")]
71 fn tag_list(&self) -> Option<TagList> {
72 unsafe {
73 from_glib_none(ffi::gst_tag_setter_get_tag_list(
74 self.as_ref().to_glib_none().0,
75 ))
76 }
77 }
78
79 /// Queries the mode by which tags inside the setter are overwritten by tags
80 /// from events
81 ///
82 /// # Returns
83 ///
84 /// the merge mode used inside the element.
85 #[doc(alias = "gst_tag_setter_get_tag_merge_mode")]
86 #[doc(alias = "get_tag_merge_mode")]
87 fn tag_merge_mode(&self) -> TagMergeMode {
88 unsafe {
89 from_glib(ffi::gst_tag_setter_get_tag_merge_mode(
90 self.as_ref().to_glib_none().0,
91 ))
92 }
93 }
94
95 /// Merges the given list into the setter's list using the given mode.
96 /// ## `list`
97 /// a tag list to merge from
98 /// ## `mode`
99 /// the mode to merge with
100 #[doc(alias = "gst_tag_setter_merge_tags")]
101 fn merge_tags(&self, list: &TagList, mode: TagMergeMode) {
102 unsafe {
103 ffi::gst_tag_setter_merge_tags(
104 self.as_ref().to_glib_none().0,
105 list.to_glib_none().0,
106 mode.into_glib(),
107 );
108 }
109 }
110
111 /// Reset the internal taglist. Elements should call this from within the
112 /// state-change handler.
113 #[doc(alias = "gst_tag_setter_reset_tags")]
114 fn reset_tags(&self) {
115 unsafe {
116 ffi::gst_tag_setter_reset_tags(self.as_ref().to_glib_none().0);
117 }
118 }
119
120 /// Sets the given merge mode that is used for adding tags from events to tags
121 /// specified by this interface. The default is [`TagMergeMode::Keep`][crate::TagMergeMode::Keep], which keeps
122 /// the tags set with this interface and discards tags from events.
123 /// ## `mode`
124 /// The mode with which tags are added
125 #[doc(alias = "gst_tag_setter_set_tag_merge_mode")]
126 fn set_tag_merge_mode(&self, mode: TagMergeMode) {
127 unsafe {
128 ffi::gst_tag_setter_set_tag_merge_mode(
129 self.as_ref().to_glib_none().0,
130 mode.into_glib(),
131 );
132 }
133 }
134}
135
136impl<O: IsA<TagSetter>> TagSetterExt for O {}