Commit graph

237 commits

Author SHA1 Message Date
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
0888e5e25b Rename object/tobj/trobj to clip or track_element as necessary
Not really complete but it is a good start!
2013-02-15 16:26:30 -03:00
Thibault Saunier
7f3c952737 Finish renaming tck_obj and derivate to track_element 2013-02-15 15:23:16 -03:00
Thibault Saunier
d21791a8d0 Rename GESTimelineLayer.xxx_object to GESTimelineLayer.xxx_clip 2013-02-15 15:23:15 -03:00
Thibault Saunier
ec1db99266 track: Rename all GESTrack.xxx_object to GESTrack.xxx_element 2013-02-15 15:23:15 -03:00
Thibault Saunier
fc8f06eedb Properly rename object-added to clip-added 2013-02-15 15:23:15 -03:00
Thibault Saunier
4ddcfb642d Finish renaming timeline object to clip 2013-02-15 15:23:15 -03:00
Thibault Saunier
b4e1131b70 Finish renaming track object to track element 2013-02-15 15:23:15 -03:00
Thibault Saunier
3f97a05c11 Rename GESTrackTransition to GESTransition 2013-02-15 14:42:06 -03:00
Thibault Saunier
6363d0fdad Rename GESTrackSource to GESSource 2013-02-15 14:42:06 -03:00
Thibault Saunier
d69964fd2a Rename GESTrackObject to GESTrackElement 2013-02-15 14:42:05 -03:00
Thibault Saunier
6f4315b75d Rename GESStandardTransitionClip to GESTransitionClip 2013-02-15 14:42:04 -03:00
Thibault Saunier
d7693b4014 Rename GESTimelineStandardTransition to GESStandardTransitionClip 2013-02-15 14:42:03 -03:00
Thibault Saunier
b73cf7c3d7 Rename GESTimelineTransition to GESTransitionClip 2013-02-15 14:42:03 -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
02652902f5 Reimplement the auto-transition feature
+ Actually implement unit tests
2013-01-10 18:53:15 -03:00
Thibault Saunier
9791fc541b timeline: Minor refactoring 2013-01-10 18:01:33 -03:00
Thibault Saunier
eeef1548b3 timeline: Avoid recreating the moving_tlobjs when unecessary 2013-01-10 13:32:15 -03:00
Thibault Saunier
8888a3a698 Misc debug message enhancements 2013-01-10 12:46:33 -03:00
Thibault Saunier
92a67092d5 timeline: Keep track of whether updates are enabled or not
Check if we want to track Track-s enable status and update our status according
to that
2013-01-10 12:46:33 -03:00
Thibault Saunier
7f10881dd2 timeline: Track TrackObject-s by layer 2013-01-10 11:50:02 -03:00
Thibault Saunier
af326df8bd utilities: Make internal utilities instead of copy/pasting functions 2013-01-10 11:15:32 -03:00
Thibault Saunier
1b8126d349 timeline: Remove dead macros 2013-01-10 11:11:30 -03:00
Thibault Saunier
31e1ea3840 timeline: Use g_sequence_sort_changed when appropriate 2013-01-10 11:11:28 -03:00
Thibault Saunier
cf93469fa5 Misc nitpick fixing 2012-12-30 23:12:28 -03:00
Thibault Saunier
c5ad871d1c Implement a GESAssetTrackObject class
+ Addapt the rest of the code to make use of it
2012-12-29 19:38:12 -03:00
Sebastian Dröge
bc0f335734 Allow applications to select to which track a track object should be added
Modifies some  API:
    ges_timeline_object_create_track_objects now take a GESTrackType instead of a
        GESTrack as second argument, and return a GList instead of a boolean
    ges_timeline_object_create_track_object now take a GESTrackType instead of a
        GESTrack as second argument
2012-12-29 19:36:52 -03:00
Thibault Saunier
2b4c4cfc0c timeline: Properly popullate the tracks field with GESTrack-s
+ add priv_tracks private field that contained TrackPrivate structures

We now have 2 list containing our tracks, one with TrackPrivate structures, and one the
GESTrack-s themselves.
2012-12-29 19:36:52 -03:00
Thibault Saunier
5a56aef7c0 Misc documentation fixing 2012-12-29 19:36:52 -03:00
Thibault Saunier
45c7f609da timeline: Make use of the Project API for timeline saving
API:
    *  Add a formatter_type paramatter to ges_timeline_save_to_uri
