mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-26 13:31:00 +00:00
Move properties code to a separate file
This commit is contained in:
parent
83388c8322
commit
176e07bf0a
6 changed files with 211 additions and 184 deletions
|
@ -14,6 +14,7 @@ use gst_base::prelude::*;
|
||||||
use gst_audio;
|
use gst_audio;
|
||||||
use gst_audio::prelude::*;
|
use gst_audio::prelude::*;
|
||||||
|
|
||||||
|
use gst_plugin::properties::*;
|
||||||
use gst_plugin::object::*;
|
use gst_plugin::object::*;
|
||||||
use gst_plugin::element::*;
|
use gst_plugin::element::*;
|
||||||
use gst_plugin::base_transform::*;
|
use gst_plugin::base_transform::*;
|
||||||
|
|
|
@ -17,6 +17,7 @@ use gst_base;
|
||||||
use gst_base::prelude::*;
|
use gst_base::prelude::*;
|
||||||
|
|
||||||
use gst_plugin::object::*;
|
use gst_plugin::object::*;
|
||||||
|
use gst_plugin::properties::*;
|
||||||
use gst_plugin::element::*;
|
use gst_plugin::element::*;
|
||||||
use gst_plugin::base_sink::*;
|
use gst_plugin::base_sink::*;
|
||||||
use gst_plugin::uri_handler::*;
|
use gst_plugin::uri_handler::*;
|
||||||
|
|
|
@ -19,6 +19,7 @@ use gst_base;
|
||||||
use gst_base::prelude::*;
|
use gst_base::prelude::*;
|
||||||
|
|
||||||
use gst_plugin::object::*;
|
use gst_plugin::object::*;
|
||||||
|
use gst_plugin::properties::*;
|
||||||
use gst_plugin::element::*;
|
use gst_plugin::element::*;
|
||||||
use gst_plugin::base_src::*;
|
use gst_plugin::base_src::*;
|
||||||
use gst_plugin::uri_handler::*;
|
use gst_plugin::uri_handler::*;
|
||||||
|
|
|
@ -67,6 +67,7 @@ pub mod adapter;
|
||||||
pub mod plugin;
|
pub mod plugin;
|
||||||
pub mod bytes;
|
pub mod bytes;
|
||||||
|
|
||||||
|
pub mod properties;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
pub mod object;
|
pub mod object;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
|
|
@ -20,6 +20,8 @@ use gobject_ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
|
||||||
|
use properties::*;
|
||||||
|
|
||||||
pub trait ObjectImpl<T: ObjectType>: Send + Sync + 'static {
|
pub trait ObjectImpl<T: ObjectType>: Send + Sync + 'static {
|
||||||
fn set_property(&self, _obj: &glib::Object, _id: u32, _value: &glib::Value) {
|
fn set_property(&self, _obj: &glib::Object, _id: u32, _value: &glib::Value) {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
|
@ -164,110 +166,7 @@ pub unsafe trait ObjectClass {
|
||||||
pspecs.push(ptr::null_mut());
|
pspecs.push(ptr::null_mut());
|
||||||
|
|
||||||
for property in properties {
|
for property in properties {
|
||||||
match *property {
|
pspecs.push(property.into());
|
||||||
Property::Boolean(name, nick, description, default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_boolean(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
default.to_glib(),
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Int(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_int(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Int64(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_int64(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::UInt(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_uint(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::UInt64(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_uint64(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Float(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_float(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Double(name, nick, description, (min, max), default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_double(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
min,
|
|
||||||
max,
|
|
||||||
default,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::String(name, nick, description, default, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_string(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
default.to_glib_none().0,
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Boxed(name, nick, description, type_, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_boxed(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
type_.to_glib(),
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
Property::Object(name, nick, description, type_, mutability) => unsafe {
|
|
||||||
pspecs.push(gobject_ffi::g_param_spec_object(
|
|
||||||
name.to_glib_none().0,
|
|
||||||
nick.to_glib_none().0,
|
|
||||||
description.to_glib_none().0,
|
|
||||||
type_.to_glib(),
|
|
||||||
mutability.into(),
|
|
||||||
));
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
|
@ -282,86 +181,6 @@ pub unsafe trait ObjectClass {
|
||||||
|
|
||||||
unsafe impl<T: ObjectType> ObjectClass for ClassStruct<T> {}
|
unsafe impl<T: ObjectType> ObjectClass for ClassStruct<T> {}
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
|
||||||
pub enum PropertyMutability {
|
|
||||||
Readable,
|
|
||||||
Writable,
|
|
||||||
ReadWrite,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Into<gobject_ffi::GParamFlags> for PropertyMutability {
|
|
||||||
fn into(self) -> gobject_ffi::GParamFlags {
|
|
||||||
use self::PropertyMutability::*;
|
|
||||||
|
|
||||||
match self {
|
|
||||||
Readable => gobject_ffi::G_PARAM_READABLE,
|
|
||||||
Writable => gobject_ffi::G_PARAM_WRITABLE,
|
|
||||||
ReadWrite => gobject_ffi::G_PARAM_READWRITE,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub enum Property<'a> {
|
|
||||||
Boolean(&'a str, &'a str, &'a str, bool, PropertyMutability),
|
|
||||||
Int(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(i32, i32),
|
|
||||||
i32,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
Int64(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(i64, i64),
|
|
||||||
i64,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
UInt(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(u32, u32),
|
|
||||||
u32,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
UInt64(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(u64, u64),
|
|
||||||
u64,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
Float(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(f32, f32),
|
|
||||||
f32,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
Double(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
(f64, f64),
|
|
||||||
f64,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
String(
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
&'a str,
|
|
||||||
Option<&'a str>,
|
|
||||||
PropertyMutability,
|
|
||||||
),
|
|
||||||
Boxed(&'a str, &'a str, &'a str, glib::Type, PropertyMutability),
|
|
||||||
Object(&'a str, &'a str, &'a str, glib::Type, PropertyMutability),
|
|
||||||
}
|
|
||||||
|
|
||||||
unsafe extern "C" fn class_init<T: ObjectType>(
|
unsafe extern "C" fn class_init<T: ObjectType>(
|
||||||
klass: glib_ffi::gpointer,
|
klass: glib_ffi::gpointer,
|
||||||
_klass_data: glib_ffi::gpointer,
|
_klass_data: glib_ffi::gpointer,
|
||||||
|
|
204
gst-plugin/src/properties.rs
Normal file
204
gst-plugin/src/properties.rs
Normal file
|
@ -0,0 +1,204 @@
|
||||||
|
// Copyright (C) 2017 Sebastian Dröge <sebastian@centricular.com>
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
use gobject_ffi;
|
||||||
|
|
||||||
|
use glib;
|
||||||
|
use glib::translate::*;
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||||
|
pub enum PropertyMutability {
|
||||||
|
Readable,
|
||||||
|
Writable,
|
||||||
|
ReadWrite,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Into<gobject_ffi::GParamFlags> for PropertyMutability {
|
||||||
|
fn into(self) -> gobject_ffi::GParamFlags {
|
||||||
|
use self::PropertyMutability::*;
|
||||||
|
|
||||||
|
match self {
|
||||||
|
Readable => gobject_ffi::G_PARAM_READABLE,
|
||||||
|
Writable => gobject_ffi::G_PARAM_WRITABLE,
|
||||||
|
ReadWrite => gobject_ffi::G_PARAM_READWRITE,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum Property<'a> {
|
||||||
|
Boolean(&'a str, &'a str, &'a str, bool, PropertyMutability),
|
||||||
|
Int(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(i32, i32),
|
||||||
|
i32,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
Int64(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(i64, i64),
|
||||||
|
i64,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
UInt(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(u32, u32),
|
||||||
|
u32,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
UInt64(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(u64, u64),
|
||||||
|
u64,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
Float(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(f32, f32),
|
||||||
|
f32,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
Double(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
(f64, f64),
|
||||||
|
f64,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
String(
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
&'a str,
|
||||||
|
Option<&'a str>,
|
||||||
|
PropertyMutability,
|
||||||
|
),
|
||||||
|
Boxed(&'a str, &'a str, &'a str, glib::Type, PropertyMutability),
|
||||||
|
Object(&'a str, &'a str, &'a str, glib::Type, PropertyMutability),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Into<*mut gobject_ffi::GParamSpec> for &'a Property<'a> {
|
||||||
|
fn into(self) -> *mut gobject_ffi::GParamSpec {
|
||||||
|
unsafe {
|
||||||
|
match *self {
|
||||||
|
Property::Boolean(name, nick, description, default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_boolean(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
default.to_glib(),
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Int(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_int(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Int64(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_int64(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::UInt(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_uint(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::UInt64(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_uint64(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Float(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_float(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Double(name, nick, description, (min, max), default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_double(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
min,
|
||||||
|
max,
|
||||||
|
default,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::String(name, nick, description, default, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_string(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
default.to_glib_none().0,
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Boxed(name, nick, description, type_, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_boxed(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
type_.to_glib(),
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Property::Object(name, nick, description, type_, mutability) => {
|
||||||
|
gobject_ffi::g_param_spec_object(
|
||||||
|
name.to_glib_none().0,
|
||||||
|
nick.to_glib_none().0,
|
||||||
|
description.to_glib_none().0,
|
||||||
|
type_.to_glib(),
|
||||||
|
mutability.into(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue