Commit graph

47 commits

Author SHA1 Message Date
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
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
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
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
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
58fb9a6720 track-element: Fix splitting bindings and add unit tests 2015-07-03 14:06:54 +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
Thibault Saunier
18f14de105 tests: Remove integration tests, GstValidate is the way forward! 2014-12-06 10:34:18 +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
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
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
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
b9ce7db53d tests: Let use 20 sec to execute tests 2013-08-27 18:40:55 -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
Thibault Saunier
528ad72604 tests: integration: Add audio/video only seeking tests 2013-07-17 12:31:02 -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
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
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
Anton Belka
086bbd3b38 tests: add project auto-transition test 2013-05-09 19:04:13 -04: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
695c381bb1 Rename GESTimelineFileSource to GESUriClip
Conflicts:
	ges/ges-pitivi-formatter.c
	ges/ges-uri-clip.c
	tests/check/ges/project.c
	tests/check/ges/uriclip.c
2013-02-15 14:42:02 -03:00
Thibault Saunier
04a3c49ebd Rename GESTimelineObject to GESClip 2013-02-15 14:42:02 -03:00
Thibault Saunier
9f63e6514a Allow checking code coverage 2012-12-29 19:38:12 -03:00
Thibault Saunier
2cd77406e1 tests: Add GESProject tests 2012-12-29 19:36:50 -03:00
Thibault Saunier
97973f1eba Remove the GESKeyFileFormatter
It was using deprecated URI, and can not be used in real life anymore.

Also remove the ges_formatter_default_new method ges_formatter_new_for_uri
that are useless now
2012-12-19 11:45:37 -03:00
Thibault Saunier
6462b86ac4 tests: Add some utils for test writing 2012-09-25 15:10:35 +02:00
Thibault Saunier
b1a8596256 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	bindings/python/ges-types.defs
	bindings/python/ges.defs
	bindings/python/ges.override
	configure.ac
	ges/ges-timeline.c
2012-04-25 17:54:36 -04:00
Thibault Saunier
d3f210fe6d tests: Add a testsuite for the new timeline edition API 2012-04-23 22:03:11 -04:00
Sebastian Dröge
e2e2f1261e ges: Update versioning 2012-04-04 14:50:23 +02:00
Thibault Saunier
63e901ed12 GESTrackEffect: implementation of this new class 2011-05-06 10:38:58 +02:00
Tim-Philipp Müller
84a17a3d12 test: make unit tests compile and work in uninstalled setup 2011-01-08 01:40:18 +00:00
Brandon Lewis
4f0136c5ac tests: Add save/load tests 2010-11-27 18:08:19 +01:00
Edward Hervey
6364e8ec2c all: Changes for discoverer being merged upstream
Along with a whole bunch of Makefile fixups
2010-09-23 18:42:48 +02:00
Brandon Lewis
a071cec612 add unit tests for text properties 2010-09-01 16:56:04 +02:00
Brandon Lewis
c76697bca0 check in overlay unit tests 2010-07-09 13:21:12 +02:00
Brandon Lewis
1774b9360c check in unit tests for titles 2010-07-09 13:21:09 +02:00
Brandon Lewis
878fac9c6a check in background source unit test 2010-07-09 13:21:06 +02:00
Brandon Lewis
9eba9b4d7b tests/check/Makefile.am: add transition unit tests to make check 2010-06-09 11:28:10 +02:00
Edward Hervey
d784d95d10 check: Use GST_CFLAGS so we get new compilation flags 2010-04-20 13:47:08 +02:00
Edward Hervey
346d7ab0f6 tests: Add unit test for layer property.
Still needs more work though
2010-03-13 15:56:57 +01:00
Edward Hervey
6b265346c4 tests: Fix linking order.
This ensures that "make check" will run with the local libraries and not
the system-wide ones
2009-12-11 15:20:35 +01:00
Edward Hervey
640cf95158 tests: New unit test for GESTimelineObject 2009-09-30 16:45:13 +02:00
Edward Hervey
e24c561d61 tests/check: Add test for GESSimpleTimelineLayer 2009-09-29 15:29:11 +02:00
Edward Hervey
a74cfc86f6 tests/check: New test for GESTimelineFileSource 2009-09-21 18:08:51 +02:00
Edward Hervey
12777c8532 Add unit test system. Adjust GST_DEBUG usage. 2009-08-06 19:51:29 +02:00