2012-12-29 19:36:50 -03:00
Thibault Saunier
8ff97af65d timeline: Implement the GESMetaContainerInterface 2012-12-19 18:59:51 -03:00
Thibault Saunier
dbab748bfc timeline: Implement the GESExtractable interface 2012-12-19 18:59:50 -03:00
Thibault Saunier
543ab28228 timeline: Make timeline->track and timeline->layers public fields 2012-12-19 18:59:50 -03:00
Thibault Saunier
a7280fb59d ges: Implement the ges_timeline_layer_add_asset method
+ Remove GstDiscoverer related code in GESTimeline as we do not need it anymore
  + Refactor the ges_timeline_layer_add_object method to make sure it is still working as intended

API:
  ges_timeline_layer_add_asset
2012-12-19 18:59:48 -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
346b04ecb4 timeline: Keep track of GSequenceIter for each GESTrackObject
This way we do not have to look for them in the sequence itself, and
make things simpler
2012-12-19 11:45:37 -03:00
Tim-Philipp Müller
426fffb6c3 Fix FSF address 2012-11-04 00:25:20 +00:00
Thibault Saunier
52edf1704d formatter: Add GError everywhere needed in the API
We should give as much information as possible to the user when serialization/deserialization doesn't work.
2012-09-23 02:37:12 +02:00
Thibault Saunier
933d41f15d timeline: Plug a leak in the movecontext code 2012-09-23 02:37:12 +02:00
Thibault Saunier
37e6cb43cf Misc documentation fixing 2012-08-18 15:32:54 -04:00
Thibault Saunier
f32fdf13b7 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	bindings/python/ges.defs
	ges/ges-screenshot.c
	ges/ges-track-video-transition.c
2012-05-26 17:00:50 -04:00
Thibault Saunier
7012280e48 timeline: Do not use meaningless offset values when snapping 2012-05-21 19:39:10 -04:00
Thibault Saunier
861a06e7ce timeline: Move all callbacks to the callback section of the file 2012-05-19 13:57:36 -04:00
Thibault Saunier
c199c24507 timeline: Make the update property a GObject property
API: timeline::update property
2012-05-19 13:57:36 -04:00
Thibault Saunier
4c79afcbe4 timeline: Try to resnap at same snapping point before calculating new value 2012-05-19 13:57:36 -04:00
Thibault Saunier
9913d48e5c timeline: Avoid to recalculate the moving context unecessarly 2012-05-19 13:57:35 -04:00
Thibault Saunier
5a29478c2d timeline: Create a debug logging category for the timeline 2012-05-19 13:57:35 -04:00
Thibault Saunier
4c28e59046 timeline: Properly set TimelineFileSource-s duration and max duration
When we get the information of duration of files after discoverying them,
use that information to set the values on the TimelineFileSource-s
2012-05-19 13:57:35 -04:00
Thibault Saunier
1e3e7c5276 docs: Misc documentation fixing 2012-05-19 13:57:35 -04:00
Thibault Saunier
171bf8e627 timeline: Make use of our own knowledge of the timeline duration
Do not use each Track durations as it end going in loop as we have the Tracks
that need to know about timeline's duration to create or not gaps in the end and
then the timeline references on Tracks duration for its duration. We have this
information locally so just make proper use of it.
2012-05-19 13:40:00 -04:00
Thibault Saunier
ce8afba367 timeline: Add a method to get the timeline duration
+ Bind it in python

API: ges_timeline_get_duration
2012-05-19 13:39:45 -04:00
Thibault Saunier
406bc5fe28 Merge remote-tracking branch 'origin/0.10' 2012-05-10 14:56:34 -04:00
Thibault Saunier
20e7d4349c timeline: Avoid segfault when debug logging 2012-05-08 19:43:51 -04:00
Thibault Saunier
2e52fe15f0 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	bindings/python/ges.defs
	ges/ges-track-video-transition.c
2012-05-05 13:02:20 -04:00
Thibault Saunier
7a7690a9e0 Do no check if GLib >2.26 as we depend on GLib 2.28 2012-05-02 23:56:35 -04: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
28d73a4441 timeline: Rework snapping signaling so it is easier to use
API: GESTimeline::snap-started signal
API: GESTimeline::snap-ended signal

