forked from mirrors/gstreamer-rs
gstreamer: Provide better bindings for ElementFactoryListType
Make it an actual bitflags type instead of just an u64 alias and add all the constants. As it's not defined as bitflags in C this needs to be done manually.
This commit is contained in:
parent
ce67076f26
commit
d746bf91e1
6 changed files with 63 additions and 5 deletions
|
@ -25,7 +25,6 @@ generate = [
|
||||||
"Gst.DebugColorFlags",
|
"Gst.DebugColorFlags",
|
||||||
"Gst.DebugGraphDetails",
|
"Gst.DebugGraphDetails",
|
||||||
"Gst.DebugLevel",
|
"Gst.DebugLevel",
|
||||||
"Gst.ElementFactoryListType",
|
|
||||||
"Gst.EventTypeFlags",
|
"Gst.EventTypeFlags",
|
||||||
"Gst.LibraryError",
|
"Gst.LibraryError",
|
||||||
"Gst.PadDirection",
|
"Gst.PadDirection",
|
||||||
|
@ -232,6 +231,11 @@ status = "generate"
|
||||||
name = "last"
|
name = "last"
|
||||||
ignore = true
|
ignore = true
|
||||||
|
|
||||||
|
[[object]]
|
||||||
|
name = "Gst.ElementFactoryListType"
|
||||||
|
status = "manual"
|
||||||
|
conversion_type = "scalar"
|
||||||
|
|
||||||
[[object]]
|
[[object]]
|
||||||
name = "Gst.Format"
|
name = "Gst.Format"
|
||||||
status = "generate"
|
status = "generate"
|
||||||
|
|
|
@ -6,4 +6,3 @@
|
||||||
use crate::auto::*;
|
use crate::auto::*;
|
||||||
|
|
||||||
pub type ClockTimeDiff = i64;
|
pub type ClockTimeDiff = i64;
|
||||||
pub type ElementFactoryListType = u64;
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ impl ElementFactory {
|
||||||
unsafe {
|
unsafe {
|
||||||
from_glib(ffi::gst_element_factory_list_is_type(
|
from_glib(ffi::gst_element_factory_list_is_type(
|
||||||
self.to_glib_none().0,
|
self.to_glib_none().0,
|
||||||
type_,
|
type_.to_glib(),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@ impl ElementFactory {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
unsafe {
|
unsafe {
|
||||||
FromGlibPtrContainer::from_glib_full(ffi::gst_element_factory_list_get_elements(
|
FromGlibPtrContainer::from_glib_full(ffi::gst_element_factory_list_get_elements(
|
||||||
type_,
|
type_.to_glib(),
|
||||||
minrank.to_glib(),
|
minrank.to_glib(),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,7 +208,6 @@ pub use self::flags::StreamType;
|
||||||
|
|
||||||
mod alias;
|
mod alias;
|
||||||
pub use self::alias::ClockTimeDiff;
|
pub use self::alias::ClockTimeDiff;
|
||||||
pub use self::alias::ElementFactoryListType;
|
|
||||||
|
|
||||||
pub mod functions;
|
pub mod functions;
|
||||||
|
|
||||||
|
|
53
gstreamer/src/element_factory_list_type.rs
Normal file
53
gstreamer/src/element_factory_list_type.rs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
// Take a look at the license at the top of the repository in the LICENSE file.
|
||||||
|
|
||||||
|
use bitflags::bitflags;
|
||||||
|
use glib::translate::*;
|
||||||
|
|
||||||
|
bitflags! {
|
||||||
|
pub struct ElementFactoryListType: u64 {
|
||||||
|
const DECODER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001;
|
||||||
|
const ENCODER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010;
|
||||||
|
const SINK = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0100;
|
||||||
|
const SRC = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_1000;
|
||||||
|
const MUXER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000;
|
||||||
|
const DEMUXER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0000;
|
||||||
|
const PARSER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0100_0000;
|
||||||
|
const PAYLOADER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_1000_0000;
|
||||||
|
const DEPAYLOADER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000_0000;
|
||||||
|
const FORMATTER = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0010_0000_0000;
|
||||||
|
const DECRYPTOR = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0100_0000_0000;
|
||||||
|
const ENCRYPTOR = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_1000_0000_0000;
|
||||||
|
const HARDWARE = 0b_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0001_0000_0000_0000;
|
||||||
|
|
||||||
|
const MEDIA_VIDEO = 0b_0000_0000_0000_0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
const MEDIA_AUDIO = 0b_0000_0000_0000_0100_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
const MEDIA_IMAGE = 0b_0000_0000_0000_1000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
const MEDIA_SUBTITLE = 0b_0000_0000_0001_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
const MEDIA_METADATA = 0b_0000_0000_0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
|
||||||
|
const ANY = 0b_0000_0000_0000_0001_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111;
|
||||||
|
const MEDIA_ANY = 0b_1111_1111_1111_1110_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
|
||||||
|
|
||||||
|
const VIDEO_ENCODER = Self::ENCODER.bits | Self::MEDIA_VIDEO.bits | Self::MEDIA_IMAGE.bits;
|
||||||
|
const AUDIO_ENCODER = Self::ENCODER.bits | Self::MEDIA_AUDIO.bits;
|
||||||
|
const AUDIOVIDEO_SINKS = Self::SINK.bits | Self::MEDIA_AUDIO.bits | Self::MEDIA_VIDEO.bits | Self::MEDIA_IMAGE.bits;
|
||||||
|
const DECODABLE = Self::DECODER.bits | Self::DEMUXER.bits | Self::DEPAYLOADER.bits | Self::PARSER.bits | Self::DECRYPTOR.bits;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
impl ToGlib for ElementFactoryListType {
|
||||||
|
type GlibType = ffi::GstElementFactoryListType;
|
||||||
|
|
||||||
|
fn to_glib(&self) -> ffi::GstElementFactoryListType {
|
||||||
|
self.bits()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
impl FromGlib<ffi::GstElementFactoryListType> for ElementFactoryListType {
|
||||||
|
unsafe fn from_glib(value: ffi::GstElementFactoryListType) -> ElementFactoryListType {
|
||||||
|
skip_assert_initialized!();
|
||||||
|
ElementFactoryListType::from_bits_truncate(value)
|
||||||
|
}
|
||||||
|
}
|
|
@ -132,6 +132,9 @@ pub use crate::pipeline::GstPipelineExtManual;
|
||||||
mod allocation_params;
|
mod allocation_params;
|
||||||
pub use self::allocation_params::AllocationParams;
|
pub use self::allocation_params::AllocationParams;
|
||||||
|
|
||||||
|
mod element_factory_list_type;
|
||||||
|
pub use element_factory_list_type::*;
|
||||||
|
|
||||||
// OS dependent Bus extensions (also import the other plateform mod for doc)
|
// OS dependent Bus extensions (also import the other plateform mod for doc)
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_14")))]
|
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_14")))]
|
||||||
|
|
Loading…
Reference in a new issue