Commit graph

767 commits

Author SHA1 Message Date
Thibault Saunier
e1f6b9fefb validate: Start also testing jpeg encoding 2016-07-29 15:57:05 -04:00
Thibault Saunier
fff6a73735 timeline: Ripple from start of clips and not the end.
Fixes https://phabricator.freedesktop.org/T7503
2016-07-28 19:37:25 -04:00
Thibault Saunier
e160264c7f tests:validate: Better choose tested rendering formats 2016-07-15 08:59:01 -04:00
Thibault Saunier
156eaecb28 tests: Make sure to run python tests against the build in tree 2016-06-20 21:29:44 -04:00
Thibault Saunier
346f887553 ges: Don't remove track elements from clips when removing from layer
And reuse the same previously created element when adding the clip
back to a layer, avoiding losing all setting done on clip children
in that situation

This is a behaviour change but previous behaviour was actually totally
unexpected and people working around that weird behaviour will moste
probably not care about that change

Differential Revision: https://phabricator.freedesktop.org/D1094
2016-06-20 14:49:17 -04:00
Thibault Saunier
c9c4a60de2 title_: Do not forget to link up child_added/removed vmethod
Otherwise effect handling is broken

Differential Revision: https://phabricator.freedesktop.org/D1099
2016-06-20 14:21:12 -04:00
Thibault Saunier
716c0dbe8d auto-transitions: Do not remove auto transitions when moving neighboor from the same group
Differential Revision: https://phabricator.freedesktop.org/D1097
2016-06-20 14:19:53 -04:00
Thibault Saunier
7d34e33ac4 title: Do not concider inpoints
It does not make sense for titles
Handle element with no inpoint handling in the timeline