(This code has not been released so we can still change the API)
2012-04-25 16:13:44 -04:00
Thibault Saunier
91b55adec2 timeline: Minor documentations fixes 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
4be360c4e5 Port to the new GMutex API 2012-04-20 14:18:34 -04:00
Thibault Saunier
672a162062 Merge branch '0.10'
Conflicts:
	bindings/python/ges.defs
2012-04-07 22:31:23 -04:00
Thibault Saunier
ad5bc85516 ges: Calm logging when not created TrackObject on purpose 2012-04-07 22:24:55 -04:00
Thibault Saunier
979b9ac0b6 timeline: Restructurate the file separting methods/callbacks/API 2012-04-07 22:24:55 -04:00
Thibault Saunier
4b34d2bbb3 timeline: Plug a leak when calling enable_update 2012-04-07 22:24:55 -04:00
Thibault Saunier
7e7059d37d timeline: Rework the append_layer method
ges_timeline_append_layer now creates a new layer, adds it to the timeline
and returns it

This code has not been released yet so we can break this API.
2012-04-07 22:24:55 -04:00
Thibault Saunier
1728704d09 Merge branch '0.10'
Conflicts:
	bindings/python/ges.defs
2012-03-29 12:55:44 -04:00
Thibault Saunier
d5b4fa215e ges: Add a way to know whether a timeline is updating on each changes
+ Bind the new API in python

API: ges_timeline_is_updating
API: ges_track_is_updating
2012-03-27 22:33:57 -04:00
Tim-Philipp Müller
1f37aefdcd Remove ges-marshal.[ch] and use the generic marshaller 2012-03-12 15:46:42 +00:00
Tim-Philipp Müller
5d02075d9b Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	bindings/python/Makefile.am
	bindings/python/ges-types.defs
	bindings/python/ges.defs
	bindings/python/ges.override
	bindings/python/gesmodule.c
	bindings/python/testsuite/test_textoverlay.py
2012-03-12 15:25:49 +00:00
Mark Nauwelaerts
2162c635e2 ges: support and handle no-more-pads in GESTimeline(Pipeline)
... to arrange for a clean READY to PAUSED state change transition.
Not doing so might have playsink reaching PAUSED prematurely
as one track prerolls, only to lose this state again (temporarily)
when the other track needs to preroll.

This is generally not nice or convenient, and particularly nasty
when trying to perform seek in PAUSED.
2012-01-30 11:35:13 +01:00
Edward Hervey
ee237ec523 ges: Various doc fixups and cleanups 2012-01-12 16:34:57 +01:00
Thibault Saunier
b844ff04de ges: Add a "discovery-error" signal to GESTimeline
API: GESTimeline::discovery-error signal
2012-01-11 11:56:17 -03:00
Mathieu Duponchelle
93046aad6b GES : remove transitions when needed
Conflicts:

	ges/ges-timeline.c
2012-01-11 11:56:17 -03:00
Thibault Saunier
4acc711e52 ges: Add a maxduration property to TrackFileSource
API: GESTrackFileSource::maxduration property
2012-01-11 11:56:17 -03:00
Thibault Saunier
bc8c709303 ges: Some debug logging enhancements 2012-01-11 11:56:16 -03:00
Thibault Saunier
ffd196d06a ges: Add a duration property to GESTimeline
API: GESTimeline:duration property
2012-01-11 11:56:16 -03:00
Thibault Saunier
5d35024cd3 docs: Update documentation 2012-01-11 11:56:16 -03:00
Mathieu Duponchelle
31688a9354 ges: don't reset the supported formats in the timeline when they're already set
My mom never told me goto was evil
2012-01-11 11:56:15 -03:00
Mathieu Duponchelle
2c4d614cb1 ges: adds an enable_update function to the GESTimeline
Binds it in python

