Struct gstreamer_editing_services::Asset[][src]

pub struct Asset(_);

A crate::Asset in the GStreamer Editing Services represents a resources that can be used. In particular, any class that implements the crate::Extractable interface may have some associated assets with a corresponding [crate::Asset:extractable-type], from which its objects can be extracted using crate::prelude::AssetExt::extract(). Some examples would be crate::Clip, [crate::Formatter] and crate::TrackElement.

All assets that are created within GES are stored in a cache; one per each [crate::Asset:id] and [crate::Asset:extractable-type] pair. These assets can be fetched, and initialized if they do not yet exist in the cache, using Self::request().

GESAsset *effect_asset;
GESEffect *effect;

// You create an asset for an effect
effect_asset = ges_asset_request (GES_TYPE_EFFECT, "agingtv", NULL);

// And now you can extract an instance of GESEffect from that asset
effect = GES_EFFECT (ges_asset_extract (effect_asset));

The advantage of using assets, rather than simply creating the object directly, is that the currently loaded resources can be listed with ges_list_assets() and displayed to an end user. For example, to show which media files have been loaded, and a standard list of effects. In fact, the GES library already creates assets for crate::TransitionClip and [crate::Formatter], which you can use to list all the available transition types and supported formats.

The other advantage is that crate::Asset implements [crate::MetaContainer], so metadata can be set on the asset, with some subclasses automatically creating this metadata on initiation.

For example, to display information about the supported formats, you could do the following:

   GList *formatter_assets, *tmp;

   //  List all  the transitions
   formatter_assets = ges_list_assets (GES_TYPE_FORMATTER);

   // Print some infos about the formatter GESAsset
   for (tmp = formatter_assets; tmp; tmp = tmp->next) {
     g_print ("Name of the formatter: %s, file extension it produces: %s",
       ges_meta_container_get_string (
         GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_NAME),
       ges_meta_container_get_string (
         GES_META_CONTAINER (tmp->data), GES_META_FORMATTER_EXTENSION));
   }

   g_list_free (transition_assets);

ID

Each asset is uniquely defined in the cache by its [crate::Asset:extractable-type] and [crate::Asset:id]. Depending on the [crate::Asset:extractable-type], the [crate::Asset:id] can be used to parametrise the creation of the object upon extraction. By default, a class that implements crate::Extractable will only have a single associated asset, with an [crate::Asset:id] set to the type name of its objects. However, this is overwritten by some implementations, which allow a class to have multiple associated assets. For example, for crate::TransitionClip the [crate::Asset:id] will be a nickname of the [crate::TransitionClip:vtype]. You should check the documentation for each extractable type to see if they differ from the default.

Moreover, each [crate::Asset:extractable-type] may also associate itself with a specific asset subclass. In such cases, when their asset is requested, an asset of this subclass will be returned instead.

Managing

You can use a crate::Project to easily manage the assets of a crate::Timeline.

Proxies

Some assets can (temporarily) act as the [crate::Asset:proxy] of another asset. When the original asset is requested from the cache, the proxy will be returned in its place. This can be useful if, say, you want to substitute a crate::UriClipAsset corresponding to a high resolution media file with the asset of a lower resolution stand in.

An asset may even have several proxies, the first of which will act as its default and be returned on requests, but the others will be ordered to take its place once it is removed. You can add a proxy to an asset, or set its default, using crate::prelude::AssetExt::set_proxy(), and you can remove them with crate::prelude::AssetExt::unproxy().

Implements

crate::prelude::AssetExt, glib::object::ObjectExt

Implementations

impl Asset[src]

pub fn needs_reload(extractable_type: Type, id: Option<&str>) -> bool[src]

Indicate that an existing crate::Asset in the cache should be reloaded upon the next request. This can be used when some condition has changed, which may require that an existing asset should be updated. For example, if an external resource has changed or now become available.

Note, the asset is not immediately changed, but will only actually reload on the next call to Self::request() or Self::request_async().

extractable_type

The [crate::Asset:extractable-type] of the asset that needs reloading

id

The [crate::Asset:id] of the asset asset that needs reloading

Returns

true if the specified asset exists in the cache and could be marked for reloading.

pub fn request(
    extractable_type: Type,
    id: Option<&str>
) -> Result<Option<Asset>, Error>
[src]

Returns an asset with the given properties. If such an asset already exists in the cache (it has been previously created in GES), then a reference to the existing asset is returned. Otherwise, a newly created asset is returned, and also added to the cache.

