Fixed several GES examples, but confused with GESAsset and GESClip

Thibault Saunier tsaunier at gnome.org
Fri Oct 30 03:14:48 PDT 2015


Hello Guofeng,

> test1.c worked well, it use:
>    GESAsset *src_asset;
>    ...
>    src_asset = ges_asset_request (GES_TYPE_TEST_CLIP, NULL, NULL);
> to instantiate a GESTestClip.
>
> but test2.c and simple1.c does not work. They all use
>    GESUriClip *src = ges_uri_clip_new (uri);

I just fixed that with:

    commit 5f81e64b596d3234406df75ccfde11009c422729
    Author: Thibault Saunier <tsaunier at gnome.org>
    Date:   Fri Oct 30 10:52:12 2015 +0100

            uri-clip: Make sure to instantiate an asset to back GESUriClip-s


> I tried to use
>    GESAsset *src = ges_asset_request (GES_TYPE_URI_CLIP, uri, NULL);
> but not succeeded.
>
> The comment for ges_asset_request() describes that I should use
> ges_uri_clip_asset_request_sync, so I made the following change:
>    GESAsset *src = ges_uri_clip_asset_request_sync( uri, &error) ;
>    ...
>    ges_layer_add_asset (layer, src, offset, 0, 5 * GST_SECOND,
> GES_TRACK_TYPE_AUDIO);
> Now test2.c and simple1.c worked well.

That is the correct way of doing it (GESUriClipAsset is a special case as
we concider in most cases it should be created async), we still let the user
create it synchronously with that helper.

> What make me confused is
> (1) ges_uri_clip_asset_request_sync() also use
>    ges_asset_request (GES_TYPE_URI_CLIP, uri, &lerror)
> to instantiate the GESAsset, but it works (mine not), why?

ges_uri_clip_asset_request_sync does ges_asset_request to check if the
media file
has already been discovered in which case it just uses the cached asset,
in the case it is not it will go through a particular mechanism of synchronous
discovery.

> (2) The GESTAsset and GESClip has one to one relationship, that is, as
> documented that assets will represent for example a GESUriClips,
> GESBaseEffect etc.
> each clip has a asset associated with it. But GESTestClip has no
> GESTestClipAsset (something like it) defined, how could an asset existed for
> GESTestClip? or testsrc does not need a resource to represent it, so it does
> not need a corresponding asset? if so, for appsrc, I could only define a
> clip for it and it will work with the GES framework?

GESTestClip does not need a specialized asset to represent it, so in
that case we
just use the standard GESAsset (not a subclass of it).

Hoping that answers your questions.

Regards,

Thibault


More information about the gstreamer-devel mailing list