Fixes https://phabricator.freedesktop.org/T7319
2016-04-22 16:15:33 -03:00
Sebastian Dröge
9557abaeda tests: Rename positionner to positioner in the tests too 2016-04-13 12:32:53 +03:00
Sebastian Dröge
c222da6862 tests: Add some things to .gitignore 2016-04-04 10:53:13 +03:00
Sjors Gielen
84f7f04a64 Handle changing playback rate
Before this patch, NLE and GES did not support NleOperations (respectively
GESEffects) that changed the speed/tempo/rate at which the source plays. For
example, the 'pitch' element can make audio play faster or slower. In GES 1.5.90
and before, an NleOperation containing the pitch element to change the rate (or
tempo) would cause a pipeline state change to PAUSED after that stack; that has
been fixed in 1.5.91 (see #755012 [0]). But even then, in 1.5.91 and later,
NleComposition would send segment events to its NleSources assuming that one
source second is equal to one pipeline second. The resulting early EOS event
(in the case of a source rate higher than 1.0) would cause it to switch stacks
too early, causing confusion in the timeline and spectacularly messed up
output.

This patch fixes that by searching for rate-changing elements in
GESTrackElements such as GESEffects. If such rate-changing elements are found,
their final effect on the playing rate is stored in the corresponding NleObject
as the 'media duration factor', named like this because the 'media duration',
or source duration, of an NleObject can be computed by multiplying the duration
with the media duration factor of that object and its parents (this is called
the 'recursive media duration factor'). For example, a 4-second NleSource with
an NleOperation with a media duration factor of 2.0 will have an 8-second media
duration, which means that for playing 4 seconds in the pipeline, the seek
event sent to it must span 8 seconds of media. (So, the 'duration' of an
NleObject or GES object always refers to its duration in the timeline, not the
media duration.)

To summarize:

* Rate-changing elements are registered in the GESEffectClass (pitch::tempo and
  pitch::rate are registered by default);
* GESTimelineElement is responsible for detecting rate-changing elements and
  computing the media_duration_factor;
* GESTrackElement is responsible for storing the media_duration_factor in
  NleObject;
* NleComposition is responsible for the recursive_media_duration_factor;
* The latter property finally fixes media time computations in NleObject.

NLE and GES tests are included.

[0] https://bugzilla.gnome.org/show_bug.cgi?id=755012

Differential Revision: https://phabricator.freedesktop.org/D276
2016-02-26 19:54:40 +01:00
Thibault Saunier
c4fd9cd2b1 Fix and test priority of TrackElement after splitting
And make sure we properly handle transitions in that case
2016-02-09 12:38:29 +01:00
Thiago Santos
c0dbfeb433 tests: extend the AM_TESTS_ENVIRONMENT from check.mak
To get the CK_DEFAULT_TIMEOUT defined for all tests

https://bugzilla.gnome.org/show_bug.cgi?id=761472
2016-02-05 20:02:40 -03:00
Thibault Saunier
8c672f8366 effect: Determine the effect type as soon as possible
Making it possible to create the nleobject right at the creation
of the element.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D738
2016-02-04 15:23:26 +01:00
Thibault Saunier
3ffdad6db8 title-clip: Return default GESTitleSource value if no child set yet
In get_property we should return the default values if
we have not created any GESTitleSource yet
(instead of segfaulting).

And fix GESTitleSource default values!

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D737
2016-02-04 15:23:24 +01:00
Thibault Saunier
2fae9ee50d group: Make deep copying actually copy deep
Allowing pasting groups paste exactly what had been copied

And not the new version of the contained objects

This technically breaks the C API but this is a new API and I believe
and hope nobody is using it right now.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D616
2016-01-17 09:23:35 +01:00
Thibault Saunier
1c875961fc tests_: Add a simple python copy/paste test for groups
Integrating python tests in the build system

And cleanup configure.ac

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D601
2016-01-17 09:23:32 +01:00
Thibault Saunier
e1fcd42a19 examples: Move all examples to the root dir and create foldersdir per language
+ Add some markdown files to link between languages
+ Add a simple 'play timeline with one clip" example in C and python
2015-12-21 15:35:17 +01:00
Thibault Saunier
fa512ecdba Implement asset proxying support
API:
  ges_asset_set_proxy
  ges_asset_get_proxy
  ges_asset_list_proxies
  ges_asset_get_proxy_target

Differential Revision: https://phabricator.freedesktop.org/D504
2015-12-10 14:48:02 +01:00
Thibault Saunier
5bcb7be179 tests: Properly setup GST_PLUGIN_PATH in test environement 2015-11-21 00:24:33 +01:00
Vineeth TM
fd29e28c71 editing-services: Fix memory leaks when context parse fails
When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.

And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.

https://bugzilla.gnome.org/show_bug.cgi?id=753864
2015-09-30 12:16:15 +02:00
Thibault Saunier
844ce69650 tests: Do not use gst-structured-interface in the tests
It breaks $ make distcheck
2015-07-23 12:28:14 +02:00
Thibault Saunier
7be28b29b2 asset: Port use of deprecated GSimpleAsyncResult to GTask 2015-07-06 10:32:32 +02:00
Thibault Saunier
58fb9a6720 track-element: Fix splitting bindings and add unit tests 2015-07-03 14:06:54 +02:00
Thibault Saunier
d23e43ae1a timeline: Disable movement that lead to 2 transition at a position
We should never let 3 objects to overlap at a same position, for that
we introduce a "rollback" feature and whenever such an editing happens,
we rollback object position to whatever it was before the move.
2015-07-03 14:06:54 +02:00
Thibault Saunier
a0ee7e1f44 timeline: Never change output media time when trimming start
+ Fix testsuite

https://bugzilla.gnome.org/show_bug.cgi?id=638802
2015-07-03 09:31:07 +02:00
Thibault Saunier
53defaab7a track-element: Return right value when editing
We used to always return TRUE which was wrong

+ Fix testsuite and remove randomness from the tests
2015-07-03 09:30:50 +02:00
Thibault Saunier
55f0601211 nle: Port tests to the "commit" action signals
Now that nle_object_commit symbol is hidden, we can't use it
in the tests.
2015-06-25 11:03:12 +02:00
Thibault Saunier
c70a654dd6 ges: Handle trimming auto transitions
Meaning trimming neighbors.

+ And add a test
2015-06-01 10:24:11 +02:00
Thibault Saunier
241e809a81 ges: Enhance xges format versioning
Summary:
Handle the fact that some new features can be added and that means
generated files will not be fully understandable by older versions of
the formatter.

Make sure that we set the format version to 0.2 when we serialize the
GstEncodingProfile.enabled property.

Add some tests around that.

+ Fix a minor bug in the test-utils
+ Add a meta on the projects to tell in what format version a project
  has been serialized/parsed back

API:
  GES_META_FORMAT_VERSION

Depends on D178

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D184
2015-05-18 21:27:48 +02:00
Mathieu Duponchelle
506662e2dc nleobject: It is wrong to update object->stop in set_property.
Summary: It must only be done when the object is commited.
We can do that in constructed though, as the changes will
anyway be commited when the object is added to a composition.

Also update the tests, as we set properties spearately then
check the stop, we can commit the source at its creation without
removing meaning from the tests.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D84
2015-04-09 15:40:32 +02:00
Edward Hervey
6753ad5bd1 tests: Use AM_TESTS_ENVIRONMENT
Needed by the new automake test runner
2015-04-08 17:05:19 +02:00
Mathieu Duponchelle
4a519bcf5c ges-launch: Better document options.
+ Sort them by topic
+ remove --sample-paths and --sample-paths-recurse.

http://phabricator.freedesktop.org/D58
2015-03-25 19:46:59 +01:00
Thibault Saunier
42477a5ec3 ges: Move the notion of children properties to GESTimelineElement
Summary:
Deprecate the old GESTrackElement children property handling API.

New APIs:
  * ges_timeline_element_list_children_properties
  * ges_timeline_element_lookup_child
  * ges_timeline_element_get_child_property_by_pspec
  * ges_timeline_element_get_child_property_valist
  * ges_timeline_element_get_child_properties
  * ges_timeline_element_set_child_property_valist
  * ges_timeline_element_set_child_property_by_pspec
  * ges_timeline_element_set_child_properties
  * ges_timeline_element_set_child_property
  * ges_timeline_element_get_child_property
  * ges_timeline_element_add_child_property
  * ges_timeline_element_remove_child_property

Deprecated APIs:
  * ges_track_element_list_children_properties
  * ges_track_element_lookup_child
  * ges_track_element_get_child_property_by_pspec
  * ges_track_element_get_child_property_valist
  * ges_track_element_get_child_properties
  * ges_track_element_set_child_property_valist
  * ges_track_element_set_child_property_by_pspec
  * ges_track_element_set_child_properties
  * ges_track_element_set_child_property
  * ges_track_element_get_child_property
  * ges_track_element_add_child_property

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D40
2015-03-18 20:36:39 +01:00
Thibault Saunier
f470222f3d Revert "ges: Move the notion of children properties to GESTimelineElement"
I got some trouble with

  arc land

and I wanted to push the 3 commit coming after this revert as 3
different commits but they ended up being all squash into one single
commit, which is clearly not cool for later bisecting and blaming.
Reverting that commit and re pushing those 3 commits as they were
supposed to be.

This reverts commit 9fe15ef435.
2015-03-18 20:33:48 +01:00
Thibault Saunier
9fe15ef435 ges: Move the notion of children properties to GESTimelineElement
Summary:
Deprecate the old GESTrackElement children property handling API.

New APIs:
  * ges_timeline_element_list_children_properties
  * ges_timeline_element_lookup_child
  * ges_timeline_element_get_child_property_by_pspec
  * ges_timeline_element_get_child_property_valist
  * ges_timeline_element_get_child_properties
  * ges_timeline_element_set_child_property_valist
  * ges_timeline_element_set_child_property_by_pspec
  * ges_timeline_element_set_child_properties
  * ges_timeline_element_set_child_property
  * ges_timeline_element_get_child_property
  * ges_timeline_element_add_child_property
  * ges_timeline_element_remove_child_property

Deprecated APIs:
  * ges_track_element_list_children_properties
  * ges_track_element_lookup_child
  * ges_track_element_get_child_property_by_pspec
  * ges_track_element_get_child_property_valist
  * ges_track_element_get_child_properties
  * ges_track_element_set_child_property_valist
  * ges_track_element_set_child_property_by_pspec
  * ges_track_element_set_child_properties
  * ges_track_element_set_child_property
  * ges_track_element_get_child_property
  * ges_track_element_add_child_property

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D40
2015-03-18 20:23:55 +01:00
Luis de Bethencourt
c9089e15b3 examples: check argument is valid 2015-03-03 14:26:55 +00:00
Mathieu Duponchelle
1bfe0b7ef3 Cleanly handle removing the last object in a composition
The strategy here is to seek at the new end of the composition. And in
GES we always add a 1ns long gap at the end of the tracks so that all
track have the exact same duration, and we have black frames when the
timeline is empty
2015-02-03 12:03:33 +01:00
Thibault Saunier
78913931b2 ges: Recompute Group priority when one of its clip.layer change priority
And add a unit test for that case where it was previously failing
2014-12-06 10:34:18 +01:00
Thibault Saunier
b6dbae70c8 validate: Start using the new testsuite based API from GstValidate 2014-12-06 10:34:18 +01:00
Thibault Saunier
18f14de105 tests: Remove integration tests, GstValidate is the way forward! 2014-12-06 10:34:18 +01:00
Thibault Saunier
ff2ccb71ac validate: Handle long tests in the TestManager
+ Minor bug fixes
2014-12-06 10:34:18 +01:00
Mathieu Duponchelle
d109c37343 check/ges/track: add forgotten test file. 2014-12-05 22:19:32 +01:00
Mathieu Duponchelle
f85c463b93 track: [API]: ges_track_update_restriction_caps.
+ And specify default restriction caps for audio tracks.
+ Add ges_track_set_restriction_caps to the sections, it
  was missing.

https://bugzilla.gnome.org/show_bug.cgi?id=740726
2014-12-05 22:12:11 +01:00
Thibault Saunier
fedee39900 tests: Fix make distcheck
Some xges project are not used anymore and some new appeared, clean
that up in the Makefile.am
2014-11-10 17:24:11 +01:00
Thibault Saunier
5665e3abb1 xml-formatter: Serialize groups
They were not serialized until now.

That implies several changes:

* Override GESTimelineElement [start, inpoint, duration] properties in
  GESGroup to ensure that those properties are not serialized as they
  should not be.

* Rename GESBaseXmlContainer->clips field to
  GESBaseXmlContainer->containers as the hashtable now contains Groups

https://bugzilla.gnome.org/show_bug.cgi?id=709148
2014-11-10 16:22:43 +01:00
Thibault Saunier
08af3721bf frameposition: In case sources have the same size as track, follow track size
For example if the size has been serialized in a file, but the user has
not personalized the size, we want that whenever the restriction caps
change the size, the video should take the size of the track
restriction caps.

We know need to keep track of the current positionner.size even if
setting through caps size changes.

https://bugzilla.gnome.org/show_bug.cgi?id=739527
2014-11-10 16:22:42 +01:00
Thibault Saunier
79230eef1f nle: Handle sending SEEK event recursively to our children
Instead of relying on it being implemented in core (as it is currently
not!)
2014-11-10 16:22:40 +01:00
Thibault Saunier
d3d1f85373 tests: Use audiomixer as an audio mixing element
Adder is the past!
2014-11-10 16:22:40 +01:00
Joris Valette
b89ffaea82 tests: project: Add children properties check
Rename test_project_add_keyframes into test_project_add_properties
2014-11-10 16:22:39 +01:00
Thibault Saunier
57eef236b5 tests: Use the new gst_check_objects_destroyed_on_unref function 2014-10-31 11:58:12 +01:00
Thibault Saunier
95223fd46b Start taking advantage of the fact that NLE is in the same three as GES! 2014-10-31 11:58:12 +01:00
Thibault Saunier
11f9c6e108 Cleanup import of GNL and rename gnl to nle for Non Linear Engine
Conflicts:
	ges/ges-track-element.c
	gnl/Makefile.am
	gnl/common

Conflicts:
	ges/ges-internal.h
	ges/ges-track.c
	ges/ges-utils.c
	ges/nle/.gitignore
	ges/nle/gnlmarshal.list
	ges/nle/nle.h
	ges/nle/nlecomposition.c
	ges/nle/nlecomposition.h
	ges/nle/nleghostpad.c
	ges/nle/nleghostpad.h
	ges/nle/nleobject.c
	ges/nle/nleoperation.c
	ges/nle/nleoperation.h
	ges/nle/nlesource.c
	ges/nle/nlesource.h
	ges/nle/nletypes.h
	ges/nle/nleurisource.c
	ges/nle/nleurisource.h
	gnl/Makefile.am
	gnl/gnl.c
	gnl/gnl.h
	gnl/gnl/gnl.h
	gnl/gnl/gnlcomposition.c
	gnl/gnl/gnlcomposition.h
	gnl/gnl/gnlghostpad.c
	gnl/gnl/gnlghostpad.h
	gnl/gnl/gnlmarshal.list
	gnl/gnl/gnlobject.c
	gnl/gnl/gnloperation.c
	gnl/gnl/gnloperation.h
	gnl/gnl/gnlsource.c
	gnl/gnl/gnlsource.h
	gnl/gnl/gnltypes.h
	gnl/gnl/gnlurisource.c
	gnl/gnl/gnlurisource.h
	gnl/gnlcomposition.c
	gnl/gnlcomposition.h
	gnl/gnlghostpad.c
	gnl/gnlghostpad.h
	gnl/gnlmarshal.list
	gnl/gnlobject.c
	gnl/gnlobject.h
	gnl/gnloperation.c
	gnl/gnloperation.h
	gnl/gnlsource.c
	gnl/gnlsource.h
	gnl/gnltypes.h
	gnl/gnlurisource.c
	gnl/gnlurisource.h
	gnl/tests/check/gnl/common.c
	gnl/tests/check/gnl/common.h
	gnl/tests/check/gnl/complex.c
	gnl/tests/check/gnl/gnlcomposition.c
	gnl/tests/check/gnl/gnloperation.c
	gnl/tests/check/gnl/gnlsource.c
	gnl/tests/check/gnl/seek.c
	gnl/tests/check/gnl/simple.c
	tests/check/gnl/common.c
	tests/check/gnl/common.h
	tests/check/gnl/complex.c
	tests/check/gnl/gnlcomposition.c
	tests/check/gnl/gnloperation.c
	tests/check/gnl/gnlsource.c
	tests/check/gnl/seek.c
	tests/check/gnl/simple.c
	tests/check/nle/common.c
	tests/check/nle/common.h
	tests/check/nle/complex.c
	tests/check/nle/nlecomposition.c
	tests/check/nle/nleoperation.c
	tests/check/nle/nlesource.c
	tests/check/nle/seek.c
	tests/check/nle/simple.c
2014-10-31 11:58:12 +01:00
Thibault Saunier
463626ceae composition: Post messages on the bus when it updates itself
And properly set the seqnums of those messages so that the application,
parents have the exact information about what is going on and why.
2014-10-31 11:58:11 +01:00
Thibault Saunier
1d089e8c80 composition: No need for action signal to add and remove objects! 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle
bdb74c5161 source: Remove cruft code to seek sources
We now seek on ready and thus do not need to do magic trying to seek
the source as soon as possible as we now do it even sooner than soon.

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier
c94dfdc688 composition: Start kindergarten task when going to READY.
And stop it when going back to NULL.

Update tests.

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
95a2e3b570 composition: add a new failing test for finalize on commit.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
123a940001 tests:composition: Fix some refcounts
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
d7e7b047d0 tests: Use compositor instead of videomixer
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
ea055c8349 tests: Start fixing operation tests
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
988116fbae tests: Fix composition tests
We can not expect a seek event anymore as we are seeking in READY the elements
themselves

+remove actual sinks

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
27d58a30af composition: Fix toplevel seek event refcounting
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
0e663da588 composition: Teach the composition to seek same stack
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
c05898a169 composition: The ref the user gave us is our, and we give another to the bin when needed
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
d73cab7186 tests: Minor cleanup
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
74c30001f9 composition: Add an internal bin where that contain used children
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Thibault Saunier
d8ca412cd9 composition: Add objects to the pending IO list in a GSource
This way we make sure we do not manipulate our children from another
thread than the dedicated one.
2014-10-31 11:58:08 +01:00
Thibault Saunier
5faa417583 composition: switch to using an action signal to add and remove objects. 2014-10-31 11:58:08 +01:00
Thibault Saunier
3c958af13c Finish fixing tests 2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
ab1d577a10 tests/common: disconnect commited handler 2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
6dc52ca0d2 composition: Actually commit in on our own thread
Avoiding races
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
170ea10cde tests: unref message correctly 2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
c9bbb1d230 Don't be sync silly test 2014-10-31 11:58:07 +01:00
Thibault Saunier
550aaf522d composition: Use a GstPad task to run the update pipeline thread 2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
4cb834fa21 gnl: Add the srcpad directly to GnlObject
Starting from now we will not claim that we support GnlObject that have
several source pads as this is
1- Not true at all;
2- the design of priorities in the GnlComposition tree does not allow that;
3- Not very useful in most of the cases and it complexifies quite a lot the code
   in the composition.

Conflicts:
	configure.ac
	tests/check/Makefile.am
2014-10-31 11:58:07 +01:00
Thibault Saunier
81a0ee66c1 Import GNL from 978332e7c4c3bba1949421d28b492540ab471450 'Release 1.4.0' 2014-10-31 11:58:07 +01:00
Thibault Saunier
a09caa3da2 tests: timelineedition: Init GES once at the beginning.
Avoiding to forget to init in a particular test and failling stupidly
2014-10-31 11:58:07 +01:00
Thibault Saunier
88430d70ea test: backgroundsource: Disable tests that rely on nlecomposition internals
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).
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
d2b8e9d3d9 tests: implement our validate TestManager.
And make sure it installs alongside the other validate apps.