If the requested asset has been loaded with an error, then error is set, if given, and None will be returned instead.

Note that the given id may not be exactly the [crate::Asset:id] that is set on the returned asset. For instance, it may be adjusted into a standard format. Or, if a crate::Extractable type does not have its extraction parametrised, as is the case by default, then the given id may be ignored entirely and the [crate::Asset:id] set to some standard, in which case a None id can be given.

Similarly, the given extractable_type may not be exactly the [crate::Asset:extractable-type] that is set on the returned asset. Instead, the actual extractable type may correspond to a subclass of the given extractable_type, depending on the given id.

Moreover, depending on the given extractable_type, the returned asset may belong to a subclass of crate::Asset.

Finally, if the requested asset has a [crate::Asset:proxy], then the proxy that is found at the end of the chain of proxies is returned (a proxy’s proxy will take its place, and so on, unless it has no proxy).

Some asset subclasses only support asynchronous construction of its assets, such as crate::UriClip. For such assets this method will fail, and you should use Self::request_async() instead. In the case of crate::UriClip, you can use crate::UriClipAsset::request_sync() if you only want to wait for the request to finish.

extractable_type

The [crate::Asset:extractable-type] of the asset

id

The [crate::Asset:id] of the asset

Returns

A reference to the requested asset, or None if an error occurred.

pub fn request_async<P: IsA<Cancellable>, Q: FnOnce(Result<Asset, Error>) + Send + 'static>(
    extractable_type: Type,
    id: Option<&str>,
    cancellable: Option<&P>,
    callback: Q
)
[src]

Requests an asset with the given properties asynchronously (see Self::request()). When the asset has been initialized or fetched from the cache, the given callback function will be called. The asset can then be retrieved in the callback using the [Self::request_finish()] method on the given crate::gio::AsyncResult.

Note that the source object passed to the callback will be the crate::Asset corresponding to the request, but it may not have loaded correctly and therefore can not be used as is. Instead, [Self::request_finish()] should be used to fetch a usable asset, or indicate that an error occurred in the asset’s creation.

Note that the callback will be called in the crate::glib::MainLoop running under the same crate::glib::MainContext that ges_init() was called in. So, if you wish the callback to be invoked outside the default crate::glib::MainContext, you can call crate::glib::MainContext::push_thread_default() in a new thread before calling ges_init().

Example of an asynchronous asset request:

// The request callback
static void
asset_loaded_cb (GESAsset * source, GAsyncResult * res, gpointer user_data)
{
  GESAsset *asset;
  GError *error = NULL;

  asset = ges_asset_request_finish (res, &error);
  if (asset) {
   g_print ("The file: %s is usable as a GESUriClip",
       ges_asset_get_id (asset));
  } else {
   g_print ("The file: %s is *not* usable as a GESUriClip because: %s",
       ges_asset_get_id (source), error->message);
  }

  gst_object_unref (asset);
}

// The request:
ges_asset_request_async (GES_TYPE_URI_CLIP, some_uri, NULL,
   (GAsyncReadyCallback) asset_loaded_cb, user_data);

extractable_type

The [crate::Asset:extractable-type] of the asset

id

The [crate::Asset:id] of the asset

cancellable

An object to allow cancellation of the asset request, or None to ignore

callback

A function to call when the initialization is finished

user_data

Data to be passed to callback

pub fn request_async_future(
    extractable_type: Type,
    id: Option<&str>
) -> Pin<Box_<dyn Future<Output = Result<Asset, Error>> + 'static>>
[src]

Trait Implementations

impl Clone for Asset[src]