API: ges_timeline_enable_update
2012-01-11 11:56:15 -03:00
Thibault Saunier
8d15025aae ges: Add a ges_timeline_append_layer convenience method
API: ges_timeline_append_layer
2012-01-11 11:56:14 -03:00
Thibault Saunier
6e1a482a80 ges: add a function to move TimelineObject from a layer to another
API: ges_timeline_object_move_to_layer
API: ges_timeline_object_is_moving_from_layer
API: ges_timeline_object_set_moving_from_layer
2012-01-11 11:56:14 -03:00
Thibault Saunier
2bbcbab174 ges: Keep layers sorted by priorities in the timeline 2012-01-11 11:56:14 -03:00
Robert Swain
e288a6f460 timeline: simplify code to remove an object from the pendingobjects list
g_list_remove_all () can be used as a simplification as the private data to ges
timeline object are 1:1.
2012-01-06 09:16:09 -03:00
Robert Swain
fc97c16e7e GESTimeline: Lock object discovery list
TimelineFileSource objects are asynchronously discovered with discoverer
with such objects being added to a pendingobjects list. If one were to
remove a layer before an object in said layer had been discovered, a
segfault could occur.

As such, management of the list has been made more robust with the
addition of a mutex and removal of the object from the pendingobjects
list upon layer removal.
2012-01-05 09:01:20 -03:00
Edward Hervey
7cdd9694ff ges: Port to 0.11 API 2011-10-11 09:51:35 +02:00
Edward Hervey
904aabe653 ges: Use %NULL instead of #NULL
Reported by Stefan Kost:
"% is for constants, # is for objects/structs/types, @ is for parameters."
2011-05-09 14:24:26 +02:00
Vincent Penquerc'h
a35a29a810 ges: make uri strings const 2011-03-01 17:29:09 +01:00
Sebastian Dröge
818368ffcf ges: Mark some private symbols static
https://bugzilla.gnome.org/show_bug.cgi?id=639218
2011-01-11 17:55:33 +01:00
Thibault Saunier
dc6290a5e2 docs: Document all the undocumented public functions 2011-01-10 15:14:45 +01:00
Edward Hervey
9f26d1a14e Timeline: Fix documentation of return value 2011-01-10 11:12:38 +01:00
Thibault Saunier
98b51d8cd1 TimelineFileSource: Create instance private and move private variables to it
Fixe/Add getter and setters methods for those variables

Fixup documentation
2011-01-08 22:45:44 +01:00
Thibault Saunier
3d6764d6e9 Timeline: Add instance private and Move private variables to it
Fixe/Add getter methods to get those variables

Fixup documentation
2011-01-08 22:45:44 +01:00
Edward Hervey
785c9d9253 GESTimeline: minor cleanup 2010-12-20 12:03:48 +01:00
Edward Hervey
11887e0058 GESTimelineLayer: Subclass from GInitiallyUnowned
The floating reference will be owned by the Timeline
2010-12-20 12:03:48 +01:00
Edward Hervey
8ca6f66f4c GESTrackObject: Hide more variables and provide accessors for them 2010-12-16 15:00:46 +01:00
Edward Hervey
4028baaa5b GESTimeline: Remove useless variable 2010-12-16 12:46:48 +01:00
Edward Hervey
3eadc4aa31 ges: Add more documentation and annotations
This should make GES gobject-introspection compliant now.
2010-12-15 19:40:11 +01:00
Edward Hervey
faec1e803d docs: A round of updates 2010-12-08 15:36:55 +01:00
Thibault Saunier
dfeb7afe85 GESTimelineObject: add private structure 2010-12-08 13:00:21 +01:00
Edward Hervey
2ff3d8ce12 Timeline: Add doc and more comments/fixmes 2010-11-27 18:12:49 +01:00
Brandon Lewis
33bc336a11 GESTimeline: add more fixmes 2010-11-27 18:08:20 +01:00
Brandon Lewis
27481c3c26 GESTimeline: implementation of save_to/load_from uri 2010-11-27 18:08:19 +01:00
Brandon Lewis
abce2912b8 GESTimeline: set track state to NULL before removing from timeline 2010-11-27 17:55:50 +01:00
Brandon Lewis
f521d31b40 GESTimeline: release timeline objects when a layer is removed 2010-11-27 17:55:49 +01:00
Brandon Lewis
9848c33e40 GESTimeline: allow adding tracks after layers 2010-11-27 17:23:23 +01:00
Brandon Lewis
170ec1e7ab GESTimeline: add existing timeline objects when adding layers 2010-11-27 17:16:36 +01:00
Brandon Lewis
d2b2ac0d51 GESTimeline: remove layers before removing tracks in dispose () 2010-11-27 17:13:39 +01:00
Edward Hervey
da806759d1 Timeline: Remove unneeded variable 2010-11-25 14:02:26 +01:00
Edward Hervey
9718bf1f1f GESTimeline: Change for updated GstDiscoverer API 2010-11-04 12:28:46 +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
Edward Hervey
a02a5c2320 Update for factorylist/convertframe being merged to gst core/base 2010-09-16 08:39:46 +02:00
Edward Hervey
d76535bc59 Update to moved gst-convenience 2010-09-16 08:39:01 +02:00
Brandon Lewis
cd7cefffa6 add create_track_objects 2010-09-01 16:56:01 +02:00
Brandon Lewis
d6d7eb8398 call create_track_objects in timeline.c 2010-09-01 16:56:01 +02:00
Brandon Lewis
c9eba54506 always support audio on still images 2010-08-13 11:50:31 +02:00
Brandon Lewis
598d883d53 don't set max duration on still images 2010-08-13 11:50:31 +02:00
Brandon Lewis
56c26dd853 set 'is-image' property true when source has an image stream type 2010-08-13 11:50:30 +02:00
Edward Hervey
9eedf06b7b GESTimeline: Remove all tracks/layers when being disposed 2010-06-09 13:52:35 +02:00
Brandon Lewis
93534c0500 Add missing documentation 2010-06-09 11:28:09 +02:00
Edward Hervey
8193fe5b4c GESTimeline: Freeze state of Tracks when doing an async state change 2010-05-25 16:36:57 +02:00
Edward Hervey
ed86ff2f51 GESTimeline: Remove unused variable 2010-05-19 15:50:41 +02:00
Edward Hervey
1bb45a61a6 GESTimeline: Use GstDiscoverer for incomplete filesources
If a GESTimelineFileSource is added to a layer and:
* It doesn't have specified supported formats
* OR it doesn't have a specified maximum duration
* OR it doesn't have a specifed duration

