Commit graph

1509 commits

Author SHA1 Message Date
Justin Kim
0b900bddc9 pipeline: don't leak GstPad
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-24 09:42:08 +02:00
Justin Kim
00ae999547 pitivi-formatter: don't leak internal hash table
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-24 09:42:08 +02:00
Thibault Saunier
1131a22a74 video-transition: Make compositor background transparent
Allowing further mixing downstream
2015-09-23 21:23:13 +02:00
Thibault Saunier
d1c01678bc video-transition: Add a framepositioner at the end of the transitio
So downstream compositor knows the zorder of the various streams
2015-09-23 21:13:13 +02:00
Thibault Saunier
5a0393c54a ges: Namespace NLE utils function into GES
Avoiding name clashes when built statically
2015-09-18 10:01:44 +02:00
Justin Kim
fe2165cad3 timeline: don't leak pad in private structure
https://bugzilla.gnome.org/show_bug.cgi?id=754867
2015-09-11 13:09:40 +02:00
Thibault Saunier
f046bb5a03 video-source: Use the priority being set to compute zorder 2015-09-04 12:01:16 +02:00
Thibault Saunier
f0b3cd27f9 video:transition: Set mixer pad zorder 2015-09-02 23:27:16 +02:00
Thibault Saunier
8c0a6402f6 video-source: Make sure to set framepositionner zorder when creating it
And fix a computation bug where we would be having mixing order
reversed between layers.

And make sure that the positionner does not mix up Transition handling
of the zorder
2015-09-02 20:42:50 +02:00
Thibault Saunier
ab25464876 video-source: Simply set framepositionner->zorder = self->priority
Summary:
Making the code simpler and handling the transition case
where elements are in the same layer (which was failing
/setting same zorders until now).

Reviewers: Mathieu_Du

Differential Revision: https://phabricator.freedesktop.org/D237
2015-08-27 21:58:39 +02:00
Thibault Saunier
edc5c27ffb Move NLE to a dedicated GstPlugin
Summary: Allowing external user to directly use it

Reviewers: Mathieu_Du

Differential Revision: https://phabricator.freedesktop.org/D231
2015-08-20 13:49:20 +02:00
Thibault Saunier
fdd1456062 nle: Enhance debug logging 2015-07-23 12:28:14 +02:00
Thibault Saunier
3c127d9622 ges: Do not leak and uselessly create errors
And avoid parenthesis in GstObject names
2015-07-23 12:28:14 +02:00
Thibault Saunier
254c2b1f5e ges: Fix how we handle layer vs layer-priority in the structured interface 2015-07-23 12:28:14 +02:00
Thibault Saunier
d5663a46dc timeline: Remove transitions that can no fit into an auto transition
When activating auto transition mode
2015-07-16 11:23:20 +02:00
Thibault Saunier
6fc6ce29f9 ges; Minor debug enhancement 2015-07-16 10:53:17 +02:00
Thibault Saunier
724418b75d assets: Avoid deadlock when done initialising asset
Avoid to hold the CACHE lock when setting the GTasks return values.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=752300
2015-07-13 13:54:35 +02:00
Thibault Saunier
50f26f1269 nleobject: Concider objects as 'inactive' when they have a duration == 0 2015-07-08 19:10:31 +02:00
Thibault Saunier
0fad60e754 track-element: Handle the case where we have only one keyframe set when interpollating keyframes 2015-07-08 18:59:00 +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
d9c596162e structured-interface: Better handle CLOCK_TIME type from GstStructures 2015-07-03 14:06:54 +02:00
Thibault Saunier
5885f58c14 element: Implement a paste method
Allowing user to copy paste clips very easily
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
42700e98c5 smart-video-mixer: Always keep a ref on the mixer pad 2015-07-03 11:20:54 +02:00
Thibault Saunier
54be29e9ed timeline-element: Add a method to get the TrackType it interacts with
API:
  + ges_timeline_element_get_track_types