fn clone(&self) -> Asset[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for Asset[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl Hash for Asset[src]

fn hash<__H: Hasher>(&self, state: &mut __H)[src]

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl Ord for Asset[src]

fn cmp(&self, other: &Asset) -> Ordering[src]

This method returns an Ordering between self and other. Read more

#[must_use]
fn max(self, other: Self) -> Self
1.21.0[src]

Compares and returns the maximum of two values. Read more

#[must_use]
fn min(self, other: Self) -> Self
1.21.0[src]

Compares and returns the minimum of two values. Read more

#[must_use]
fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]

Restrict a value to a certain interval. Read more

impl ParentClassIs for Asset[src]

type Parent = Object

impl<T: ObjectType> PartialEq<T> for Asset[src]

fn eq(&self, other: &T) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl<T: ObjectType> PartialOrd<T> for Asset[src]

fn partial_cmp(&self, other: &T) -> Option<Ordering>[src]

This method returns an ordering between self and other values if one exists. Read more

#[must_use]
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than (for self and other) and is used by the < operator. Read more

#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

#[must_use]
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl StaticType for Asset[src]

fn static_type() -> Type[src]

Returns the type identifier of Self.

impl Eq for Asset[src]

impl IsA<Asset> for Project[src]

impl IsA<Asset> for UriClipAsset[src]

impl IsA<Asset> for UriSourceAsset[src]

impl StructuralEq for Asset[src]

Auto Trait Implementations

impl RefUnwindSafe for Asset

impl !Send for Asset

impl !Sync for Asset

impl Unpin for Asset

impl UnwindSafe for Asset

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> Cast for T where
    T: ObjectType
[src]

fn upcast<T>(self) -> T where
    Self: IsA<T>,
    T: ObjectType
[src]

Upcasts an object to a superclass or interface T. Read more

fn upcast_ref<T>(&self) -> &T where
    Self: IsA<T>,
    T: ObjectType
[src]

Upcasts an object to a reference of its superclass or interface T. Read more

fn downcast<T>(self) -> Result<T, Self> where
    Self: CanDowncast<T>,
    T: ObjectType
[src]

Tries to downcast to a subclass or interface implementor T. Read more

fn downcast_ref<T>(&self) -> Option<&T> where
    Self: CanDowncast<T>,
    T: ObjectType
[src]

Tries to downcast to a reference of its subclass or interface implementor T. Read more

fn dynamic_cast<T>(self) -> Result<T, Self> where
    T: ObjectType
[src]

Tries to cast to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more

fn dynamic_cast_ref<T>(&self) -> Option<&T> where
    T: ObjectType
[src]

Tries to cast to reference to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more

unsafe fn unsafe_cast<T>(self) -> T where
    T: ObjectType
[src]

Casts to T unconditionally. Read more

unsafe fn unsafe_cast_ref<T>(&self) -> &T where
    T: ObjectType
[src]

Casts to &T unconditionally. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<O> GObjectExtManualGst for O where
    O: IsA<Object>, 
[src]

pub fn set_property_from_str(&self, name: &str, value: &str)[src]

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

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ObjectExt for T where
    T: ObjectType
[src]

pub fn is<U>(&self) -> bool where
    U: StaticType
[src]

Returns true if the object is an instance of (can be cast to) T.

pub fn type_(&self) -> Type[src]

pub fn object_class(&self) -> &Class<Object>[src]

pub fn class(&self) -> &Class<T> where
    T: IsClass
[src]

pub fn class_of<U>(&self) -> Option<&Class<U>> where
    U: IsClass
[src]

pub fn interface<U>(&self) -> Option<InterfaceRef<'_, U>> where
    U: IsInterface
[src]

pub fn set_properties(
    &self,
    property_values: &[(&str, &dyn ToValue)]
) -> Result<(), BoolError>
[src]

pub fn set_properties_from_value(
    &self,
    property_values: &[(&str, Value)]
) -> Result<(), BoolError>
[src]

pub fn set_property<'a, N, V>(
    &self,
    property_name: N,
    value: V
) -> Result<(), BoolError> where
    V: ToValue,
    N: Into<&'a str>, 
[src]

pub fn set_property_from_value<'a, N>(
    &self,
    property_name: N,
    value: &Value
) -> Result<(), BoolError> where
    N: Into<&'a str>, 
[src]

pub fn property<'a, N>(&self, property_name: N) -> Result<Value, BoolError> where
    N: Into<&'a str>, 
[src]

pub unsafe fn set_qdata<QD>(&self, key: Quark, value: QD) where
    QD: 'static, 
[src]

Safety Read more

pub unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>> where
    QD: 'static, 
[src]

Safety Read more

pub unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD> where
    QD: 'static, 
[src]

Safety Read more

pub unsafe fn set_data<QD>(&self, key: &str, value: QD) where
    QD: 'static, 
[src]

Safety Read more

pub unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>> where
    QD: 'static, 
[src]

Safety Read more

pub unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD> where
    QD: 'static, 
[src]

Safety Read more

pub fn block_signal(&self, handler_id: &SignalHandlerId)[src]

