Commit graph

116 commits

Author SHA1 Message Date
Thibault Saunier
5a0393c54a ges: Namespace NLE utils function into GES
Avoiding name clashes when built statically
2015-09-18 10:01:44 +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
7be28b29b2 asset: Port use of deprecated GSimpleAsyncResult to GTask 2015-07-06 10:32:32 +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
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
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
Sebastian Dröge
f5a8c24077 ges: Hide more symbols of headers that are not installed 2015-06-25 10:28:41 +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
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
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
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
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
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
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
Joris Valette
84610050ae formatter: save and load source's children properties 2014-11-10 16:22:39 +01:00
Thibault Saunier
0d54d796de ges: Avoid to always commit when a project is loaded
In case we are not in a PLAYING state and the project is loaded, the
only thing that should be done is to fill the gaps and this way when the
composition get to PLAYING, their initialization will be enough to get
everything on track.
2014-10-31 11:58:12 +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
ea2b814fba ges: Use registry to select the compositor element 2014-07-23 16:11:30 +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
Lubosz Sarnecki
46c65aaaaf ges: multifilesrc support
* GESMultiFileSource class
* multifilesrc example
* Support multifile:// urls in uri asset
* start/stop index modification
* Doc

https://bugzilla.gnome.org/show_bug.cgi?id=719373
2014-03-19 18:32:48 +01:00
Thibault Saunier
d00283f309 track-element: Remove constructors for TrackElement from the API
Most of the time the user should not create GESTrackElements
himself, instead he should add a GESAsset to a layer, that will
result in a clip creation and the proper TrackElements to be
created and added to the tracks.

The case of effects and overlays is a bit different as the user should
create the TrackElement and add them to a clip.
2013-12-27 10:14:19 +01:00
Simon Corsin
7269c2b316 ges-track: Add the notion of resriction caps to GESTrack
This way we can let the user determine what he want to come out of the
track.

API:
  - ges_track_set_caps (The track caps are now construct only)
  + ges_track_set_restriction_caps
  + ges_track_get_restriction_caps
  + GESTrack.props.restriction_caps
2013-09-03 20:57:30 -04:00
Simon Corsin
e50a86d0d9 source: Make a ges_source_create_topbin internal helper method 2013-09-03 20:10:37 -04:00
Mathieu Duponchelle
cd8955c56f trackelement: split bindings correctly. 2013-08-22 18:36:40 -04:00
Mathieu Duponchelle
2226882a5c basexmlformatter: Only set timeline auto transitions when done loading. 2013-08-21 08:05:24 -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
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
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
71f877c611 internal: Add a macro to make it easier to get the end of a TimelineElement 2013-07-09 22:13:40 +02:00
Thibault Saunier
5a29cd0c88 internal: Fix typo in the header
ges_base_xml_formatter_add_control_bindingi was meant to be
ges_base_xml_formatter_add_control_binding
2013-07-09 10:57:51 -04:00
Mathieu Duponchelle
f1a3d65ef6 formatters: Save and load bindings applied to sources. 2013-07-08 19:32:09 -04:00
Thibault Saunier
58aba118a6 track-element: Set a reference to the GESTrackElement on the GnlObjects using qdata 2013-06-23 18:28:52 -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
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
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
229ec5f435 container: Replace ignore_notify by a GESChildrenControlMode flag 2013-03-23 03:26:33 -03:00
Thibault Saunier
7f1fbd2300 internal: Add a element_end_compare 2013-03-23 01:34:50 -03:00
Thibault Saunier
48b5903ef8 track-element: Make ges_track_element_set_track internal
Removed API:
  + ges_track_element_set_track
2013-03-21 22:12:47 -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
dd50427714 clip: Make set/is_moving_from_layer internal 2013-03-15 12:01:58 -03:00
Thibault Saunier
058f0d0099 clip: Reindent header and make ges_clip_set_layer internal 2013-03-15 11:58:59 -03:00
Thibault Saunier
795b8df1b6 Implement GESContainer
+ Fix unit tests
  + Minor enhancement in unit tests

API changes:
-----------
  * ges_track_element_get_clip     -> ges_timeline_element_get_parent
  * ges_clip_add_track_element     -> ges_container_add
  * ges_clip_release_track_element -> ges_container_remove
  * ges_clip_get_track_elements    -> ges_container_get_children
                                      (or GES_CONTAINER_CHILDREN)