Then we asynchronously send it to the GstDiscoverer.

If this happens, the state change of the timeline from READY to
PAUSED will happen asynchronously and be completed when everything
has been properly discovered.

Part 2 of GstDiscoverer integration
2010-05-19 12:36:11 +02:00
Mark Nauwelaerts
10be8697df GESTimeLine(PipeLine): remove additional unref 2010-04-20 13:47:07 +02:00
Edward Hervey
c3741374da GESTimeline: New method ges_timeline_get_tracks 2010-04-20 13:47:03 +02:00
Edward Hervey
dafe3d2bb4 GESTimeline: Properly iterate TrackObject lists when removing them 2010-03-13 15:56:57 +01:00
Edward Hervey
dd9d3e420c ges/: Fix copyright in headers 2009-11-30 15:14:25 +01:00
Edward Hervey
b54487fe11 Finish public API documentation 2009-09-16 12:37:45 +02:00
Edward Hervey
8c340412cd GESTimeline: Fix reference counting of tracks, add docs. 2009-09-14 19:48:05 +02:00
Edward Hervey
dff4e20cb5 More documentation. Coverage now at 25% 2009-09-10 18:44:16 +02:00
Edward Hervey
29751a7d27 GESTimeline: Make sure added ghostpads are unique. 2009-09-09 15:51:52 +02:00
Edward Hervey
416323c649 GESTimeline: Track internal pads and tracks in sync.
Add method to get the Track associated to a ghostpad.
2009-09-08 19:44:03 +02:00
Edward Hervey
9f4f14722d Timeline: Implement remove_track, remove_layer, and _layer_object_removed_cb 2009-08-07 16:41:23 +02:00
Edward Hervey
fa56e7f0cb ges: Remove unused private structures. We'll re-add on a per-case basis. 2009-08-06 19:59:25 +02:00
Edward Hervey
12777c8532 Add unit test system. Adjust GST_DEBUG usage. 2009-08-06 19:51:29 +02:00
Edward Hervey
c4649938fd intermediary commit. Still need to fill in more blanks :( 2009-08-06 17:38:43 +02:00
Edward Hervey
081f4805ef src/ => ges/ 2009-08-06 11:24:04 +02:00
Renamed from src/ges-timeline.c (Browse further)