https://bugzilla.gnome.org/show_bug.cgi?id=739093
2014-10-30 23:43:12 +01:00
Tim-Philipp Müller
d106bc24f7 tests: don't leak clips list in basic unit test 2014-10-26 20:24:31 +00:00
Thibault Saunier
03c87dbbc7 clip: Fix the ges_clip_set_position function
And enhance the new test

https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Thibault Saunier
2db5368b9d tests: Check ges_clip_set_position behaviour
+ Minor fix to handle properly the feature when clip is not in any layer

https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Alexandru Băluț
6c717b27c6 clip: Add test for effects priorities
https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Thibault Saunier
1fed9555cf ges:clip: Add a method to look for a list of TrackElement-s
+ Add unit tests to check it works properly.

API:
  + ges_clip_find_track_elements
2014-05-19 12:21:52 +02:00
Thibault Saunier
be23365899 ges: Do not forget to update the count when updating already used name
That could still lead to naming conflicts
2014-05-15 20:47:28 +02:00
Thibault Saunier
19df708207 ges: Avoid GESTimelineElement naming conflicts
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
2014-05-14 22:29:44 +02:00
Thibault Saunier
0b0bbdddd0 scenario: Add a scenario that edits a clip while the pipeline is paused
https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:58:42 +02:00
Thibault Saunier
1adb9a0030 Add a notion of 'name' in GESTimelineElement
https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:27:25 +02:00
Lubosz Sarnecki
46c65aaaaf ges: multifilesrc support
* GESMultiFileSource class
* multifilesrc example
* Support multifile:// urls in uri asset
* start/stop index modification
* Doc

