Commit graph

383 commits

Author SHA1 Message Date
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
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
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
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
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
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
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