Commit graph

1688 commits

Author SHA1 Message Date
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
a939c553cf project: Make sure error-loading-asset is emited when needed
In case ges_project_try_updating_id would be called from outside ges-project the signal
was not emitted, change that.

+ Add some debugging
2013-07-27 19:29:07 +02:00
Thibault Saunier
5c8e2737b4 timeline: Add methods to get and set the snapping distance 2013-07-24 22:37:06 -04:00
Thibault Saunier
c1451cf48c clip: Fix the spliting method
We should make sure that the newly created trackelement are inside
a container when adding them to as this is needed for GESUriClip-s.

Also do not try to set a child property on the TrackElement itself.

https://bugzilla.gnome.org/show_bug.cgi?id=703152
2013-07-24 21:30:23 -04: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
Thibault Saunier
3e88edfebc pipeline: Check that the profile could actually be set on the encodebin
Setting the profile on an encodebin can fail, and if that happens, there
will be no profile set at all, we should return FALSE in GESPipeline
when that happens
2013-07-21 21:42:42 -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
Mathieu Duponchelle
9e14ca1487 ges-uri-clip: Add the possibility to specify an assets directory
through the GES_TESTING_ASSETS_DIRECTORY environment variable.
2013-07-13 17:22:24 +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
Mathieu Duponchelle
78e19edad9 track-element: No need to log when prio == MIN_GNL_PRIO. 2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
e0b89ce691 framepositionner: fix messup with propname enum. 2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
cc09d03253 track: Make it possible to disable the mixing feature
API:
  ges_track_set_mixing
  ges_track_get_mixing
2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
4addde8d74 timeline: create_transitions_on_layer *before* actually commiting
Everything need to be in place before commiting, otherwize it makes no
sense at all.
2013-07-12 18:17:00 -04:00
Thibault Saunier
cc9391319e group: Add an empty group constructor
As it is more intuitive for users.

API:
  ges_group_new
2013-07-12 11:56:59 -04:00
Mathieu Duponchelle
2723ef561e container/group/clip: Allow creating an empty group.
This is a legitimate use case.
2013-07-11 23:47:36 +02:00
Mathieu Duponchelle
96204ac1d2 container: Add a 'recursive' argument to the get_children method
API:
  - ges_container_get_children (GESContainer *container);
  + ges_container_get_children (GESContainer *container, gboolean recurse);
2013-07-10 23:25:12 -04:00
Mathieu Duponchelle
ff21ea7f92 group: set priv->setting_value to TRUE when moving ourselves in _child_removed 2013-07-10 23:18:41 -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
b0202ed22b timeline: Append missing layers when moving groups between layers
This was a missing feature of the newly added groups
2013-07-09 21:30:59 -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
d3e3871440 xml-formatter: Indent formatted files 2013-07-09 22:14:43 +02:00
Thibault Saunier
bce084f4fd timeline-element: Add a method to get the topelevel parent of an element
API:
	ges_timeline_element_get_toplevel_parent
2013-07-09 22:13:42 +02: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
2b9606437c clip: Emit the notify::layer signal only when actually needed
That means:
  - only when we do change layer
  - At the end of moving between two layers
2013-07-09 22:13:42 +02:00
Thibault Saunier
89e2a69d37 clip: Avoid list corruption when grouping objects
We are currently iterating over a list that is modified in the same
method, we have to get a copy of the list, and iterate over the copy.
2013-07-09 22:13:42 +02:00
Thibault Saunier
12eebdabda clip: Add an internal method to easily get the priority of the layer the clip is in 2013-07-09 22:13:42 +02:00
Thibault Saunier
30eb9e4474 container: Remove the get_priority_range vmethod
We now let full control to subclasses so we do not need it anymore.
2013-07-09 22:13:42 +02:00
Thibault Saunier
9e15e13983 container: Let full control of children priorities to subclasses
For that we make the children_control_mode a protected filed, directly usable by
subclasses, removing the method to set it.

And we let the subclass set and get the priority offsets to the container class.
2013-07-09 22:13:42 +02:00
Thibault Saunier
ed9dcddef4 track: Make sure that new gaps are filled before removing the old ones
Currently we can end up having gaps in track as the first step of the
gap filling method removes currently set gaps.
2013-07-09 22:13:41 +02:00
Thibault Saunier
534bf481ed clip: Handle child priority offsets when setting priority 2013-07-09 22:13:41 +02:00