https://bugzilla.gnome.org/show_bug.cgi?id=719373
2014-03-19 18:32:48 +01:00
Thibault Saunier
9b050a54cd container: Properly handle the case where we could not set parent
In this case we had a FIXME about reverting everything that was done,
implement that FIXME!
2014-03-15 20:01:48 +01:00
Thibault Saunier
f921277ac2 Rename TIMELINE_MODE_XXX to GES_PIPELINE_MODE_XXX so it corresponds to reality
First, it was not in any namespace, second the name of the enum is
GESPipelineFlags.
2014-02-17 12:37:57 +01:00
Thibault Saunier
922ce357ba tests:integration: Fix a race about get_position being called before AYNC_DONE happens 2014-02-04 14:17:50 +01:00
Alexandru Băluț
df93acc581 ges-pipeline: Rename add_timeline to set_timeline
API BREAKAGE:
        - ges_pipeline_add_timeline
        + ges_pipeline_set_timeline
2014-02-04 14:17:47 +01:00
Thibault Saunier
94dbf20400 ges-asset: Do not forget to give a ref to the registry
+ Add test in the testsuite
+ Fix broken tests

https://bugzilla.gnome.org/show_bug.cgi?id=721111
2014-01-30 22:27:54 +01:00
Thibault Saunier
6e9e9338ae Revert "ges: Always create a project to back a timeline"
This reverts commit 59d83f1a93.

