gstreamer/
element_factory_type.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::{bitflags::bitflags, translate::*};
4
5use crate::ffi;
6
7bitflags! {
8    #[doc(alias = "GstElementFactoryListType")]
9    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
10    pub struct ElementFactoryType: u64 {
11        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_DECODER")]
12        const DECODER          = ffi::GST_ELEMENT_FACTORY_TYPE_DECODER;
13        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_ENCODER")]
14        const ENCODER          = ffi::GST_ELEMENT_FACTORY_TYPE_ENCODER;
15        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_SINK")]
16        const SINK             = ffi::GST_ELEMENT_FACTORY_TYPE_SINK;
17        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_SRC")]
18        const SRC              = ffi::GST_ELEMENT_FACTORY_TYPE_SRC;
19        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MUXER")]
20        const MUXER            = ffi::GST_ELEMENT_FACTORY_TYPE_MUXER;
21        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_DEMUXER")]
22        const DEMUXER          = ffi::GST_ELEMENT_FACTORY_TYPE_DEMUXER;
23        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_PARSER")]
24        const PARSER           = ffi::GST_ELEMENT_FACTORY_TYPE_PARSER;
25        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_PAYLOADER")]
26        const PAYLOADER        = ffi::GST_ELEMENT_FACTORY_TYPE_PAYLOADER;
27        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER")]
28        const DEPAYLOADER      = ffi::GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER;
29        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_FORMATTER")]
30        const FORMATTER        = ffi::GST_ELEMENT_FACTORY_TYPE_FORMATTER;
31        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_DECRYPTOR")]
32        const DECRYPTOR        = ffi::GST_ELEMENT_FACTORY_TYPE_DECRYPTOR;
33        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR")]
34        const ENCRYPTOR        = ffi::GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR;
35        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_HARDWARE")]
36        const HARDWARE         = ffi::GST_ELEMENT_FACTORY_TYPE_HARDWARE;
37        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_TIMESTAMPER")]
38        const TIMESTAMPER      = ffi::GST_ELEMENT_FACTORY_TYPE_TIMESTAMPER;
39
40        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO")]
41        const MEDIA_VIDEO      = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO;
42        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO")]
43        const MEDIA_AUDIO      = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO;
44        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE")]
45        const MEDIA_IMAGE      = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE;
46        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE")]
47        const MEDIA_SUBTITLE   = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE;
48        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA")]
49        const MEDIA_METADATA   = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA;
50
51        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_ANY")]
52        const ANY              = ffi::GST_ELEMENT_FACTORY_TYPE_ANY;
53        #[doc(alias = "GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY")]
54        const MEDIA_ANY        = ffi::GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY;
55
56        const VIDEO_ENCODER    = Self::ENCODER.bits() | Self::MEDIA_VIDEO.bits() | Self::MEDIA_IMAGE.bits();
57        const AUDIO_ENCODER    = Self::ENCODER.bits() | Self::MEDIA_AUDIO.bits();
58        const AUDIOVIDEO_SINKS = Self::SINK.bits() | Self::MEDIA_AUDIO.bits() | Self::MEDIA_VIDEO.bits() | Self::MEDIA_IMAGE.bits();
59        const DECODABLE        = Self::DECODER.bits() | Self::DEMUXER.bits() | Self::DEPAYLOADER.bits() | Self::PARSER.bits() | Self::DECRYPTOR.bits();
60    }
61}
62
63#[doc(hidden)]
64impl IntoGlib for ElementFactoryType {
65    type GlibType = ffi::GstElementFactoryListType;
66
67    #[inline]
68    fn into_glib(self) -> ffi::GstElementFactoryListType {
69        self.bits()
70    }
71}
72
73#[doc(hidden)]
74impl FromGlib<ffi::GstElementFactoryListType> for ElementFactoryType {
75    #[inline]
76    unsafe fn from_glib(value: ffi::GstElementFactoryListType) -> ElementFactoryType {
77        skip_assert_initialized!();
78        ElementFactoryType::from_bits_truncate(value)
79    }
80}