Commit graph

503 commits

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