Conflicts:
	tests/check/ges/backgroundsource.c
	tests/check/ges/effects.c
	tests/check/ges/overlays.c
	tests/check/ges/simplelayer.c
	tests/check/ges/text_properties.c
	tests/check/ges/titles.c
2013-11-28 15:12:15 -03:00
Thibault Saunier
e7a45f0eef Remove GESSimplerLayer, that API should land into GESLayer in the end
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
2013-11-22 17:50:27 -03:00
Thibault Saunier
59d83f1a93 ges: Always create a project to back a timeline
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).
2013-11-09 10:35:12 -03:00
Thibault Saunier
28775dad59 tests: Make sure not to test freed objects type 2013-09-22 23:06:22 +02:00
Thibault Saunier
7b96c50b4e examples: Make project loading more generic
Pitivi formatter is deprecated, do not use it by default
2013-09-22 23:06:22 +02:00
Thibault Saunier
c0eae0c790 Revert "ges: Disable the Pitivi formatter"
This reverts commit e54ceff720.

Let's just keep it... it does not cost anything.
2013-09-22 23:06:22 +02:00
Joris Valette
9bb8479db8 tests: timelineedition: cast start and duration values as guint64 2013-09-14 00:37:30 -03:00
Mathieu Duponchelle
667b33cb96 tests: integration: set restriction_caps on the video encoding profile
We need this cause now videomixer renegotiates downstream.
2013-09-10 13:41:23 -03:00
Thibault Saunier
0d0fc767ee pipeline: Finnish renaming from GESTimelinePipeline 2013-09-09 12:47:02 -03:00
Thibault Saunier
1a674bb26c tests: timelineedition: Minor cleanups 2013-09-08 19:27:04 -03:00
Thibault Saunier
c4c26f8748 ges: Handle trimming in groups
This was broken, clips where moving all around, make it behave properly.
2013-09-07 12:55:58 -04:00
Simon Corsin
bd30bbd4a8 tests: timelineedition: Add a test_scaling.
It will check that the clip updates its size correctly.
2013-09-03 20:57:31 -04:00
Simon Corsin
805d5dfc07 test-utils: Adds a utility function to quickly check the timeline. 2013-09-03 20:57:31 -04:00
Simon Corsin
a635e48d77 GES: Add GESVideoSource and GESAudioSource base classes
+ Update documentation.
  + Implements subclasses audio-uri-source and video-uri-source