2015-07-03 11:20:54 +02:00
Thibault Saunier
87b790a9da timeline: Never create transitions between rippled objects
In case of groups, we can have track elements that do not belong
directly to the moved_trackelements but will be moved as others. Never
create transition to all object that have a start > moving group start.
2015-07-03 11:20:54 +02:00
Thibault Saunier
c17dae8f0e video-transition: Use a SmartMixer as mixer
So that the frame position metas are parsed and taken into account
2015-07-03 11:20:54 +02:00
Thibault Saunier
6a0ac89009 track-element: Add method to remove control binding
API:
  ges_track_element_remove_control_binding
2015-07-03 11:20:54 +02:00
Thibault Saunier
7f4f1b0a07 ges: Handle absolute GstDirectControlBindings 2015-07-03 11:20:54 +02:00
Thibault Saunier
8e13b7d9b8 framepositionner: Make use of the new CompositorPad.width/height
So that the scaling is done in the compositor and this way we can cleanly interpolate its value
2015-07-03 09:41:19 +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
938aaaef24 ges: Do not add a final gap at the end of track while rendering
It is not correct to force a black frame at the end of the rendered
video and it also leads to rendering issue with vpX encoders.

https://bugzilla.gnome.org/show_bug.cgi?id=751510
2015-07-02 10:17:25 +02:00
Thibault Saunier
8b821511ad clip: Use container priority offset when setting children prios
Instead of trying to compute it ourself which might lead to wrong
behaviour when moving between layer.

+ Make sure that when we reset clip children priority (to make space
  for effects,) we update the container knowledge of priority offsets
