Commit graph

187 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