2013-09-03 20:22:32 -04:00
Thibault Saunier
e54ceff720 ges: Disable the Pitivi formatter
It lacks to many feature and the code is too bad, desactivation until
someone comes and fix it... The code should be removed if it never
happens
2013-08-29 18:43:21 -04:00
Thibault Saunier
8458d0220e tests: Make use of g_assert_no_error when it makes sense 2013-08-27 19:12:26 -04:00
Thibault Saunier
b9ce7db53d tests: Let use 20 sec to execute tests 2013-08-27 18:40:55 -04:00
Thibault Saunier
13aeda606a ges: Remove custom clip
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
2013-08-27 15:33:45 -04:00
Thibault Saunier
34abecc7db integration: Add titles test 2013-08-27 15:33:44 -04:00
Tim-Philipp Müller
4318f683d9 tests: fix NULL pointer dereference, ternary operator silliness and message type use 2013-08-24 18:21:26 +01:00
Thibault Saunier
e2385bcb2f tests: Give more debugging info when samples could not be generated 2013-08-24 11:40:47 -04:00
Thibault Saunier
cf96e4145e tests: Fix make distcheck
We need to make sure that we can write to the directory where we save
project files, so doing it in the tmp folder.

+ Properly dist test data files
2013-08-24 03:04:55 -04:00
Mathieu Duponchelle
ce57a0aacf integration: make test_basic be two concatenated clips. 2013-08-21 08:02:58 -04:00
Thibault Saunier
eab86c2913 tests: integration: Rework the way we handle seeking while fully paused
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.
2013-08-17 11:52:30 +02:00
Thibault Saunier
4ca7a4ef91 tests: integration: PNG file was renamed to png.png 2013-08-17 11:52:30 +02:00
Thibault Saunier
82ae3de5b6 tests: integration: Add a list tests only option
Also add an empty filed in the GOptionEntry array avoiding segfaults
2013-08-17 11:52:30 +02:00
Thibault Saunier
f8a9987082 tests: integration: Only use 2 layers for the mixing for now
+ Call the TSuite "integration" instead of "render"
2013-08-04 17:36:21 +02:00
Thibault Saunier
f1650b9f2d tests: check: All assets moved to assets/ 2013-08-04 16:27:53 +02:00
Thibault Saunier
c5c19cf412 tests: integration: Make it possible to list all avalaible tests
You can not use make check-integration --list-tests, you have to use
./integration --list-tests instead
2013-08-03 17:01:22 +02:00
Thibault Saunier
786a8f5b8a Fix compilation 2013-08-01 18:14:45 +02:00
Thibault Saunier
54f152aea7 tests: integration: Avoid leak 2013-08-01 17:56:29 +02:00
Thibault Saunier
4d8e9bd53c tests: integration: Do not forget to set encoding profiles 2013-08-01 17:47:50 +02:00
Vasilis Liaskovitis
c36fa7de58 integration: add mixing tests
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
2013-08-01 15:32:33 +02:00
Mathieu Duponchelle
5022b10d66 tests/integration: display test name when running it. 2013-08-01 15:32:33 +02:00
Mathieu Duponchelle
64bebd5867 tests/integration: add an asset directory. 2013-08-01 15:16:28 +02:00
Vasilis Liaskovitis
db72c59e1f integration: add seek tests to paused pipeline (no playing)
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
2013-08-01 11:04:58 +02:00
Vasilis Liaskovitis
a176ee153c integration: add paused pipeline seek tests 2013-08-01 11:04:58 +02:00
Mathieu Duponchelle
ea1d7edc8d tests/integration: adds image_filename in the test generation macro 2013-08-01 11:04:57 +02:00
Thibault Saunier
e8b3eaf0f2 tests: integration: Let the user mute the tests when needed
Add an environment variable so the user can make sur that
integration tests use fakesinks instead of real sinks
2013-07-23 19:37:54 -04:00
Thibault Saunier
cd83c0c8e5 tests: Make sure we can have the results into an XML file 2013-07-22 20:06:25 -04:00
Lubosz Sarnecki
9f0b0c26e3 Rename GESTimelinePipeline to GESPipeline
rename ges_timeline_pipeline methods to ges_pipeline
2013-07-21 21:42:42 -04:00
Thibault Saunier
b5795da61c tests: integration: Add some pipeline dumps
When we go to PLAYING, or when we get an error on the bus

+ Activate the hack so that we dump the pipeline on first buffer
pushed by the smart adder
2013-07-21 21:27:16 -04:00
Thibault Saunier
2e3a300aa6 tests: integration: Add video/audio only basic tests 2013-07-21 21:27:16 -04:00
Thibault Saunier
e981c171b1 tests: integration: Give some more information to user on errors 2013-07-21 21:27:16 -04:00
Thibault Saunier
086c3af0ad tests: intergration: Add some more encoding profiles 2013-07-21 21:27:16 -04:00
Thibault Saunier
775d25eb62 tests: integration: Give the user more details about failure when checking transcoded file 2013-07-21 21:26:35 -04:00
Thibault Saunier
066c9ea5b7 tests: integration: Be more precise with namings
Fully define formats in the namings