2013-03-15 00:13:08 -03:00
Thibault Saunier
d69964fd2a Rename GESTrackObject to GESTrackElement 2013-02-15 14:42:05 -03:00
Thibault Saunier
04a3c49ebd Rename GESTimelineObject to GESClip 2013-02-15 14:42:02 -03:00
Thibault Saunier
f0359481c0 Add a GESTimelineElement base class
+ Port GESTrackObject and GESTimelineObject to the new baseclass
2013-02-15 14:42:02 -03:00
Thibault Saunier
1d397591af project: Handle assets that are being loaded
API:
    ges_project_get_loading_assets
2013-01-14 09:02:26 -03:00
Thibault Saunier
af326df8bd utilities: Make internal utilities instead of copy/pasting functions 2013-01-10 11:15:32 -03:00
Thibault Saunier
feb85a1456 Move LAYER_HEIGHT definition from -timeline-layer.c c to -internal.h 2013-01-10 11:11:31 -03:00
Thibault Saunier
1a06a2e63e internale: Add the G_GNUC_INTERNAL attribute to all internal methods 2012-12-29 19:36:51 -03:00
Thibault Saunier
774e14fff0 xml-formatter: Implement a GESXmlFormatter 2012-12-29 19:36:50 -03:00
Thibault Saunier
66abaa40d4 formatter: Make it work with GESProject
+ Compile new GESProject code

The formatter and projects should work together, and the user will in the end not need
the GESFormatter API in most cases. Start making that happening

Update the GESPitiviFormatter to the new behaviour and remove APIs that became
obselete

API:
 + Adds:

    * Pass the GESFormatterClass to can_load/save_uri vmethods
    * Add an @overwrite argumenent to ges_formatter_save_to_uri and the
      corresponding vmethod
    * Add name, description, extension, mimetype, version, rank metadatas
      to GESFormatterClass

 + Removes:

    * ges_pitivi_formatter_set_sources:
    * ges_pitivi_formatter_get_sources:
2012-12-19 18:59:50 -03:00
Thibault Saunier
49867a95fc project: Implement GESProject
Do not build yet, waiting for everythnig to be in place before doing so

Co-Authored-By: Volodymyr Rudyi <vladimir.rudoy@gmail.com>
2012-12-19 18:59:49 -03:00
Volodymyr Rudyi
107b4ad0c6 ges: Implement GESAssetFileSource
+ Generate the documentation
	+ Make the new Asset infrastructure compile

Co-Authored-By: Thibault Saunier <thibault.saunier@collabora.com>
2012-12-19 18:59:47 -03:00
Thibault Saunier
f4858a97f7 ges: Implement the GESExtractable interface
+ Generate the documentation

Note: Do not compile (add to Makefile.am) for now as we are missing pieces at that point

Co-Authored-By: Volodymyr Rudyi <vladimir.rudoy@gmail.com>
2012-12-19 11:45:38 -03:00
Volodymyr Rudyi
55ddfebb64 ges: Implement GESAsset
+ Generate the documentation

Note: Do not compile (add to Makefile.am) for now as we are missing pieces at that point

Co-Authored-By: Thibault Saunier <thibault.saunier@collabora.com>
2012-12-19 11:45:38 -03:00
Tim-Philipp Müller
426fffb6c3 Fix FSF address 2012-11-04 00:25:20 +00:00
Thibault Saunier
6735e877b3 trackobject: Add the copy method to the API
Add documentation and plug a leak at the same time.

API: ges_track_object_copy
2012-04-23 22:03:11 -04:00
Thibault Saunier
2fd5364927 ges: Add a timeline edition mode API
+ timeline: Add a snapping-distance property
        + Bump the GLib dependency to 2.28 in the mean time as we need some functions from GSequence that only landed
	+ Update the testsuite accordingly

    API: GESTimeline:snapping-distance property
    API: ges_timeline_object_edit
    API: ges_timeline_object_ripple
    API: ges_timeline_object_ripple_end
    API: ges_timeline_object_roll_start
    API: ges_timeline_object_roll_end
    API: ges_timeline_object_trim_start
    API: ges_track_object_edit
    API: GESEdge enum
    API: GESEditMode enum
2012-04-23 22:03:11 -04:00
Thibault Saunier
efc28fd35e track-object: Add method to copy a TrackObject
API: ges_track_object_copy
2012-04-23 20:25:08 -04:00
Sebastian Dröge
8dff71aa08 ges: Don't install ges-internal.h and hide the GES debug category symbols
Fixes bug #639219.
2011-01-11 18:02:33 +01:00
Edward Hervey
dd9d3e420c ges/: Fix copyright in headers 2009-11-30 15:14:25 +01:00
Edward Hervey
12777c8532 Add unit test system. Adjust GST_DEBUG usage. 2009-08-06 19:51:29 +02:00