Skip to main content

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