+ Add an mp3 + h264 in mov test
2013-07-21 21:26:35 -04:00
Thibault Saunier
1d40731e9d tests: integration: Refactor and make easier to add encoding profiles 2013-07-21 21:26:25 -04:00
Thibault Saunier
528ad72604 tests: integration: Add audio/video only seeking tests 2013-07-17 12:31:02 -04:00
Thibault Saunier
74e00d6bc4 tests: integration: Remove the effect in test_seeking
It complexifies the test but this is not what we actually want in
that test
2013-07-17 12:05:26 -04:00
Thibault Saunier
a3454262dc tests: Remove prints
And use GST_DEBUG and friends instead
2013-07-16 21:58:16 -04:00
Vasilis Liaskovitis
68363433c9 integration: some fixes for seek tests
- 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
2013-07-16 21:32:40 -04:00
Vasilis Liaskovitis
393505b8aa integration: add SeekInfo and get_position callback for seek tests
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
2013-07-13 17:29:08 +02:00
Thibault Saunier
125141237f tests: Simplifie integration tests using macros all around 2013-07-12 19:49:13 -04:00
Mathieu Duponchelle
b7755493e1 tests: Add integration tests
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)
2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
669ce62ea2 test-utils: Add test file generation code. 2013-07-12 18:17:00 -04:00
Thibault Saunier
1e5bb2edf6 timelineelement: Make sure that we will never set a negative start
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
2013-07-10 23:17:54 -04:00
Thibault Saunier
a933d9540d ges: Implement a GESGroup class, subclass of GESContainer
The GESGroup class is used to group various GESContainer
together, it can contain either GESClips or GESGroup or both.
2013-07-09 16:47:00 -04:00
Thibault Saunier
4e51b347ff tests: More safely check if objects where destroyed
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.
2013-07-09 22:13:42 +02:00
Thibault Saunier
534bf481ed clip: Handle child priority offsets when setting priority 2013-07-09 22:13:41 +02:00
Thibault Saunier
663f9884ef ges: Move ges_clip_edit to GESContainer
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
2013-07-09 22:13:41 +02:00
Thibault Saunier
dd7085d2ed track: Update gaps only when commiting
We were still updating them at useless moments, do it only when absolutely needed.
2013-07-09 22:13:40 +02:00
Mathieu Duponchelle
b3fafa7928 tests: Add a audio/video mixing test. 2013-06-23 18:42:59 -04:00
Thibault Saunier
724a6c1bb5 smart-adder: Implement a GESSmartAdder bin element to be used as mixing element
..in audio tracks
2013-06-23 18:37:40 -04:00
Thibault Saunier
b87c800743 meta-container: Add a VOLUME default meta to layers 2013-06-23 18:28:53 -04:00
Thibault Saunier
55b7628382 ges: Make space in the GESTracks to be able to add mixing elements later
And update the tests
2013-06-23 18:28:52 -04:00
Thibault Saunier
d6a2f90a17 tests:effects: Make use of normal layers, and enhance tests 2013-06-23 17:39:05 -04:00
Thibault Saunier
9b14c001b0 ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack 2013-06-23 17:38:57 -04:00
Thibault Saunier
f6038e3ad2 ges: Port to the new commit based API in GNL
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
2013-06-23 16:33:33 -04:00
Thibault Saunier
73bdde653d tests: Pass a ref of CAPS_ANY to ges_track_new 2013-05-30 14:14:56 -04:00
Thibault Saunier
b84ec5add6 tests: Add a basic test for pipeline state change
Add some test utils to create a pipeline
2013-05-29 17:22:20 -04:00
Thibault Saunier
302e0ed5d7 track: Update all gaps when timeline duration changed
And add a unit test to check that a gap is created in empty tracks
2013-05-28 18:27:31 -04:00
Thibault Saunier
40bfdd508a Finish renaming filesource to urisource 2013-05-28 18:27:31 -04:00
Thibault Saunier
7300a71483 tests: Use the gst_check_run_suite helper everywhere
Using GST_CHECK_MAIN where appropriate

This way it is possible to specify an XML file to store tests results in
2013-05-27 22:11:10 -04:00
Anton Belka
086bbd3b38 tests: add project auto-transition test 2013-05-09 19:04:13 -04:00
Anton Belka
4db816d3e6 tests: add timeline auto-transition test 2013-05-09 18:54:56 -04:00
Thibault Saunier
54bf3c05c5 test-clip: Do not set black/silent by default 2013-04-28 01:44:55 +02:00
Thibault Saunier
b2b96c743d Rename GESTimelineLayer to GESLayer 2013-04-23 20:22:31 -03:00
Thibault Saunier
b5c52a17ec layer: Remove the "rate" property of ges_timeline_layer_add_asset
API:
 - ges_timeline_layer_add_asset (layer, asset,  start,  inpoint, duration, rate, track_types);
 + ges_timeline_layer_add_asset (layer, asset,  start,  inpoint, duration, track_types);
