[][src]Struct gstreamer::structure::Structure

pub struct Structure(_, _);

A Structure is a collection of key/value pairs. The keys are expressed as GQuarks and the values can be of any GType.

In addition to the key/value pairs, a Structure also has a name. The name starts with a letter and can be filled by letters, numbers and any of "/-_.:".

Structure is used by various GStreamer subsystems to store information in a flexible and extensible way. A Structure does not have a refcount because it usually is part of a higher level object such as Caps, Message, Event, Query. It provides a means to enforce mutability using the refcount of the parent with the Structure::set_parent_refcount method.

A Structure can be created with Structure::new_empty or Structure::new, which both take a name and an optional set of key/value pairs along with the types of the values.

Field values can be changed with Structure::set_value or Structure::set.

Field values can be retrieved with Structure::get_value or the more convenient gst_structure_get_*() functions.

Fields can be removed with Structure::remove_field or Structure::remove_fields.

Strings in structures must be ASCII or UTF-8 encoded. Other encodings are not allowed. Strings may be None however.

The serialization format

GstStructure serialization format serialize the GstStructure name, keys/GType/values in a comma separated list with the structure name as first field without value followed by separated key/value pairs in the form key=value, for example:

a-structure, key=value

The values type will be inferred if not explicitly specified with the (GTypeName)value syntax, for example the following struct will have one field called 'is-string' which has the string 'true' as a value:

a-struct, field-is-string=(string)true, field-is-boolean=true