2015-07-01 11:38:53 +02:00
Thibault Saunier
f7dbdd27ba clip: Fix track element priority computation
We were computing the priority offset taking the global MIN_NLE_PRIO
(which is a constant == 2 to make space for the mixing elements) instead
of the layer 'track element' relative priority, leading to very big
offsets on layer with a prio > 0. In the end it leaded to effects having
the same priority as the sources which leads to an undefined behaviour
in NLE.
2015-07-01 10:19:07 +02:00
Thibault Saunier
9669bafe46 uri-asset: Bump the discoverer timeout to 1 minute
We should by default avoid false timeouts
2015-07-01 10:19:07 +02:00
Thibault Saunier
5833aae413 track: Give usefull name to compositions 2015-07-01 10:19:07 +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
2994650f9e ges: Unbreeak API after renaming of GNL to NLE 2015-06-25 10:54:13 +02:00
Sebastian Dröge
f5a8c24077 ges: Hide more symbols of headers that are not installed 2015-06-25 10:28:41 +02:00
Sebastian Dröge
d46efecf2b nle: Remove unused function
nle/nlecomposition.c:2471:1: error: unused function '_parent_or_priority_changed' [-Werror,-Wunused-function]
_parent_or_priority_changed (NleObject * obj, GNode * oldnode,
^
2015-06-25 10:25:48 +02:00
Sebastian Dröge
fd81083071 nle: Hide away symbols, they're supposed to be internal 2015-06-25 10:24:13 +02:00
Tim-Philipp Müller
700e5b0ae0 nlesource: remove outdated comment 2015-06-23 09:42:08 +01:00
Thibault Saunier
ac49f22530 pipeline: Handle rendering with disabled tracks
Summary:
The user might want to render only some media type of the timeline,
for example he wants to only render the audio part of the timeline.

It was failing as we were not connecting the track but were still trying
to 'render' it.

Depends on D153

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D154
2015-06-10 18:00:58 +02:00
Thibault Saunier
321d2c2edd ges: Raise an error when the discoverer returns != RESULT_OK
And do not try to run the pipeline when that happens
2015-06-10 08:35:45 +02:00
Thibault Saunier
4f83cde172 uri-asset: Add a way to control discoverer timeout through envvar
Making it possible to run ges-launch test under valgrind for example
2015-06-10 08:35:45 +02:00
Thibault Saunier
0a6105ee3b timeline: Never snap end when rippling
http://phabricator.freedesktop.org/T74
2015-06-05 22:53:04 +02:00
Thibault Saunier
9d30b0014d timeline: Never create transition between elements inside the moving context
http://phabricator.freedesktop.org/T74
2015-06-05 22:52:57 +02:00
Thibault Saunier
73e4e3bb0a group: Disconnect from old layer notify::priority when a clip is moved to a NULL layer
This means we need to properly track the layer a clip was in. We now
keep track of the various signal IDs in a dedicated structure and
keep a ref on the layer an object is in.

http://phabricator.freedesktop.org/T88
2015-06-05 22:52:43 +02:00
Luis de Bethencourt
b86cca00f1 ges: remove dead code
Summary:
No need to recheck if error exists since it has already been checked by the
conditional above.

Coverity CID #1302832

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D200
2015-06-01 13:32:47 +01: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
d7dfcff745 timeline: Use a simple GList to track auto transitions 2015-05-29 15:27:03 +02:00
Thibault Saunier
4f70e5eb88 nlecomposition: Do not fail when removing/adding child without commiting
Summary:
We use to end up removing the nleobject when the following case happened:

 * add an object
 * remove that object
 * re add the object
 * commit the composition

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D193
2015-05-20 09:53:19 +02:00
Thibault Saunier
3ba6dec976 timeline: Minor documentation addition 2015-05-19 18:19:10 +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
Thibault Saunier
ff274dee2e ges: If last added clip is not in a layer, get the first layer
Summary:
In case we just removed it from its layer, make sure to
just use the first layer when none specified.

Depends on D177

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D178
2015-05-14 15:31:52 +02:00
Thibault Saunier
9843ffeed2 ges: Fix some error settings
Summary: Depends on D176

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D177
2015-05-14 15:31:52 +02:00
Thibault Saunier
2ddab4db57 ges:structured-interface: Use GET_AND_CHECK in more places
Summary:
Giving more details about the issue to the user

Depends on D151

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D176
2015-05-14 15:31:51 +02:00
Thibault Saunier
8558a03272 xml-formatter: De/serialize whether encoding profiles are enabled or not
Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D151
2015-05-14 11:15:00 +02:00
Tim-Philipp Müller
bb40668ff9 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:23:14 +01:00
Thibault Saunier
27c016a300 ges:xml-formatter: Call g_markup_parse_context_end_parse
Summary:
Otherwise the parser context will never know that is all the XML it
will receive and fail out if the XML document is not valid (in that
case if it does not end)

https://bugzilla.gnome.org/show_bug.cgi?id=746354

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D38
2015-04-21 11:25:21 +02:00
Thibault Saunier
8dfac3c94f ges: Add debug output when get_element returns NULL 2015-04-20 17:42:44 +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
Mathieu Duponchelle
2e26a9e926 timeline, track: Emit commited at the correct moment.
Summary:
+ [API] GESTrack::commited signal.
+ [API] ges_track_commit_sync

We were emitting commited when timeline_commit was called, which
wasn't very helpful. This commit makes it so we emit commited once
all the compositions have actually been commited.

We also add a synchronous commit method to spare the user
the need to connect to the signal and wait, and update the
documentation.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D83
2015-04-09 14:44:11 +02:00
Mathieu Duponchelle
54190d9dd8 layer: call timeline_element_set_timeline in layer_set_timeline.
Summary:
Otherwise if there was still a reference to the layer when it
is removed from the timeline, it fails when the last reference
is released, because timeline_element_set_timeline calls
timeline_remove_element, which tries to remove the element from
an already disposed hashtable.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D82
2015-04-08 23:35:01 +02:00
Mathieu Duponchelle
c271f89d4a ges-launch: Add support for +test-clip
Summary: With the pattern as a mandatory argument.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D68
2015-04-07 14:15:36 +02:00
Mathieu Duponchelle
47f1713f1e ges-project: Surface a meaningful error when no suitable formatter.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D67
2015-04-07 14:15:36 +02:00
Mathieu Duponchelle
e89dccc9aa timeline-element: Disconnect child properties handlers.
Summary:
+ And freeze notifies while doing so.

We had a race with GstController which isn't MT safe, we can
fix it by propertly disconnecting signals, and making sure
no notifies are emitted while doing so.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D64
2015-03-31 15:32:08 +02:00
Mathieu Duponchelle
1ea442a021 track: Set any caps features on tmpcaps.
Summary: Before checking if we have a specific constructor for a track type.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D63
2015-03-31 15:32:08 +02:00
Mathieu Duponchelle
0d3a3eb9d2 pipeline: no reason to disconnect a pad that is NULL anyway.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D62
2015-03-31 15:31:49 +02:00
Mathieu Duponchelle
d4deeae5c1 build: no reason to introspect nodist sources.
Summary: g-ir-scanner was erroring like crazy on the generated sources.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D57
2015-03-25 12:27:02 +01:00
Mathieu Duponchelle
54c5723b75 ges-pitivi-formatter: Don't flood stdout with alarming conclusions.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D56
2015-03-25 12:23:24 +01:00
Mathieu Duponchelle
710d34adf4 build: fix make distcheck. 2015-03-23 12:41:00 +01:00
Thibault Saunier
d114cc60bd ges: Do not clear potentially NULL errors
And avoid dereferencing NULL errors
2015-03-23 12:41:00 +01:00
Thibault Saunier
663824d20f ges-launch: Prefix clip, transition and effect instruction with a +
Slightly changing the CLI so that we have indicators of the timeline
commands adding new objects.
2015-03-23 12:41:00 +01:00
Thibault Saunier
20d94bea13 ges: Accept path as URI in the create clip structured interface 2015-03-23 12:41:00 +01:00
Mathieu Duponchelle
d77ad923a6 parse.l: Modify command arguments.
+ --clip uri=file:// becomes clip file:// for example.
2015-03-20 13:53:42 +01:00
Thibault Saunier
e37d8e768f ges: command-line-formatter: Properly error out on invalid arguments 2015-03-20 13:53:42 +01:00
Thibault Saunier
28a1e97aa2 ges: Factor out a GESCommandLineFormatter class
This formatter will allow any user to deserialize a timeline using
the new ges-launch command line interface
2015-03-20 13:53:42 +01:00
Mathieu Duponchelle
ed0839dd82 structured-interface: Be clever when no layer priority specified.
And add the new element to the same layer as the last clip that
was added, insted of adding to the last layer of the timeline
(and with the current code, actually adding a new layer each time)
2015-03-20 13:53:41 +01:00
Mathieu Duponchelle
7cfdc2265d ges-structured-interface: fix build 2015-03-20 13:53:41 +01:00
Thibault Saunier
dbb2368a39 ges: Automatically put clips at the end of layer if no start specified
In the 'structured' interface we should add it at the end of the layer

And make use of the new ges_timeline_get_layer API
2015-03-20 13:53:41 +01:00
Mathieu Duponchelle
761067b685 structure-interface: rename layer-priority to layer.
+ And add a short name for it in ges-launch.
2015-03-20 13:53:41 +01:00
Thibault Saunier
396196dfdf ges: Add layer up to the wanted layer priority in the structure interface
Making the thing easier to use
2015-03-20 13:53:41 +01:00
Thibault Saunier
2ffa9477e9 ges: Handle setting child property on container directly in the structured based interface 2015-03-20 13:53:40 +01:00
Thibault Saunier
3105797913 ges: Add an internal GstStructure based interface
To be use by GstValidate action and ges-launch

Reviewers: Mathieu_Du, thiblahute

Differential Revision: http://phabricator.freedesktop.org/D42
2015-03-20 13:53:35 +01:00
Thibault Saunier
7d0015b973 ges: Fix build for older GLib
The return type of g_hash_table_insert changed from void to boolean
2015-03-19 09:33:18 +01:00
Thibault Saunier
dd47def4e3 container: implement children property handling 2015-03-18 20:36:39 +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
3e49850e6d timeline: Add API to find a layer with a specific priority in a timeline
Summary:
API:
  * ges_timeline_get_layer

Test Plan: Nan

Reviewers: mathieu.duponchelle
2015-03-18 20:36:38 +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
Thibault Saunier
f21132c3d5 ges: Remove all reference to already dead GESSimpleLayer 2015-03-13 10:02:39 +00:00
Luis de Bethencourt
8b4b2562a6 project: remove unnecessary dereference
g_clear_error() already dereferences the error pointer, no need to manually
check and do it.

CID #1257630
2015-03-05 13:53:32 +00:00
Tim-Philipp Müller
af3fd19637 ges-base-xml-formatter: fix setting of child properties
Make sure all child properties get set. GstStructureForeachFunc
takes a gboolean return value that decides whether to
continue or not.
2015-02-27 01:26:24 +00:00
Tim-Philipp Müller
7e9a2ef6c0 ges-meta-container: fix ges_meta_container_foreach()
Really call function on all metadata inside the container
instead of stopping randomly. GstStructureForeachFunc
takes a gboolean return value.
2015-02-27 01:24:30 +00:00
Tim-Philipp Müller
80909fb99a ges-base-xml-formatter: fix property setting
GstStructureForeachFunc has a gboolean return value,
and the foreach function will stop unless we return
TRUE here. This meant it was potluck whether all
properties in the structure got set or not.

Fixes setting of text overlay clip text property
in particular.

https://bugzilla.gnome.org/show_bug.cgi?id=743874
2015-02-26 20:14:31 +00:00
Thibault Saunier
d0421639e0 ges: Always set ANY capsfeatures on tracks caps property
Summary:
We should not restrict the CapsFeatures on the track caps.
If someone want to do such a restriction he should add it to
the restriction caps directly

Test Plan: Run testsuite

Reviewers: mathieu.duponchelle
2015-02-20 14:10:56 +01:00
Mathieu Duponchelle
6321a9135f ges-project: no need to commit an empty timeline.
Summary: Can lead to deadlocks if the user commits at the same time.

Test Plan: Ran make check, it worked

Reviewers: tsaunier
2015-02-19 18:24:39 +01:00
Luis de Bethencourt
7dd8dbab28 ges: initialize timeline_duration value
If priv->timeline is False the function does not set any value for
timeline_duration before using it in gap_new (). Initialize the value to aviod
unexpected behaviour.

CID #1268405
2015-02-10 10:29:39 +00:00
Thibault Saunier
f192ba3192 nlecomposition: Properly protect the children task 2015-02-06 10:06:05 +01: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
f3f27bd636 validate: Do not wrongly set clip duration for UriClips
That was making no sense at all....
2015-02-02 11:57:19 +01:00
Thibault Saunier
23c71e8222 validate: Properly expose the commit action as ASYNC 2015-02-02 11:57:03 +01:00
Thibault Saunier
0bb313030b layer: Remove child from children list before emitting "child-removed" 2015-01-28 11:39:58 +01:00
Luis de Bethencourt
1efe0639de ges: remove useless gpointer variable
gpointer useless is indeed useless since we can use GST_DEBUG_REGISTER_FUNCPTR
to avoid having to store the return of the GST_DEBUG_FUNCPTR registration.

CID #1265771
2015-01-26 18:25:02 +00:00
Luis de Bethencourt
8f79ee9230 ges: merge MIN() and MAX() into CLAMP()
Merge the usage of MIN() and MAX() into one CLAMP() function.

CID #1265770
2015-01-26 17:47:55 +00:00
Thibault Saunier
7a9d39fadb ges: Make sure the GESTextOverlayClip is register on init
So it can be used when de serializing projects containing it.

https://bugzilla.gnome.org/show_bug.cgi?id=743406
2015-01-24 10:56:30 +01:00
Thibault Saunier
dc2f48a726 uri-asset: Check that the newly computed URI exist
No the one we know failed!
2014-12-12 12:07:01 +01:00
Thibault Saunier
7c6ad5e3ba validate: Add an action type to load a project from its content 2014-12-12 12:07:01 +01:00
Thibault Saunier
752a2c6885 Revert "track: [API]: ges_track_update_restriction_caps."
This reverts commit e9544ce1d6.

This commit should never have landed we decided we do not want to do
that.
2014-12-06 10:41:33 +01:00
Thibault Saunier
97c56da95b timeline: Add a method to easily check if a timeline is empty
API:
    + ges_timeline_is_empty
2014-12-06 10:34:19 +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
Mathieu Duponchelle
e9544ce1d6 track: [API]: ges_track_update_restriction_caps.
+ And specify default restriction caps for audio and video tracks.
+ Add ges_track_set_restriction_caps to the sections, it was missing.

https://bugzilla.gnome.org/show_bug.cgi?id=740726
2014-12-06 10:34:18 +01:00
Thibault Saunier
523e279e91 nlecomposition: Minor debug enhancements 2014-12-06 10:34:17 +01:00
Thibault Saunier
122dcbc190 pipeline: Expose playsink::video-filter and playsink::audio-filter
That can be used to add filters at the very end of the pipeline,
and one can think of adding a watchdog element in there for
example.
2014-12-06 10:34:17 +01:00
Thibault Saunier
068c20ff60 pipeline: Dot not check for chain->tee twice 2014-12-06 10:34:17 +01:00
Thibault Saunier
c7cceae128 validate: Avoid depending on not stable APIs
And cleanup includes
2014-12-06 10:34:17 +01:00
Thibault Saunier
452ebc1965 validate: Move to new action type registration API 2014-12-06 10:34:17 +01:00
Thibault Saunier
8e3790495f validate: Add missing action execution printing 2014-12-06 10:34:16 +01:00
Thibault Saunier
b7daa03a6e timeline-element: Properly handle setting name to NULL 2014-12-06 10:34:16 +01:00
Thibault Saunier
6367c96d7d nlecomposition: Add a 'query-position' signal
In order to get the precise position of the pipeline, the only
way is to ask the 'application' to query the pipeline position and
use it.
2014-12-06 10:34:16 +01:00
Thibault Saunier
3b353be8ea ges: Keep backward compatibility for relocated assets CLI
Meaning adding an API for user to add relacation URI paths

API:
    ges_add_missing_uri_relocation_uri
2014-12-06 10:34:16 +01:00
Thibault Saunier
e5b57db7a2 ges: Add a method to pass argc/argv to GES at init time
Allowing user to set configuration actions without using
the GES GOptionGroup

https://bugzilla.gnome.org/show_bug.cgi?id=740717
2014-12-06 10:34:15 +01:00
Thibault Saunier
ac3cad47b6 validate: Expose GES Validate action
So other can also make use of those action outside
ges-launch itself

https://bugzilla.gnome.org/show_bug.cgi?id=740718
2014-12-06 10:34:15 +01:00
Thibault Saunier
dc0770bfa6 uri-asset: Ensure that UriAssets loaded with error are remembered 2014-12-06 10:34:15 +01:00
Thibault Saunier
55c88a726e project: Add a method to create assets synchronously
This allows to create a add an asset to a project in a
synchronous way.

API:
  ges_project_create_asset_sync

https://bugzilla.gnome.org/show_bug.cgi?id=740716
2014-12-06 10:34:15 +01:00
Thibault Saunier
58d525a4e7 ges: Add an init option to set media paths for moved assets
Allowing user to easily set a set of paths to look for moved
assets instead of needing the to re implement that logic
over and over.

https://bugzilla.gnome.org/show_bug.cgi?id=740714
2014-12-06 10:34:15 +01:00
Thibault Saunier
c8b2ab8dbb ges: Add a method to get GES GOption group
This allow us to have global options to be
passed as arguments of the program to configure
GES behaviour

API:
  ges_init_get_option_group

https://bugzilla.gnome.org/show_bug.cgi?id=740715
2014-12-06 10:34:14 +01:00
Thibault Saunier
39a7ce6ca0 pipeline: Disable encoding format renegotiation when rendering 2014-12-06 10:34:14 +01:00
Mathieu Duponchelle
fb34c5056e *source: new lines in xml break my parser.
+ So I removed them cause I'm clever

https://bugzilla.gnome.org/show_bug.cgi?id=740727
2014-12-05 22:12:12 +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
fd268f0387 element: Add a property allowing user to avoid serializing TimelineElements on demand 2014-11-10 17:03:46 +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
e36c4c2bf7 pipeline: Do not relink an already linked track 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
21807d6637 xml-formatter: Do not forget to set properties on the track elements
We were just setting children properties, even if the propertie to be
set on themselves where properly passed in

https://bugzilla.gnome.org/show_bug.cgi?id=729487
2014-11-10 16:22:42 +01:00
Thibault Saunier
7f71914f07 title-source: Expose the shaded-background property
Rework the way we override the background property to avoid trying to
lookup shaded-foreground-color!

https://bugzilla.gnome.org/show_bug.cgi?id=728635
2014-11-10 16:22:42 +01:00
Thibault Saunier
fcfdbef0b2 titlesource: Expose the outline-color property
https://bugzilla.gnome.org/show_bug.cgi?id=728634
2014-11-10 16:22:42 +01:00
Mathieu Duponchelle
ee2b3f7d24 pipeline: connect tracks when added, not only on state change.
+ ghost track src pad before calling track added so that
  pipeline has a pad to link.
+ Remove silly comment.
2014-11-10 16:22:42 +01:00
Thibault Saunier
ac906a9143 Document known and usable child properties for GESTrackElements subclasses 2014-11-10 16:22:41 +01:00
Thibault Saunier
20f76fe86f trackelement: Add a lookup_child vmethod
This method can be used for subclass to override the default behaviour
for child lookup. This vmethod can be used for example in the case where
you want the name of a child property to be 'overridden'.

As an example in the GESTitleSource where we have a videotestsrc
which has a 'foreground-color' property that is used in the TitleSource
to set the background color of the title, this vmethod is now used to
tweak the name passed as parameter to rename "background" to
"foreground-backend" making our API understandable.

API:
  GESTrackElement::lookup_child

https://bugzilla.gnome.org/show_bug.cgi?id=727880
2014-11-10 16:22:41 +01:00
Thibault Saunier
190643508f title: Deprecate all method related to child properties
The standard way setting children properties is by using the
GESTrackElement::set_child_propery and friend methods

https://bugzilla.gnome.org/show_bug.cgi?id=727880
2014-11-10 16:22:41 +01:00
Mathieu Duponchelle
3035bcb405 timeline: connect_after to layer.object_added.
We want the user provided signal handlers to be called before
we add track elements.
2014-11-10 16:22:41 +01:00
Mathieu Duponchelle
3f97397b4f nle: Downgrade some INFO to DEBUG.
+ makes it more pleasant to read logs in info.
2014-11-10 16:22:40 +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
c4f43c88f2 track-element: Add a signal about added control bindings
API:
  GESTrackElement::control-binding-added
2014-11-10 16:22:40 +01:00
Thibault Saunier
24e2c88180 track-element: Add an API to list all set ControlBinding
API:
    ges_track_element_get_all_control_bindings
2014-11-10 16:22:40 +01:00
Thibault Saunier
a022b4b394 title-source: Properly expose children properties
+ Make sure that the TitleClip properties are not serialized anymore as
  they are serialized through children properties now.

+ Enhance debugging for not serialized properties in GESXmlFormatter.
2014-11-10 16:22:40 +01:00