2013-04-23 20:22:27 -03:00
Thibault Saunier
0c900f7bc6 tests: Check splitting a clip with several TrackElement 2013-04-19 19:05:43 -03:00
Thibault Saunier
70d5680748 pipeline: Add a GError argument 2013-04-18 18:48:19 -03:00
Mathieu Duponchelle
504ab966aa tests:timelineedition: Add a simple trimming test 2013-04-15 00:18:05 -03:00
Thibault Saunier
78d80c8ca4 track-element: Rename set_property_controlling_parameters set_control_source
+ Generate the documentation
2013-03-31 16:37:41 +02:00
Mathieu Duponchelle
e655a75605 [Keyframes] Adds API to set a control binding on a track element, and the serialization code. 2013-03-31 16:31:26 +02:00
Thibault Saunier
f8e4a2dc7d tests:effect: Do not re-add effect to the track 2013-03-28 19:02:06 +01:00
Thibault Saunier
cd188c851d container: Let subclasses handle the height
+ 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
2013-03-28 11:16:41 +01:00
Thibault Saunier
15c1481a56 test:basic: Do not add useless references, and minor improvements 2013-03-28 11:16:41 +01:00
Thibault Saunier
0df2d4f945 container: Make sure that the child exists when emiting the "child-removed" signal
+ Add a test
2013-03-28 11:16:41 +01:00
Thibault Saunier
fa5ed5111d Misc cleaning 2013-03-21 22:17:10 -03:00
Thibault Saunier
cae3aabbca ges: Make ges_clip_create_track_element(s) internal methods
+ 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
2013-03-21 22:05:45 -03:00
Thibault Saunier
e260de2fa6 tests::uriclip: Use a real file to test still images
+ Make use of GESAssets

And do proper refactoring
2013-03-21 22:00:21 -03:00
Thibault Saunier
855270566c uri-asset: Implement a ges_uri_clip_asset_request_sync method
This way we let the possibility to the user to actually do it, but we avoid him to do it
without knowing it is absolutely not recommanded to.

API:
	+ ges_uri_clip_asset_request_sync
2013-03-19 20:06:30 -03:00
Thibault Saunier
f8334dba24 clip: Make it mandatory that a clip is in a layer to be splittable
Otherwize we will not be able to describe if the returned object has a floating reference or not, and this would screw the introspection.
2013-03-19 20:06:30 -03:00
Thibault Saunier
0767f08c7a Always prefer gst_object_(un)ref over g_object_(un)ref
Making the refcount issue debugging easier
2013-03-18 12:48:41 -03:00
Thibault Saunier
aa740d86bd Remove GESTrackElements from GESTracks when removing from a GESClip
... Not the other way round.

  + Add and enhance debugging info on the way

The user should not be responsible for removing the GESTrackElements from
GESTracks, instead, removing it from a GESClip should imply removing
it from any GESTrack it is in.

This patch changes sensibly the behaviour when we remove a
GESTrackElement from a GESTrack, not remoing it from the GESClip it is
in. *But*, users should never remove a GESTrackElement from a GESTrack
anyway. The testsuite has been updated to that new behaviour.
2013-03-15 11:17:06 -03:00
Thibault Saunier
7943bb510a ges: Make GESTimeline responsible for adding GESTrackElement to GESTrack
+ Fix tests as necessary (Do not use agingtv as it can be "applied" on any TrackType
    	   and is not representative of what happens IRL)

We already had the infrastructure so the user can have the control over where to add
the elements (through the "select-track-for-object" signal). We now make use of that
signal everytime a GESClip is added to a GESTimelineLayer. This make user's life easier,
and object responsability clearer.
2013-03-15 00:13:09 -03:00
Thibault Saunier
f579a6a95c container: Add a ges_container_group method
+ Add some basic unit tests

API:
  GESContainer:group vmethod
  ges_container_group
2013-03-15 00:13:09 -03:00
Thibault Saunier
c73ced52f8 container: Add a way to ungroup a GESContainer into several GESContainers
+ Add simple unit test

API:
  GESContainerClass::ungroup vmethod
  ges_container_ungroup
2013-03-15 00:13:09 -03:00
Thibault Saunier
795b8df1b6 Implement GESContainer
+ Fix unit tests
  + Minor enhancement in unit tests

API changes:
-----------
  * ges_track_element_get_clip     -> ges_timeline_element_get_parent
  * ges_clip_add_track_element     -> ges_container_add
  * ges_clip_release_track_element -> ges_container_remove
  * ges_clip_get_track_elements    -> ges_container_get_children
                                      (or GES_CONTAINER_CHILDREN)
2013-03-15 00:13:08 -03:00
Thibault Saunier
0888e5e25b Rename object/tobj/trobj to clip or track_element as necessary
Not really complete but it is a good start!
2013-02-15 16:26:30 -03:00
Thibault Saunier
d21791a8d0 Rename GESTimelineLayer.xxx_object to GESTimelineLayer.xxx_clip 2013-02-15 15:23:15 -03:00
Thibault Saunier
ec1db99266 track: Rename all GESTrack.xxx_object to GESTrack.xxx_element 2013-02-15 15:23:15 -03:00
Thibault Saunier
fc8f06eedb Properly rename object-added to clip-added 2013-02-15 15:23:15 -03:00
Thibault Saunier
4ddcfb642d Finish renaming timeline object to clip 2013-02-15 15:23:15 -03:00
Thibault Saunier
b4e1131b70 Finish renaming track object to track element 2013-02-15 15:23:15 -03:00