Note: without specifying (string), field-is-string` type would have been inferred as boolean.

Note: we specified (string) as a type even if gchararray is the actual GType name as for convenience some well known types have been aliased or abbreviated.

To avoid specifying the type, you can give some hints to the "type system". For example to specify a value as a double, you should add a decimal (ie. 1 is an int while 1.0 is a double).

Note: when a structure is serialized with Structure::to_string, all values are explicitly typed.

Some types have special delimiters:

Structures are delimited either by a null character \0 or a semicolumn ; the latter allowing to store multiple structures in the same string (see #GstCaps).

Quotes are used as "default" delimiters and can be used around any types that don't use other delimiters (for example a-struct, i=(int)"1"). They are use to allow adding spaces or special characters (such as delimiters, semicolumns, etc..) inside strings and you can use backslashes \ to escape characters inside them, for example:

a-struct, special="\"{[(;)]}\" can be used inside quotes"

They also allow for nested structure, such as:

a-struct, nested=(GstStructure)"nested-struct, nested=true"

Note: Be aware that the current #GstCaps / #GstStructure serialization into string has limited support for nested #GstCaps / #GstStructure fields. It can only support one level of nesting. Using more levels will lead to unexpected behavior when using serialization features, such as gst_caps_to_string() or gst_value_serialize() and their counterparts.

Methods

impl Structure[src]

pub fn builder(name: &str) -> Builder[src]

pub fn new_empty(name: &str) -> Structure[src]

Creates a new, empty Structure with the given name.

See Structure::set_name for constraints on the name parameter.

Free-function: gst_structure_free

name

name of new structure

Returns

a new, empty Structure

pub fn new(name: &str, values: &[(&str, &dyn ToSendValue)]) -> Structure[src]

Creates a new Structure with the given name. Parses the list of variable arguments and sets fields to the values listed. Variable arguments should be passed as field name, field type, and value. Last variable argument should be None.

Free-function: gst_structure_free

name

name of new structure

firstfield

name of first field to set

Returns

a new Structure

pub unsafe fn into_ptr(self) -> *mut GstStructure[src]

pub fn from_iter<'a, 'b, I>(name: &str, iter: I) -> Structure where
    I: IntoIterator<Item = (&'a str, &'b SendValue)>, 
[src]

Methods from Deref<Target = StructureRef>

pub unsafe fn as_ptr(&self) -> *const GstStructure[src]

pub unsafe fn as_mut_ptr(&self) -> *mut GstStructure[src]

pub fn get<'structure, 'name, T: FromValueOptional<'structure>>(
    &'structure self,
    name: &'name str
) -> Result<Option<T>, GetError<'name>>
[src]

pub fn get_optional<'structure, 'name, T: FromValueOptional<'structure>>(
    &'structure self,
    name: &'name str
) -> Result<Option<T>, GetError<'name>>
[src]

pub fn get_some<'structure, 'name, T: FromValue<'structure>>(
    &'structure self,
    name: &'name str
) -> Result<T, GetError<'name>>
[src]

pub fn get_value<'structure, 'name>(
    &'structure self,
    name: &'name str
) -> Result<&SendValue, GetError<'name>>
[src]

pub fn set<T: ToSendValue>(&mut self, name: &str, value: &T)[src]

pub fn set_value(&mut self, name: &str, value: SendValue)[src]

pub fn get_name<'a>(&self) -> &'a str[src]

pub fn set_name(&mut self, name: &str)[src]

pub fn has_field(&self, field: &str) -> bool[src]

pub fn has_field_with_type(&self, field: &str, type_: Type) -> bool[src]

pub fn remove_field(&mut self, field: &str)[src]

pub fn remove_fields(&mut self, fields: &[&str])[src]

pub fn remove_all_fields(&mut self)[src]

pub fn fields(&self) -> FieldIterator[src]

pub fn iter(&self) -> Iter[src]

pub fn get_nth_field_name<'a>(&self, idx: u32) -> Option<&'a str>[src]

pub fn n_fields(&self) -> u32[src]

pub fn can_intersect(&self, other: &StructureRef) -> bool[src]

pub fn intersect(&self, other: &StructureRef) -> Option<Structure>[src]

pub fn is_subset(&self, superset: &StructureRef) -> bool[src]

pub fn fixate(&mut self)[src]

pub fn fixate_field(&mut self, name: &str) -> bool[src]

pub fn fixate_field_bool(&mut self, name: &str, target: bool) -> bool[src]

pub fn fixate_field_str(&mut self, name: &str, target: &str) -> bool[src]

pub fn fixate_field_nearest_double(&mut self, name: &str, target: f64) -> bool[src]

pub fn fixate_field_nearest_fraction<T: Into<Fraction>>(
    &mut self,
    name: &str,
    target: T
) -> bool
[src]

pub fn fixate_field_nearest_int(&mut self, name: &str, target: i32) -> bool[src]

Trait Implementations

impl AsMut<StructureRef> for Structure[src]

impl AsRef<StructureRef> for Structure[src]

impl Borrow<StructureRef> for Structure[src]

impl BorrowMut<StructureRef> for Structure[src]

impl Clone for Structure[src]

impl Debug for Structure[src]

impl Deref for Structure[src]

type Target = StructureRef

The resulting type after dereferencing.

impl DerefMut for Structure[src]

impl<'de> Deserialize<'de> for Structure[src]

impl Display for Structure[src]

impl Drop for Structure[src]

impl Eq for Structure[src]

impl FromGlibPtrFull<*const GstStructure> for Structure[src]

impl FromGlibPtrFull<*mut GstStructure> for Structure[src]

impl FromGlibPtrNone<*const GstStructure> for Structure[src]

impl FromGlibPtrNone<*mut GstStructure> for Structure[src]

impl FromStr for Structure[src]

type Err = BoolError

The associated error which can be returned from parsing.

impl<'a> FromValueOptional<'a> for Structure[src]

impl GlibPtrDefault for Structure[src]

impl PartialEq<Structure> for Structure[src]

impl PartialEq<StructureRef> for Structure[src]

impl Send for Structure[src]

impl Serialize for Structure[src]

impl SetValue for Structure[src]

impl SetValueOptional for Structure[src]

impl StaticType for Structure[src]

impl Sync for Structure[src]

impl<'a> ToGlibPtr<'a, *const GstStructure> for Structure[src]

type Storage = &'a Self

impl<'a> ToGlibPtr<'a, *mut GstStructure> for Structure[src]

type Storage = &'a Self

impl<'a> ToGlibPtrMut<'a, *mut GstStructure> for Structure[src]

type Storage = &'a mut Self

Auto Trait Implementations

impl RefUnwindSafe for Structure

impl Unpin for Structure

impl UnwindSafe for Structure

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *const GList> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *const GPtrArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GList> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GPtrArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToSendValue for T where
    T: ToValue + SetValue + Send + ?Sized
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> ToValue for T where
    T: SetValue + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.