We can't rely on that, in particular now that it does not actually
add its children all the time but only when it is needed (and that
it has an internal bin where actual things happen).
When users (can be formatters) set timeline element names in the
default 'namespace' we need to update our counter to avoid setting
twice the same name on TimelineElements so afterward there is no
problem adding them in the GESTimeline
+ add a testcase to check that new code and fix leaks on the
existing testcases.
+ Sensibly enhance debugs
The priority handling of clip is now handled by GESLayer itself, and
handling clip as a ordered list should be implemented in GESLayer itself
too, this way the user can decide to switch mode at any time instead of
And fix all the tests as we need to wait for the project to be loaded
to check the reference count of the timeline (as we keep a ref on the
timeline in project to later emit "loaded" on idle).
If you want a custom clip then you have to subclass GESClip,
This class was pre historicall and only used for testing purposes, we
have GESTestClip for that.
https://bugzilla.gnome.org/show_bug.cgi?id=706855
The idea is that we should first play until the time we reach the first
position, at that point we PAUSE the pipeline, then, afterward do the
seeks as asked.
If we get the position before the ASYNC DONE, just accept it.
Add a new test that creates a given number of layers. Each layer has the same
assets / clips shifted by a different amount in the timeline. Alpha and volume
properties are different for each layer. This test is similar to the mixer
example in:
http://gist.github.com/MathieuDuponchelle/5736992#file-mixit-py
We should be able to add more clips to each layer, but this example test only
tests mixing 1 clip across 4 layers.
Conflicts:
tests/check/ges/integration.c
This second set of seeking tests performs the seeks in a PAUSED
pipeline. After all seeks are successful, the pipeline is resumed so that the
test does not timeout.
Conflicts:
tests/check/ges/integration.c
- Use g_list_remove_link so that ordering of seeks is not mandatory
- use g_slice allocator for SeekInfo structs
- Fix leak in freeing seek list
- Check for NULL seeks at end of test, otherwise fail and free failed seeks
A Seekinfo structure consists of 2 fields:
- position: the position to seek to
- seeking_position: the position to perform the seek from
Seeks can be appended to a global list e.g. from code:
seeks = g_list_append (seeks, new_seek_info (0.2 * GST_SECOND, 0.6 * GST_SECOND));
seeks = g_list_append (seeks, new_seek_info (1.0 * GST_SECOND, 1.2 * GST_SECOND));
seeks = g_list_append (seeks, new_seek_info (1.5 * GST_SECOND, 1.8 * GST_SECOND));
The get_position callback checks the current position and attempts to perform
the corresponding seek with gst_element_seek_simple
Those are test with real media files, they are run separetely from other
unit tests using the make check-integration command (can be done from
the toplevel directory)
Currently we can end up overflowing the start of others child of our
parent, avoid that making sure we can set our start to what was
requested by the user before actually doing it
+ Add a test
Check if an object rthat has already been freed has been destroyed is not safe.
Add a helper function that uses weak reference to check that objects that are expected
to be destroyed when unrefing an object are actually destroyed.
This exact same method will be needed in GESGroup, so we should have the method
in the common parent class.
API:
- ges_clip_edit
+ ges_container_edit
+ GESContainer->edit vmethod
The GNL API changed to go from a model where user could
enable/disable updates in the composition, which leaded to races
in many places, to a model where any positioning change in the
composition is not directly done but 'cached' and then the user
has to commit those changes so they become effective in the media
processing stack.
The new API in GES is pretty similare and is basically copy
pasting this new design.
We still need to see if in some context it would make sense to add
a mode where we would commit any changes ourself at the end of our
operation for basic use cases.
Removed APIs:
ges_timeline_enable_update
ges_timeline_is_updating
ges_track_enable_update
ges_track_is_updating
New APIs:
ges_track_commit
ges_timeline_commit
+ Fix tests (starting using GESTestClip instead of GESCustomClip)
Now the height is not only growing, but can also go down, as the value
is just simply computed
API:
GESContainer::compute_height virtual method
+ Fix tests (we still need a round of modernisation, making use of
assets where it makes sense)
There is no reason to use those method outside of GES, so remove them,
cleaning the API and making it easier for users.
Removed APIs:
-----------
* ges_clip_create_track_element
* ges_clip_create_track_elements