pub fn unblock_signal(&self, handler_id: &SignalHandlerId)[src]

pub fn stop_signal_emission(&self, signal_name: &str)[src]

pub fn disconnect(&self, handler_id: SignalHandlerId)[src]

pub fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId where
    F: 'static + Fn(&T, &ParamSpec) + Send + Sync
[src]

pub fn connect_notify_local<F>(
    &self,
    name: Option<&str>,
    f: F
) -> SignalHandlerId where
    F: 'static + Fn(&T, &ParamSpec), 
[src]

pub unsafe fn connect_notify_unsafe<F>(
    &self,
    name: Option<&str>,
    f: F
) -> SignalHandlerId where
    F: Fn(&T, &ParamSpec), 
[src]

pub fn notify<'a, N>(&self, property_name: N) where
    N: Into<&'a str>, 
[src]

pub fn notify_by_pspec(&self, pspec: &ParamSpec)[src]

pub fn has_property<'a, N>(&self, property_name: N, type_: Option<Type>) -> bool where
    N: Into<&'a str>, 
[src]

pub fn property_type<'a, N>(&self, property_name: N) -> Option<Type> where
    N: Into<&'a str>, 
[src]

pub fn find_property<'a, N>(&self, property_name: N) -> Option<ParamSpec> where
    N: Into<&'a str>, 
[src]

pub fn list_properties(&self) -> Vec<ParamSpec, Global>[src]

pub fn connect<'a, N, F>(
    &self,
    signal_name: N,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,
    N: Into<&'a str>, 
[src]

pub fn connect_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static, 
[src]

Same as connect but takes a SignalId instead of a signal name.

pub fn connect_local<'a, N, F>(
    &self,
    signal_name: N,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value> + 'static,
    N: Into<&'a str>, 
[src]

pub fn connect_local_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value> + 'static, 
[src]

Same as connect_local but takes a SignalId instead of a signal name.

pub unsafe fn connect_unsafe<'a, N, F>(
    &self,
    signal_name: N,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value>,
    N: Into<&'a str>, 
[src]

pub unsafe fn connect_unsafe_id<F>(
    &self,
    signal_id: SignalId,
    details: Option<Quark>,
    after: bool,
    callback: F
) -> Result<SignalHandlerId, BoolError> where
    F: Fn(&[Value]) -> Option<Value>, 
[src]

Same as connect_unsafe but takes a SignalId instead of a signal name.

pub fn emit(
    &self,
    signal_id: SignalId,
    args: &[&dyn ToValue]
) -> Result<Option<Value>, BoolError>
[src]

Emit signal by signal id.

pub fn emit_with_details(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[&dyn ToValue]
) -> Result<Option<Value>, BoolError>
[src]

Emit signal with details by signal id.

pub fn emit_by_name<'a, N>(
    &self,
    signal_name: N,
    args: &[&dyn ToValue]
) -> Result<Option<Value>, BoolError> where
    N: Into<&'a str>, 
[src]

Emit signal by it’s name.

pub fn downgrade(&self) -> WeakRef<T>[src]

pub fn bind_property<'a, O, N, M>(
    &'a self,
    source_property: N,
    target: &'a O,
    target_property: M
) -> BindingBuilder<'a> where
    O: ObjectType,
    N: Into<&'a str>,
    M: Into<&'a str>, 
[src]

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

pub fn emit_with_values(
    &self,
    signal_id: SignalId,
    args: &[Value]
) -> Result<Option<Value>, BoolError>
[src]

Same as emit but takes Value for the arguments.

pub fn emit_by_name_with_values<'a, N>(
    &self,
    signal_name: N,
    args: &[Value]
) -> Result<Option<Value>, BoolError> where
    N: Into<&'a str>, 
[src]

Same as emit_by_name but takes Value for the arguments.

pub fn emit_with_details_and_values(
    &self,
    signal_id: SignalId,
    details: Quark,
    args: &[Value]
) -> Result<Option<Value>, BoolError>
[src]

Same as emit_with_details but takes Value for the arguments.

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

pub fn to_send_value(&self) -> SendValue[src]

Returns a SendValue clone of self.

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<Super, Sub> CanDowncast<Sub> for Super where
    Sub: IsA<Super>,
    Super: IsA<Super>, 
[src]

impl<'a, T, C> FromValueOptional<'a> for T where
    C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError>,
    T: FromValue<'a, Checker = C>, 
[src]